
發(fā)布
注冊
/
登錄abaqus GUI的案例
不用重啟Abaqus,手把手教你快速調(diào)試插件程序GUI
為什么要對對話框的GUI做更改呢?
RSG對話框生成器中自帶的控件,確實可以做出簡單的對話框,但也就只能做簡單的對話框了。因為幾乎每個RSG提供的控件中的功能接口都很少,大量的功能接口被隱藏了(是真的!),還有一些控件用RSG是做不出來的。無論是控件的隱藏功能,還是做不出來的控件,想要使用它們,都必須以腳本的形式開發(fā)出來。
而在開發(fā)過程中,需要一次次的調(diào)試,如果每次調(diào)式都伴隨著重啟Abaqus,那是一件很頭疼的事。所以如果有不用重啟就能打開調(diào)式后的對話框的方法,使用起來則很痛快。
推出我的第二套課程:《Abaqus插件程序GUI的二次開發(fā) 初、中級篇》
課程一共21講,從腳本的角度,全面講解了RSG自帶的22種控件,以及沒包含的7種控件,共計29種控件,此外,還講解了注冊腳本中的8種類型關(guān)鍵字。課程以腳本的方式,不只是講解如何創(chuàng)建控件,更多的是挖掘控件被隱藏的功能,從而做出更豐富、更實用的插件對話框。
課程第一講,也有設(shè)置F和D兩個圖標按鈕的演示,歡迎觀看。
Abaqus GUI二次開發(fā)三部曲:
Abaqus 主窗口GUI的二次開發(fā)
Abaqus插件程序GUI的二次開發(fā) 初、中級篇
Abaqus插件程序GUI的二次開發(fā) 高級篇
展開 學(xué)習(xí)abaqus gui開發(fā)的第一步
l abaqus中的腳本接口
l 快速建模
l 自動后處理、訪問輸出數(shù)據(jù)庫
l 監(jiān)控分析作業(yè)、參數(shù)分析、優(yōu)化分析
2.2 gui開發(fā)指南和官方文檔
如果你有一定的定制需要,比如封裝一個腳本文件、或者封裝一個定制化插件,第一本書就不太能滿足需,就需要參考后面兩本書。第二本和第三本內(nèi)容比較接近,《abaqus的gui開發(fā)指南》講的比較深,官方文檔講的很全面。以后的分享中就以官方文檔為基礎(chǔ),再輔以第二本書的內(nèi)容幫助大家理解,我們一起學(xué)習(xí)。
分享人:CAE咚咚鏘
Abaqus GUI程序開發(fā)過程中的一般調(diào)試方法
文章轉(zhuǎn)自《復(fù)合材料力學(xué)》微信公眾號
在采用Python語言對Abaqus進行GUI應(yīng)用程序或者插件程序開發(fā)時,最令人懊惱的就是每每修改了圖形界面代碼或者內(nèi)核程序,都需要反復(fù)重新啟動Abaqus/CAE才能檢驗所修改內(nèi)容是否更新,所調(diào)試的bug是否已經(jīng)解決。整個調(diào)試過程,很大一部分時間都浪費在重啟Abaqus/CAE的過程中。那有沒有辦法避免反復(fù)重啟Abaqus/CAE呢?
本文將介紹幾種方法,來提升Abaqus GUI程序開發(fā)效率。應(yīng)用程序及插件程序調(diào)試方法類似,故本文僅以插件程序調(diào)試為例。
一般插件程序有注冊文件、圖形界面文件及內(nèi)核執(zhí)行文件組成,想要提升插件程序調(diào)試效率,需要首先搞清楚不同的插件程序文件缺省情況下都是在何時被加載的:
(1)注冊文件:一般以xxx_plugin.py命名,其主要作用是注冊各類控件關(guān)鍵字,檢查數(shù)據(jù)的合法性,并將插件工具注冊到Plug-ins菜單或者自定義工具條中。注冊文件默認是在Abaqus/CAE啟動時被加載,首次調(diào)用插件時,插件文件夾內(nèi)會同時出現(xiàn)xxx_plugin.pyc文件,是最早被編譯的代碼文件。
(2)圖形界面文件:一般以xxxDB.py命名,其主要作用是定義圖形界面框架、各類控件,并關(guān)聯(lián)各控件的執(zhí)行目標、執(zhí)行動作等。圖形界面文件是在插件菜單被點擊時加載,如果是首次調(diào)用插件,同時在插件文件夾內(nèi)會出現(xiàn)xxxDB.pyc文件。
(3)內(nèi)核執(zhí)行文件:內(nèi)核執(zhí)行文件是插件程序的核心,包含了一系列驅(qū)動Abaqus/CAE內(nèi)核程序的指令,通過執(zhí)行這些指令完成CAE建模以及數(shù)據(jù)處理等功能。內(nèi)核執(zhí)行文件同樣也是在插件菜單被點擊時加載,如果是首次調(diào)用插件,同時在插件文件夾內(nèi)會出現(xiàn)xxx.pyc內(nèi)核編譯文件。
默認情況下,一旦插件文件夾中存在了pyc文件,則對應(yīng)的代碼不會再被重新編譯。
展開 學(xué)習(xí)abaqus gui開發(fā)的第一步
當然是找兩本書看啦,推薦下面這兩本:
python在abaqus中的應(yīng)用
abaqus的gui開發(fā)指南
兩本超級棒的書,也是從一點博主的無私分享中得到寶貴資源。第一本比較基礎(chǔ),當然兩本都寫的超級好。后續(xù)會發(fā)布一些關(guān)于第一本書中的例子。
Python語言在Abaqus中的應(yīng)用.pdf
第二本書貌似太大了,有需要的童鞋可以留下自己的郵箱

除了內(nèi)核程序,Abaqus還能這樣做二次開發(fā)
由此看來,插件程序GUI腳本和注冊腳本也是Abaqus二次開發(fā)的一種。
實際上,Abaqus的二次開發(fā)并不僅僅局限于此,利用Python還可以對Abaqus主窗口的GUI進行二次開發(fā)。
顧名思義,Abaqus主窗口的GUI二次開發(fā),是針對主窗口的圖形界面進行開發(fā)。平時我們使用Abaqus,都是在菜單、工具條、模塊、以及左側(cè)的工具箱中,選擇菜單項或圖標按鈕進行操作。
這些菜單項或圖標按鈕都是Abaqus主窗口GUI的組成部分。
對主窗口的GUI進行二次開發(fā),就是對菜單、工具條、模塊、以及左側(cè)的工具箱進行開發(fā)。
如何對Abaqus主窗口GUI進行二次開發(fā)呢?
我們在開發(fā)內(nèi)核程序時,腳本開頭都會有from abaqus import *,這樣可以使用各種內(nèi)核方法。
而在開發(fā)主窗口GUI(以及插件程序GUI)時,腳本開頭也都會有from abaqusGui import *,導(dǎo)入了abaqusGui模塊。abaqusGui就是Abaqus GUI Toolkit,也稱為Abaqus GUI工具包,它是FOX GUI Toolkit的擴展。
FOX GUI Toolkit是一個基于C++的可以進行GUI開發(fā)的工具包,含有豐富的窗口小部件和布局管理器。Abaqus GUI Toolkit在FOX GUI工具包的基礎(chǔ)上進行了擴展,可讓我們創(chuàng)建、修改和擴展Abaqus / CAE圖形用戶界面(GUI)的功能。如果對FOX GUI Toolkit有興趣,可以訪問他們的網(wǎng)站:http://www.fox-toolkit.org/。同時它也是面向?qū)ο蟮摹⑴c平臺無關(guān)的GUI開發(fā)工具包。
正是由于FOX GUIToolkit是面向?qū)ο蟮模?em>Abaqus以及我們可以通過繼承的方式,很輕易地拓展已有的功能。
展開 Abaqus GUI中旋轉(zhuǎn)區(qū)域和多對話框?qū)崿F(xiàn)方法 ¥16
本文介紹如何在Abaqus GUI程序設(shè)計中實現(xiàn)旋轉(zhuǎn)區(qū)域和多個對話框功能。
先了解下幫助文檔中相關(guān)內(nèi)容的介紹:
1. 旋轉(zhuǎn)區(qū)域(Rotating regions)
The FXSwitcher widget manages children that are positioned on top of each other.
FXSwitcher allows you to select which child should be shown by either sending it a message or calling its setCurrent method. When sending a message, you must set the message ID to FXSwitcher.ID_OPEN_FIRST for the first child. You must then increment the message ID from that value for the subsequent children, as shown in the following example.
展開 走進abaqus gui開發(fā)(4)--新建插件程序
def function1():# 函數(shù)1 #執(zhí)行功能1 return sth def function2():# 函數(shù)1 #執(zhí)行功能2 return sth
1.2 引入相關(guān)的庫
abaqusConstants,abaqusGui,kernelAccess,這三個庫都是集成在abaqus中的,和 abaqus密切相關(guān)的庫。
from abaqusConstants import *
from abaqusGui import *
from kernelAccess import mdb, session
import os
1.3 規(guī)定相應(yīng)的功能
先觀察案例中的插件程序界面里面有什么東西。
首先是有一個大框把所有東西都裝起來,還有標題,再加上注意事項,畫面中間還有一些小的參數(shù)框和示意圖,最下面還有兩個按鈕。所以在這個部分就要先設(shè)計一個自己的對話框,在往對話框中填東西。就往最簡單的方向,先造一個夠用的小對話框。對話框里首先是底部按鈕,參數(shù)對話框,示意圖。分別講講這三個功能是如何用函數(shù)來實現(xiàn)的。
按鈕用.getActionButton()來定義,
參數(shù)對話框用AFXTextField(p=GroupBox_l, ncols=’, labelText='零件名:', tgt=form.partnameKw, sel=O)。值得注意,因為我們有四個參數(shù),名字,寬度,高度,直徑,所以參數(shù)對話框就需要四個。
示意圖用afxCreatePNGIcon()函數(shù)創(chuàng)建。
展開 ABAQUS GUI免重啟快速調(diào)試--終極版
“ 對于ABAQUS GUI的二次開發(fā), 最頭疼的莫過于每次更改From或者DB的時候都需要重啟ABAQUS才能看見更改后的效果,而反復(fù)的重啟ABAQUS會拖慢電腦運行速度, 實在是一個磨煉心性的好辦法。而網(wǎng)上雖然有很多關(guān)于prototypeApp的討論, 但是一直感覺隔了一層窗戶紙, 就是不通透。而本文將闡述一下然后把這個prototypeApp梳理通透, 形成一個可以方便快捷的GUI開發(fā)調(diào)試框架。”
或許有人好奇, 我為什么非要把prototypeApp折騰成這個樣子? 這是因為我想要一個集使用開發(fā)調(diào)試使用于一體的自己開發(fā)的主窗口GUI界面, 像這樣:
如果不對prototypeApp進行優(yōu)化, 那么每次調(diào)試插件的時候, 要么得在單獨的環(huán)境中調(diào)試, 要么就會把自己開發(fā)的主窗口GUI源文件搞得一團亂麻.
而經(jīng)過我優(yōu)化的prototypeApp則可以很好地和主窗口GUI形成一個整體, 作為集開發(fā)調(diào)試使用于一體的ABAQUS環(huán)境. 這樣一來, 通過RSG自動生成的插件, copy至plugins文件夾后, 經(jīng)過prototype調(diào)試合格后, 即可直接注冊到自己想注冊的位置并進行使用. 這樣一來就形成了一個閉環(huán)生態(tài), 并且可以在使用過程中, 不斷優(yōu)化調(diào)試.
展開 ABAQUS GUI免重啟快速調(diào)試--終極版
“ 對于ABAQUS GUI的二次開發(fā), 最頭疼的莫過于每次更改From或者DB的時候都需要重啟ABAQUS才能看見更改后的效果,而反復(fù)的重啟ABAQUS會拖慢電腦運行速度, 實在是一個磨煉心性的好辦法。而網(wǎng)上雖然有很多關(guān)于prototypeApp的討論, 但是一直感覺隔了一層窗戶紙, 就是不通透。而本文將闡述一下然后把這個prototypeApp梳理通透, 形成一個可以方便快捷的GUI開發(fā)調(diào)試框架。”
或許有人好奇, 我為什么非要把prototypeApp折騰成這個樣子? 這是因為我想要一個集使用開發(fā)調(diào)試使用于一體的自己開發(fā)的主窗口GUI界面, 像這樣:
如果不對prototypeApp進行優(yōu)化, 那么每次調(diào)試插件的時候, 要么得在單獨的環(huán)境中調(diào)試, 要么就會把自己開發(fā)的主窗口GUI源文件搞得一團亂麻.
而經(jīng)過我優(yōu)化的prototypeApp則可以很好地和主窗口GUI形成一個整體, 作為集開發(fā)調(diào)試使用于一體的ABAQUS環(huán)境. 這樣一來, 通過RSG自動生成的插件, copy至plugins文件夾后, 經(jīng)過prototype調(diào)試合格后, 即可直接注冊到自己想注冊的位置并進行使用. 這樣一來就形成了一個閉環(huán)生態(tài), 并且可以在使用過程中, 不斷優(yōu)化調(diào)試.
展開 詳解Abaqus插件腳本中的關(guān)鍵字(AFXKeyword)(上)
注冊腳本:
創(chuàng)建一個字符串類型的關(guān)鍵字
第23行,需要以AFXGuiCommand創(chuàng)建一個GUI命令,以它作為關(guān)鍵字的第一個參數(shù)。這個參數(shù)可以給所有關(guān)鍵字共用。
第26行,構(gòu)造方法AFXStringKeyword(),創(chuàng)建關(guān)鍵字對象,賦值給self.keyword01Kw
對話框腳本:
字符串類型關(guān)鍵字使用于特定的控件中,比如文本框控件:
參數(shù)tgt的賦值,即為剛才創(chuàng)建的關(guān)鍵字對象。因為處于不同的腳本,需要用form來調(diào)用該關(guān)鍵字。
由于關(guān)鍵字的類型是字符串,所以sel的賦值為0,這是固定格式。
如此一來,文本框控件創(chuàng)建好了。文本框中輸入的字符串(Part-1),會被賦值給參數(shù) keyword01,傳遞給內(nèi)核腳本。
參數(shù)tgt和sel通常有三種設(shè)置方式,在《Abaqus插件對話框二次開發(fā),參數(shù)tgt和sel的設(shè)置方法》帖子中有詳細闡述,這里使用的是第一種方式。
在下一貼中,我們繼續(xù)討論8種關(guān)鍵字的具體創(chuàng)建方法,以及用于何種控件:
詳解Abaqus插件腳本中的關(guān)鍵字(AFXKeyword)(下)
Abaqus GUI二次開發(fā)三部曲:
Abaqus 主窗口GUI的二次開發(fā)
Abaqus插件程序GUI的二次開發(fā) 初、中級篇
Abaqus插件程序GUI的二次開發(fā) 高級篇
展開 [干貨]Abaqus插件對話框二次開發(fā),參數(shù)tgt和sel的設(shè)置方法
這里例舉的方法比較簡單,僅僅在abaqus窗口下方的消息區(qū)域輸出一行字符串。
以上就是參數(shù)tgt和sel的三種設(shè)置方式了。
很明顯,后兩種的設(shè)置方法,它的用途并不是創(chuàng)建某個控件,而是調(diào)用其他的功能,比如調(diào)用某個類的實例對象,或者為了調(diào)用某個方法。
這兩種方式都可實現(xiàn)與外部功能做關(guān)聯(lián),那使用哪個更合適呢?
這個問題不好一概而論,不同的場合用不同的方式。如果某個功能是通過定義一個類來設(shè)定的,那么自然用第二種比較合適,比如這里的文件選擇對話框控件,它自身有一個類,通過將此類實例化,可以運行類中定義的功能。
如果某個功能是通過某個實例方法實現(xiàn)的,那么用第三種合適。這樣的設(shè)置方法比較直觀,實例方法中就直接可以編寫出我們想要的功能,比如這里的按鈕控件,點擊后,會執(zhí)行方法中的語句,就是在消息區(qū)域打印出一行字符串。
當然,tgt和sel的設(shè)置,只是Abaqus GUI二次開發(fā)寶礦中的一角,還有更多的知識等待挖掘。
所以,推出個人的第三套課程——《Abaqus 插件程序 GUI的二次開發(fā) 高級篇》,本課程在《Abaqus插件程序GUI的二次開發(fā) 初、中級篇》的基礎(chǔ)上,對Abaqus插件對話框的GUI二次開發(fā),做更深一步的探討。
在這里,tgt和sel的設(shè)置只是最基礎(chǔ)的知識。
課程不再局限于某個控件的創(chuàng)建和使用,而轉(zhuǎn)向于一些實用的、用RSG無法實現(xiàn)的功能。
我將Abaqus對話框中常見的、且必須通過腳本開發(fā),方可實現(xiàn)的GUI,融合在七個插件中,以它們?yōu)榘咐灰恢v述各自的實現(xiàn)過程。
本貼的內(nèi)容,也以視頻演示的方式,作為第一講,免費播放。
Abaqus GUI二次開發(fā)三部曲:
Abaqus 主窗口GUI的二次開發(fā)
Abaqus插件程序GUI的二次開發(fā) 初、中級篇
Abaqus插件程序GUI的二次開發(fā) 高級篇
展開 
星辰技文|ABAQUS幫助文檔-巨大寶庫
9、《Abaqus GUI Toolkit User's Guide》和《Abaqus GUI Toolkit Reference Guide》兩姐妹對Abaqus GUI界面開發(fā)腳本語言進行詳細介紹,你可以為個性化的需求定制一個信息輸入界面、工具、模塊,英語不好的小伙伴推薦查看《Abaqus GUI程序開發(fā)指南》一書。
10、最后介紹下《Abaqus Release Notes》,每當新版本推出的時候,我首先會看他,能詳細指導(dǎo)在新版本中做了哪些改進,新增了哪些功能,感時髦的小伙伴可以看看。偷偷告訴增材仿真的小伙伴,2017里面新增了很多你們能用到的技巧!
看幫助文檔有時候比看書要好,因為書本中的軟件版本相對老,而幫助文檔能更準確的描述您需要的功能,為我們排憂解難。
俗話說,學(xué)無止盡,讓我們共同進步!
展開 Abaqus的幫助文檔 附Abaqus Analysis User's Manual-5下載
Abaqus GUI Toolkit User's Manual
Abaqus GUI 工具箱用戶手冊
Abaqus GUI Toolkit Reference Manual
Abaqus GUI 工具箱參考手冊
Abaqus Interface for MSC.ADAMS User's Manual
Abaqus 與 MSC.ADAMS 接口用戶手冊
Abaqus Interface for MOLDFLOW User's Manual
Abaqus 與 MOLDFLOW 接口用戶手冊
Using Abaqus Online Documentation
如何使用 Abaqus 在線幫助文檔
打開Abaqus幫助文檔,有以下幾種方法:
1)在 Abaqus Command窗口(DOS 窗口)輸入命令:abaqus doc
2)在 Windows 操作系統(tǒng)中點擊【開始】→【所有程序】→【Abaqus 6.14-1】→【Abaqus Documention】;
3)在 Windows
展開 ABAQUS 用戶手冊
Abaqus Analysis User's Manual, vol1.pdf
Abaqus CAE Users Theories Manual (Unknown) (z-lib.org).pdf
Abaqus_GUI_工具包用戶手冊.pdf (Abaqus_GUI_工具包用戶手冊.pdf) (z-lib.org).pdf
Abaqus分析用戶手冊——材料卷.pdf
Abaqus+指定條件、約束與相互作用卷.pdf
【公益帖子】ABAQUS python 核心腳本getSequenceFromMask轉(zhuǎn)換成通用代碼
Key1:getSequenceFromMask轉(zhuǎn)換成通用代碼
對一個名為“Part-1”的零件創(chuàng)建一個set,命名為“test”,類型選擇Geometry,選擇模型中某幾何邊界作為該集合的元素,將模型保存后,查詢生成的指令文件Abaqus.rpy,如下:
p = mdb.models['test'].parts['Part-1']
e = p.edges
edges = e.getSequenceFromMask(mask=('[#1 ]', ), )
p.Set(edges=edges, name='Set-test')
--------------------------------------------------------
上述代碼中對象edges 的索引方式getSequenceFromMask,即默認replayGeometry=COMPRESSEDINDEX
無法查看具體的通用code。我們可以采用精確的坐標數(shù)據(jù)方式查看,設(shè)定replayGeometry= COORDINATE
在Abaqus GUI 命令行交互窗口輸入以下指令:
session.journalOptio
session.journalOptions.setValues(replayGeometry=COORDINATE,recoverGeometry=COORDINATE)
然后,再在CAE中重復(fù)一遍操作,發(fā)現(xiàn)代碼的輸出格式變成了下面這個樣子。
展開