除了內(nèi)核程序,Abaqus還能這樣做二次開發(fā)

經(jīng)常使用Abaqus的人都知道,從編程語(yǔ)言角度來(lái)說(shuō),常見的Abaqus二次開發(fā)使用的是Fortran語(yǔ)言和Python語(yǔ)言。Fortran可以用來(lái)開發(fā)子程序,Python則是用來(lái)開發(fā)插件程序。

我們通常所說(shuō)的開發(fā)插件程序,一般是指開發(fā)內(nèi)核程序。很多時(shí)候,可以利用自動(dòng)生成的rpy文件,對(duì)它適當(dāng)修改,比如添加判斷、循環(huán)等語(yǔ)句,即可得到一套內(nèi)核腳本。如果配合使用RSG對(duì)話框生成器,能夠生成帶有對(duì)話框界面的插件程序。重啟Abaqus之后,在Plug-ins菜單中即可找到,使用起來(lái)十分方便。

我們?cè)凇肮ぷ髂夸?abaqus_plugins”下,可以找到三個(gè)腳本文件,比如:

無(wú)標(biāo)題2.png

第一個(gè)是內(nèi)核腳本,它直接以我們輸入的名稱為命名。

第二個(gè)是插件程序GUI腳本,通常是以DB.py結(jié)尾的文件,它包含了各個(gè)控件和布局管理器,將我們?cè)赗SG對(duì)話框生成器中制作出的對(duì)話框,以腳本的形式自動(dòng)生成。

第三個(gè)是以_plugin.py結(jié)尾的文件,它是注冊(cè)腳本,主要作用是初始化控件關(guān)鍵字,檢查數(shù)據(jù)的合法性,并將插件注冊(cè)到Plug-ins菜單中,它也是由RSG對(duì)話框生成器自動(dòng)生成的。我們通常在Plug-ins菜單下打開插件時(shí),先調(diào)用的就是這個(gè)注冊(cè)腳本,它能夠自動(dòng)調(diào)用xxxDB.py對(duì)話框文件。

有時(shí)還會(huì)出現(xiàn)pyc文件,比如:

捕獲.png

它是怎么出現(xiàn)的呢?當(dāng)一個(gè)腳本中導(dǎo)入一個(gè)模塊的時(shí)候,會(huì)將該模塊的腳本生成pyc文件,這是python為了提高解析速度,對(duì)作為模塊的py文件先作一個(gè)類似編譯的行為,自動(dòng)生成相應(yīng)的pyc文件。當(dāng)再有其他腳本導(dǎo)入這些模塊時(shí),python就不用再重新解析py文件,而是讀入pyc文件就可以了,這是因?yàn)閜yc文件是二進(jìn)制文件,運(yùn)行的速度比較快。pyc文件用記事本打開是一堆亂碼,用代碼編譯器打開則是一堆數(shù)字,無(wú)法編輯。當(dāng)我們不想讓pyc文件出現(xiàn),比如腳本A.py導(dǎo)入了腳本B,可以打開腳本A.py,在開頭添加兩行代碼:

import sys

sys.dont_write_bytecode = True

這樣,腳本A就不會(huì)對(duì)導(dǎo)入的所有腳本進(jìn)行預(yù)編譯,也就不會(huì)產(chǎn)生B.pyc。但如果腳本A被其他腳本導(dǎo)入,仍會(huì)自動(dòng)產(chǎn)生A.pyc文件。

由此看來(lái),插件程序GUI腳本和注冊(cè)腳本也是Abaqus二次開發(fā)的一種。

實(shí)際上,Abaqus的二次開發(fā)并不僅僅局限于此,利用Python還可以對(duì)Abaqus主窗口的GUI進(jìn)行二次開發(fā)

顧名思義,Abaqus主窗口的GUI二次開發(fā),是針對(duì)主窗口的圖形界面進(jìn)行開發(fā)。平時(shí)我們使用Abaqus,都是在菜單、工具條、模塊、以及左側(cè)的工具箱中,選擇菜單項(xiàng)或圖標(biāo)按鈕進(jìn)行操作。

這些菜單項(xiàng)或圖標(biāo)按鈕都是Abaqus主窗口GUI的組成部分。

對(duì)主窗口的GUI進(jìn)行二次開發(fā),就是對(duì)菜單、工具條、模塊、以及左側(cè)的工具箱進(jìn)行開發(fā)。

如何對(duì)Abaqus主窗口GUI進(jìn)行二次開發(fā)呢?

我們?cè)陂_發(fā)內(nèi)核程序時(shí),腳本開頭都會(huì)有from abaqus import *,這樣可以使用各種內(nèi)核方法。

而在開發(fā)主窗口GUI(以及插件程序GUI)時(shí),腳本開頭也都會(huì)有from abaqusGui import *,導(dǎo)入了abaqusGui模塊。abaqusGui就是Abaqus GUI Toolkit,也稱為Abaqus GUI工具包,它是FOX GUI Toolkit的擴(kuò)展。

FOX GUI Toolkit是一個(gè)基于C++的可以進(jìn)行GUI開發(fā)的工具包,含有豐富的窗口小部件和布局管理器。Abaqus GUI Toolkit在FOX GUI工具包的基礎(chǔ)上進(jìn)行了擴(kuò)展,可讓我們創(chuàng)建、修改和擴(kuò)展Abaqus / CAE圖形用戶界面(GUI)的功能。如果對(duì)FOX GUI Toolkit有興趣,可以訪問他們的網(wǎng)站:http://www.fox-toolkit.org/。同時(shí)它也是面向?qū)ο蟮摹⑴c平臺(tái)無(wú)關(guān)的GUI開發(fā)工具包。

正是由于FOX GUIToolkit是面向?qū)ο蟮模訟baqus以及我們可以通過繼承的方式,很輕易地拓展已有的功能。

主窗口GUI和插件程序GUI的開發(fā),用的都是Abaqus GUI Toolkit。兩者是緊密相連的。自上而下來(lái)看,整體的開發(fā)流程是:

 

流程.png

第一步、AFXApp:創(chuàng)建一個(gè)Abaqus的應(yīng)用程序。

第二步、AFXMainWindow:注冊(cè)標(biāo)準(zhǔn)的和自定義的工具集,以及注冊(cè)標(biāo)準(zhǔn)的和自定義的模塊。

第三步、Modules/Toolsets:自定義模塊和工具集。在這一步中,我們就可以把集中在Plug-ins菜單下的插件程序做成圖標(biāo)按鈕,分別放置到我們期望的地方。

第四步、Menu/Icons:修改、增加菜單和定義圖標(biāo)。

第五步、Modes:負(fù)責(zé)收集用戶輸入的參數(shù),以及處理命令的模式。

第六步、Forms/Procedures:這是包含在第五步的modes中的,Modes中包含了Forms模式和Procedures模式。

第七步、Dialogs:創(chuàng)建對(duì)話框。

第八步、Layout Managers:在對(duì)話框中把各個(gè)控件進(jìn)行布局。

第九步、Widgets:創(chuàng)建各個(gè)控件,比如單復(fù)選按鈕、下拉列表等。

從這九個(gè)步驟可以看出,第一步到第四步是主窗口GUI的二次開發(fā),后面五步是插件程序GUI的開發(fā)。

Abaqus主窗口GUI的二次開發(fā)有什么作用呢?

當(dāng)插件程序只有少數(shù)幾個(gè)時(shí),我們可以在Plug-ins菜單下很方便地找得到。但隨著工作或?qū)W習(xí)的積累,插件程序會(huì)漸漸增多,以至于可能會(huì)變成這樣: 

帖子圖片.png

隨著插件程序越來(lái)越多,它們的功能和分類可能也都不相同,如果都擁擠在一個(gè)下拉菜單中,我們可能無(wú)法快速找到想要的插件程序。時(shí)間長(zhǎng)了,有時(shí)還會(huì)忘記一些不常用的插件。

和Abaqus中各個(gè)圖標(biāo)按鈕一樣,我們能不能也把這些插件程序轉(zhuǎn)換成自己喜歡的圖標(biāo)按鈕呢?

把它們分類后,這些圖標(biāo)能不能分別放到菜單欄、工具條和左側(cè)的工具箱中呢?

當(dāng)切換到某個(gè)模塊時(shí),能不能自動(dòng)彈出我們想要的的插件圖標(biāo)呢?

為了應(yīng)對(duì)某種需要,能不能單獨(dú)創(chuàng)建一個(gè)新模塊,在這個(gè)模塊中盡情地放入各種插件圖標(biāo)呢?

甚至哪怕只有一個(gè)插件程序,能不能也把它轉(zhuǎn)為圖標(biāo)按鈕,添加到已有的工具條中呢?

能!

通過對(duì)Abaqus主窗口GUI的二次開發(fā),能夠?qū)崿F(xiàn)這些功能!

下面的主窗口,就是正是針對(duì)這些需求開發(fā)出來(lái)的。

能夠看到,現(xiàn)在的Abaqus主窗口中,出現(xiàn)很多沒見過的圖標(biāo)按鈕,新建了一些菜單,增添兩個(gè)新的工具條,已有的工具條中添加了圖標(biāo),工具箱中也有新的圖標(biāo)按鈕;甚至還自定義了一個(gè)新的Beam Module模塊,模塊中有專門的圖標(biāo);切換到New Step模塊時(shí),則會(huì)自動(dòng)調(diào)出新的球類圖標(biāo)按鈕。 

無(wú)標(biāo)題.png

無(wú)標(biāo)題1.png

這樣充滿個(gè)性的Abaqus主窗口,是如何開發(fā)出呢?其實(shí)是這幾個(gè)腳本共同打造出來(lái)的。

捕獲1.png

3個(gè)文件夾(工作目錄、圖標(biāo)和插件程序)、9個(gè)腳本和1個(gè)bat文件

這9個(gè)腳本文件,對(duì)應(yīng)上面九步流程中的第一步到第四步:

第一步、AFXApp,是啟動(dòng)腳本,對(duì)應(yīng)的是newApp.py。它負(fù)責(zé)創(chuàng)建一個(gè)主窗口,并啟動(dòng)。

第二步、AFXMainWindow是注冊(cè)腳本,對(duì)應(yīng)的是mainWindow.py。腳本中注冊(cè)了各種工具集和模塊,其中包括Abaqus自帶的,以及我們自己的插件程序。

第三步、Modules/Toolsets是自定義模塊和工具集腳本,文件夾中的其他7個(gè)腳本都與之相關(guān)。在這些腳本中,依照不同的情況,分別把插件程序轉(zhuǎn)變?yōu)閳D標(biāo)按鈕,并放置到各個(gè)所需的地方。

第四步、Menu/Icons是定義菜單和圖標(biāo)。它們都融合在第三步中,在各個(gè)腳本中已經(jīng)創(chuàng)建、修改好了菜單和圖標(biāo)了。

開發(fā)出這樣的腳本難不難呢?需要有什么基礎(chǔ)知識(shí)呢?

----------  紅著臉介紹我的課程 :) ----------

只要能夠正常操作Abaqus,并具備python基礎(chǔ)知識(shí),就可以跟著《Abaqus主窗口GUI的二次開發(fā)》課程一起,開發(fā)出專屬的Abaqus主窗口了。課程一共16講,第一講免費(fèi)。

課程分為兩個(gè)部分:

1、類和面向?qū)ο笾R(shí)點(diǎn)的講解;

2、附件中9個(gè)腳本的講解。

視頻課程中,會(huì)對(duì)腳本的每一行代碼進(jìn)行細(xì)致探討,你不但能理解每個(gè)方法及參數(shù)的含義,還可掌握各個(gè)腳本的架構(gòu),以及開發(fā)思路。

跟著課程,你也能開發(fā)出獨(dú)一無(wú)二的Abaqus主窗口。

課程地址:http://www.yqgqt.org.cn/college/video/c16375


Abaqus GUI二次開發(fā)三部曲:

Abaqus 主窗口GUI的二次開發(fā)

Abaqus插件程序GUI的二次開發(fā) 初、中級(jí)篇

Abaqus插件程序GUI的二次開發(fā) 高級(jí)篇

登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP

34
25
8