
發布
注冊
/
登錄tk的案例
Tcl/Tk與APDL聯合編程實現ANSYS的二次開發
Tcl/Tk與APDL的通信主要依靠三個ANSYS API函數實現,分別是:
ans_sendcommand:向ANSYS傳遞APDL命令;
ans_getvalue:從ANSYS數據庫中獲取變量;
ans_getvector:從ANSYS數據庫中獲取向量。
TK命令,CAD臨時追蹤命令怎么用
前面我們分享了CAD tt命令怎么用,他可以創建無數個虛點來進行輔助定位,今天我們介紹一個新命令,tk,臨時追蹤,他可以水平或垂直無限的指定長度追蹤下去。
比如下面這個圖,如何一個TK定位那個圓。
圓心的定位,重點不在這圖,在TK用法,學會了以后靈活運用非常方便。
步驟:
1、很顯然200x100的長方形;
2、輸入圓命令C回車;
3、接著輸入TK回車;
4、提示指定第一個追蹤點,這時指定右下角一點;
5、這時提示下一點,我們可以看到光標只可以往一個方向移動,如圖所示是Y方向,如果我們需要切換方向,需要將光標移動到第一點處,再重新往X方向拉即可;
6、接著我們只需要輸入圓心相對于第一點的位置即可。
如圖,首先是X,輸入50回車;
7、向上y方向輸入20回車;
8、這時仍然提示下一點,我們之間回車確定;
9、輸入圓的半徑即可;
完。
文章來源:周站長cad
展開 UIDL-Tcl/Tk-APDL聯合編程實現ANSYS二次開發(終極篇)
Tk則是基于Tcl的圖形界面開發工具箱,與UIDL相比,更能夠觸及深層,因此更加靈活,開發的界面受限更少。Tcl/Tk在用于圖形化界面開發的時候比較好用,界面開發較為靈活,除了上面的這種簡單界面的開發,也能夠開發比較系統全面的界面,結合Tcl語言本身就能夠完成很多的工作,對于參數化過程非常方便。
python小程序,提取路徑下所有excel表中數據,輸入界面是基于TK語言編寫的
from tkinter import Tk, Button, filedialog, Label, Entry
# 創建主窗口
window = Tk()
##################################### 創建3個靜態文本框和輸入框定義矩陣規模和數量
label1 = Label(window, text="矩陣行數")
label1.grid(row=0, column=0)
entry1 = Entry(window)
entry1.grid(row=0, column=1)
label2 = Label(window, text="矩陣列數")
label2.grid(row=1, column=0)
entry2 = Entry(window)
entry2.grid(row=1, column=1)
label3 = Label(window, text="矩陣數量")
label3.grid(row=2, column=0)
entry3 = Entry(window)
entry3.grid(row=2, column=1)
label4 = Label(window, text="載荷類型_表格sheet關鍵詞")
label4.grid(row=0, column=2)
entry4 = Entry(window)
entry4.grid(row=0, column=3)
###########################################定義矩陣初始化子函數,根據靜態文本框數據生成一定數量一定格式的矩陣
def martrix_gen():
entry1.delete(0, 'end') # 設置缺省值128
entry1.insert('end', 128)
entry2.delete
展開 
Tcl/Tk與APDL聯合編程參數化建模螺旋結構
結合Tcl/Tk和ANSYS的APDL參數化語言編寫螺旋結構的參數化建模程序,程序完成后即可在ANSYS中運行,運行后會彈出編寫好的界面,通過設置其中的幾個參數即可實現一鍵參數化建模與分網。
編寫好的界面如下所示,可以對比界面中的示意圖設置其中的幾個尺寸,包括螺旋半徑R,螺距H,圈數N和螺紋的半徑Rr,設置完后點擊Creat即可快速創建模型。
Tcl/Tk開發HyperWork目錄樹結構
Tcl/Tk開發HyperWork目錄樹
HyperWork的二次開發主要是HyperMesh(前處理)和HyperView(后處理的開發),用到的語言是Tcl/Tk和大量的API函數,HyperMesh和HyperView的二次開發形式多樣,在HyperMesh里面比較簡單的是利用宏文件開發按鈕,然后利用按鈕實現一系列的功能,當然雖然只是簡單的按鈕,卻也可以實現很強大的功能,甚至是整個完整的分析過程。還有一種是利用Process Studio開發流程樹。
除了自帶的這個開發工具,Tk本身也可以直接開發具有目錄樹結構的系統,主要用到treeview組件,下面就以一個簡單的例子實現這個功能。
展開 tkinter的控件Label(python GUI )
',foreground='red')
label.pack()
win.mainloop()
03 width和height的使用
from tkinter import *
win=Tk()
win.title('leslie-wj')
win.geometry('500x200')
label=Label(win,text='I love you',background='yellow',foreground='red',
width=20,height=10)
label.pack()
win.mainloop()
04 padx和pady的使用
from tkinter import *
win=Tk()
win.title('leslie-wj')
win.geometry('500x200')
label=Label(win,text='I love you',background='yellow',foreground='red',
padx=50,pady=30)
label.pack()
win.mainloop()
05 font的使用
from tkinter import *
win=Tk()
win.title('leslie-wj')
win.geometry('500x200')
label=Label(win,text='I love you',background='yellow',foreground='red',
padx=50,pady=30,
font='Times 40 bold')
label.pack()
win.mainloop()
06 relief
展開 Fidelity Pointwise 中用于 Python 的 Glyph API
Tcl/Tk: package require PWI_Glyph 2 # 建立 'pw' 命名空間
Python: glf = GlyphClient(port=0)
pw = glf.get_glyphapi()
2. Glyph 類名對于 Python 和 Tcl 都是區分大小寫的,因此名稱必須完全匹配。
3. 所有字形類都是頂級(“pw”)對象的有效屬性。
Tcl/Tk:pw::Application
Python:pw.Application
4. 任何公開靜態“創建”操作的 Glyph 類都可以使用語法“pw.GlyphClassName()”直接實例化。如果 create 操作接受參數,它們可以像任何其他參數一樣傳遞(參見規則 8)。
Tcl/Tk:設置 con [pw::Connector 創建]
Python:con = pw.Connector()
5. 所有靜態 Glyph 類操作都在等效的 Python/Glyph 對象上調用。
Tcl/Tk:pw::Application getVersion
Python:pw.Application.getVersion()
6. 返回 Glyph 對象的 Glyph 動作被包裝在 GlyphObject 的實例中,該實例以與關聯的 Glyph 對象一致的方式起作用。在此對象上只能調用實例操作,并且沒有隱式充當“setter/getter”方法(常見的 Python 習慣用法)的屬性。
7. Python/Glyph 對象上的實例方法被轉換為 Glyph 實例操作。
Tcl/Tk:設置昏暗 [$con getDimension]
Python dim = con.getDimension()
8.
展開 國內外加氫裂化催化劑技術發展
TK-943,TK-933,TK-926主要用于最大量生產柴油,其中TK-933,TK-943用于最大量生產中間餾分油,具有氫耗低、適當加氫裂化活性的特點,與其它催化劑相比,柴油產品的濁點降低了10~20℃;TK-926采用調變載體酸性來提高催化劑的異構化活性,從而提高產品的流動性。TK-951,TK-947,TK-931,TK-925主要用于最大量生產中間餾分油,其中TK-951可以在較低的氫耗下最大量生產中間餾分油;TK-925主要用于最大量生產高質量的柴油;TK-931具有適宜的中間餾分油收率,可以用于生產高質量的優質柴油、噴氣燃料、潤滑油等燃料油。
國內加氫裂化催化劑技術
01
FRIPP
FRIPP針對國內能源資源的特點,聚焦于重油清潔高效轉化,先后開發了高壓加氫裂化、中壓加氫裂化、緩和加氫裂化、中壓加氫改質、加氫尾油異構脫蠟、柴油臨氫降凝、劣質催化柴油加氫等工藝技術及配套催化劑技術,成功地進行了200套(次)國內外工業應用。
FRIPP現已開發了50多個牌號品類齊全的加氫裂化催化劑體系,是國內加氫裂化技術的主要專利商,在國內市場份額占60%以上。FRIPP通過開發新的催化劑材料和創新性制備技術,完成了第五代高活性加氫裂化催化劑的創制及推廣,主要包括FC-70催化柴油轉化催化劑、FC-52輕油型催化劑、FC-76靈活型催化劑、FC-60高中油型催化劑及FC-80生產高黏度指數加氫尾油的催化劑。圖6列出了FRIPP開發的系列加氫裂化催化劑。
展開 TCL語言入門文檔推薦
內嵌的Tk( toolkit )圖形工具可以提供簡單而又豐富的圖形功能,讓用戶可以輕松的創建簡單的圖形界面。
Tcl 的執行是交互式的, Tcl 提供了交互式命令界面,界面有兩種: tclsh 和wish 。tclsh 只支持Tcl 命令, wish 支持Tcl 和Tk 命令。通過交互界面,我們就可以象執行UNIX shell 命令一樣,逐條命令執行,并即時得到執行結果。
Tcl/Tk 可以提供跨平臺的支持。Tcl 語言可以運行于絕大多數當今流行的UNIX、WINDOWS和Macintosh 等系統上,而且命令通用,只是啟動的細節有些不同。
Tcl/Tk 與C/C++ 的良好兼容性。Tcl/Tk 腳本可以很好的集成到C/C++ 程序中。
推薦一本基礎全面的TCL語言入門的文檔,和一個快速入門文檔。
TCL語言入門 — OpenSees 1.0.pdf
Tcl快速入門.pdf
展開 tkinter的控件Button(python GUI )
*
win=Tk()
win.title('leslie_wj')
win.geometry('500x300')
b1=Button(win,text='click me',foreground='yellow',background='red',
padx=20,pady=30)
b1.pack()
win.mainloop()
03 cursor 和 relief 的用法
from tkinter import *
win=Tk()
win.title('leslie_wj')
win.geometry('500x300')
b1=Button(win,text='click me',foreground='yellow',background='red',
padx=20,pady=30,
cursor='hand2',relief='solid')
b1.pack()
win.mainloop()
04 bitmap 和 compound 的用法
rom tkinter import *
win=Tk()
win.title('leslie_wj')
win.geometry('500x300')
b1=Button(win,text='click me',foreground='green',background='yellow',
padx=20,pady=30,
bitmap='hourglass',compound='left')
b1.pack()
win.mainloop()
05 command 的用法
from tkinter import *
win=Tk()
展開 
tkinter的控件定位(位置和容器)
win=Tk()
win.title('leslie_wj')
win.geometry('500x200')
f1=LabelFrame(win,background='yellow',text='wjwj')
f1.pack()
b2=Label(f1,text='bb',background='green')
b2.pack(padx=50,pady=10)
b3=Label(f1,text='cc',background='blue')
b3.pack(anchor='nw')
win.mainloop()
05 Toplevel的使用
展開 ANSYS界面定制初步
筆者所知的,ANSYS支持的二次開發語言有四種:APDL,UPFs,UIDL,Tcl/TK。其中APDL筆者就不介紹了;UPFs一般用于用戶子程序的開發,比如用戶可以自己創建單元類型、材料模型、以及各種底層的功能,事實上這就對開發者的理論水平要求較高,非一般用戶可以企及的;UIDL和Tcl/TK的作用都是定制用戶界面,其中UIDL比較簡單,相應功能也較少;Tcl/TK是指Tcl語言的TK庫,非常適用于用戶界面的定制,但需要較多學習才能掌握。本文的界面定制只涉及UIDL。
筆者自己做了個一個例子,紅色框內是筆者創建的:
那么這是如何實現的呢?
第一步:需要用APDL編輯四個mac(宏文件)
第二步:需要修改ansys的start.ans文件
第三步:如果我們修改了mac文件,需要更新功能。
運行這幾個按鈕的效果:
01 單擊PAR1按鈕,參數可以自由修改。
02 單擊PAR2按鈕,參數可以自由修改。
03 單擊PAR3按鈕,參數可以自由修改。
04 單擊FREQ按鈕,根據之前的參數設定,進行有效的分析。
以上例子的整個運行過程就是:筆者需要分析一個系統,先要定義整個系統的相關參數,最后再計算這個系統的相關結果,并且把需要的結果自動載入TXT文件中。
ansysmac.zip
展開 tkinter的控件Entry(python GUI )
00 Entry-文本框
from tkinter import *
win=Tk()
win.title('leslie-wj')
win.geometry('500x200')
name=Label(win,text='Name')
password=Label(win,text='Password')
name.grid(row=0,column=0)
password.grid(row=1,column=0)
nameE=Entry(win)
passwordE=Entry(win)
nameE.grid(row=0,column=1)
passwordE.grid(row=1,column=1)
win.mainloop()
01 background和foreground的用法
from tkinter import *
win=Tk()
win.title('leslie-wj')
win.geometry('500x200')
name=Label(win,text='Name')
password=Label(win,text='Password')
name.grid(row=0,column=0)
password.grid(row=1,column=0)
nameE=Entry(win,background='yellow')
passwordE=Entry(win,foreground='red')
nameE.grid(row=0,column=1)
passwordE.grid(row=1,column=1)
win.mainloop()
02 show的使用
from tkinter import *
win=Tk()
win.title('leslie-wj')
win.geometry
展開 扭振,轉速脈沖和混疊
如果兩個連續脈沖對應的時間周期是TK秒,角度變化為360/N度,那么轉速簡單地通過360/(N*TK)度/秒或者60/(N*TK)RPM來估算。
上述表達式沒有給出實際的轉速,因為測量時間周期有誤差。如果存在扭振,那么這些測量誤差將會包含進來。兩個連續的脈沖對應的時間周期測量值為TK,由以下部分組成
TK =Ts +Tv +Te
Ts是平均轉速對應的時間周期,Tv是扭振對應的周期,Te是測量誤差。
圖1為典型轉速脈沖序列的一小部分,測量的是轉速上升時飛輪的轉速,每轉113個脈沖。通過處理可得到角度隨時間變化的曲線,如圖2所示。也可以得到角速度隨時間的變化曲線,如圖3所示。在這個例子中角速度的幅值小于轉速的2%。
圖1
圖2
圖3
偶爾,如果由角速度轉化到角度處理不正確,那么可能會得到如圖4所示的曲線。圖4的形狀顯然不正確,量級主要的變化來自于局部平均量級分量。
在進一步處理之前,讓我們提醒一下我們自己,有關時域混疊。時域采樣時,如果我們以S樣本點/S進行采樣,我們知道任何高于S/2 Hz的頻率成分都會存在混疊,最終映射到0- S/2 Hz頻帶內。假設采樣率為1000樣本點/秒,混疊頻率是500Hz。因此,在700Hz處的任何能量成分都會關于500Hz映射成300Hz。我們也可以得到多重映射,比如,1300Hz在經過多重映射后,也將映射成300Hz。
在旋轉測量時,我們不用頻率來處理,而更多是用階次來處理。階次是轉速的倍數,如果旋轉軸的轉速是R,那么第2階次是轉速的2倍,即2*R rpm,3.5階次,即3.5*R rpm,其他階次類似?,F在讓我們來考慮,為了得到振動幅值,我們該怎么做。通常我們測量兩個連續脈沖的時間周期。顯然,如果我們每轉有K個脈沖,那么對于計算角度振動而言,有效的采集率是K脈沖/轉。
展開