除了內核程序,Abaqus還能這樣做二次開發
經常使用Abaqus的人都知道,從編程語言角度來說,常見的Abaqus二次開發使用的是Fortran語言和Python語言。Fortran可以用來開發子程序,Python則是用來開發插件程序。
我們通常所說的開發插件程序,一般是指開發內核程序。很多時候,可以利用自動生成的rpy文件,對它適當修改,比如添加判斷、循環等語句,即可得到一套內核腳本。如果配合使用RSG對話框生成器,能夠生成帶有對話框界面的插件程序。重啟Abaqus之后,在Plug-ins菜單中即可找到,使用起來十分方便。
我們在“工作目錄-abaqus_plugins”下,可以找到三個腳本文件,比如:
第一個是內核腳本,它直接以我們輸入的名稱為命名。
第二個是插件程序GUI腳本,通常是以DB.py結尾的文件,它包含了各個控件和布局管理器,將我們在RSG對話框生成器中制作出的對話框,以腳本的形式自動生成。
第三個是以_plugin.py結尾的文件,它是注冊腳本,主要作用是初始化控件關鍵字,檢查數據的合法性,并將插件注冊到Plug-ins菜單中,它也是由RSG對話框生成器自動生成的。我們通常在Plug-ins菜單下打開插件時,先調用的就是這個注冊腳本,它能夠自動調用xxxDB.py對話框文件。
有時還會出現pyc文件,比如:
它是怎么出現的呢?當一個腳本中導入一個模塊的時候,會將該模塊的腳本生成pyc文件,這是python為了提高解析速度,對作為模塊的py文件先作一個類似編譯的行為,自動生成相應的pyc文件。當再有其他腳本導入這些模塊時,python就不用再重新解析py文件,而是讀入pyc文件就可以了,這是因為pyc文件是二進制文件,運行的速度比較快。pyc文件用記事本打開是一堆亂碼,用代碼編譯器打開則是一堆數字,無法編輯。當我們不想讓pyc文件出現,比如腳本A.py導入了腳本B,可以打開腳本A.py,在開頭添加兩行代碼:
import sys
sys.dont_write_bytecode = True
這樣,腳本A就不會對導入的所有腳本進行預編譯,也就不會產生B.pyc。但如果腳本A被其他腳本導入,仍會自動產生A.pyc文件。
由此看來,插件程序GUI腳本和注冊腳本也是Abaqus二次開發的一種。
實際上,Abaqus的二次開發并不僅僅局限于此,利用Python還可以對Abaqus主窗口的GUI進行二次開發。
顧名思義,Abaqus主窗口的GUI二次開發,是針對主窗口的圖形界面進行開發。平時我們使用Abaqus,都是在菜單、工具條、模塊、以及左側的工具箱中,選擇菜單項或圖標按鈕進行操作。
這些菜單項或圖標按鈕都是Abaqus主窗口GUI的組成部分。
對主窗口的GUI進行二次開發,就是對菜單、工具條、模塊、以及左側的工具箱進行開發。
如何對Abaqus主窗口GUI進行二次開發呢?
我們在開發內核程序時,腳本開頭都會有from abaqus import *,這樣可以使用各種內核方法。
而在開發主窗口GUI(以及插件程序GUI)時,腳本開頭也都會有from abaqusGui import *,導入了abaqusGui模塊。abaqusGui就是Abaqus GUI Toolkit,也稱為Abaqus GUI工具包,它是FOX GUI Toolkit的擴展。
FOX GUI Toolkit是一個基于C++的可以進行GUI開發的工具包,含有豐富的窗口小部件和布局管理器。Abaqus GUI Toolkit在FOX GUI工具包的基礎上進行了擴展,可讓我們創建、修改和擴展Abaqus / CAE圖形用戶界面(GUI)的功能。如果對FOX GUI Toolkit有興趣,可以訪問他們的網站:http://www.fox-toolkit.org/。同時它也是面向對象的、與平臺無關的GUI開發工具包。
正是由于FOX GUIToolkit是面向對象的,所以Abaqus以及我們可以通過繼承的方式,很輕易地拓展已有的功能。
主窗口GUI和插件程序GUI的開發,用的都是Abaqus GUI Toolkit。兩者是緊密相連的。自上而下來看,整體的開發流程是:
第一步、AFXApp:創建一個Abaqus的應用程序。
第二步、AFXMainWindow:注冊標準的和自定義的工具集,以及注冊標準的和自定義的模塊。
第三步、Modules/Toolsets:自定義模塊和工具集。在這一步中,我們就可以把集中在Plug-ins菜單下的插件程序做成圖標按鈕,分別放置到我們期望的地方。
第四步、Menu/Icons:修改、增加菜單和定義圖標。
第五步、Modes:負責收集用戶輸入的參數,以及處理命令的模式。
第六步、Forms/Procedures:這是包含在第五步的modes中的,Modes中包含了Forms模式和Procedures模式。
第七步、Dialogs:創建對話框。
第八步、Layout Managers:在對話框中把各個控件進行布局。
第九步、Widgets:創建各個控件,比如單復選按鈕、下拉列表等。
從這九個步驟可以看出,第一步到第四步是主窗口GUI的二次開發,后面五步是插件程序GUI的開發。
Abaqus主窗口GUI的二次開發有什么作用呢?
當插件程序只有少數幾個時,我們可以在Plug-ins菜單下很方便地找得到。但隨著工作或學習的積累,插件程序會漸漸增多,以至于可能會變成這樣:
隨著插件程序越來越多,它們的功能和分類可能也都不相同,如果都擁擠在一個下拉菜單中,我們可能無法快速找到想要的插件程序。時間長了,有時還會忘記一些不常用的插件。
和Abaqus中各個圖標按鈕一樣,我們能不能也把這些插件程序轉換成自己喜歡的圖標按鈕呢?
把它們分類后,這些圖標能不能分別放到菜單欄、工具條和左側的工具箱中呢?
當切換到某個模塊時,能不能自動彈出我們想要的的插件圖標呢?
為了應對某種需要,能不能單獨創建一個新模塊,在這個模塊中盡情地放入各種插件圖標呢?
甚至哪怕只有一個插件程序,能不能也把它轉為圖標按鈕,添加到已有的工具條中呢?
能!
通過對Abaqus主窗口GUI的二次開發,能夠實現這些功能!
下面的主窗口,就是正是針對這些需求開發出來的。
能夠看到,現在的Abaqus主窗口中,出現很多沒見過的圖標按鈕,新建了一些菜單,增添兩個新的工具條,已有的工具條中添加了圖標,工具箱中也有新的圖標按鈕;甚至還自定義了一個新的Beam Module模塊,模塊中有專門的圖標;切換到New Step模塊時,則會自動調出新的球類圖標按鈕。


這樣充滿個性的Abaqus主窗口,是如何開發出呢?其實是這幾個腳本共同打造出來的。
3個文件夾(工作目錄、圖標和插件程序)、9個腳本和1個bat文件
這9個腳本文件,對應上面九步流程中的第一步到第四步:
第一步、AFXApp,是啟動腳本,對應的是newApp.py。它負責創建一個主窗口,并啟動。
第二步、AFXMainWindow是注冊腳本,對應的是mainWindow.py。腳本中注冊了各種工具集和模塊,其中包括Abaqus自帶的,以及我們自己的插件程序。
第三步、Modules/Toolsets是自定義模塊和工具集腳本,文件夾中的其他7個腳本都與之相關。在這些腳本中,依照不同的情況,分別把插件程序轉變為圖標按鈕,并放置到各個所需的地方。
第四步、Menu/Icons是定義菜單和圖標。它們都融合在第三步中,在各個腳本中已經創建、修改好了菜單和圖標了。
開發出這樣的腳本難不難呢?需要有什么基礎知識呢?
---------- 紅著臉介紹我的課程 :) ----------
只要能夠正常操作Abaqus,并具備python基礎知識,就可以跟著《Abaqus主窗口GUI的二次開發》課程一起,開發出專屬的Abaqus主窗口了。課程一共16講,第一講免費。
課程分為兩個部分:
1、類和面向對象知識點的講解;
2、附件中9個腳本的講解。
視頻課程中,會對腳本的每一行代碼進行細致探討,你不但能理解每個方法及參數的含義,還可掌握各個腳本的架構,以及開發思路。
跟著課程,你也能開發出獨一無二的Abaqus主窗口。
課程地址:http://www.yqgqt.org.cn/college/video/c16375
Abaqus GUI二次開發三部曲:
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















