最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

輕松上手Mechanical腳本自動(dòng)化

2020-07-28 12:26 作者:仿真秀  | 我要投稿

還在用APDL?你Out了!快使用ANSYS ACT及其強(qiáng)大的API編寫腳本,我們可以輕松地自動(dòng)化Mechanical的日常任務(wù),固化仿真分析流程,極大提升工作效率。

1、Mechanical腳本概述

腳本是指使用編程語(yǔ)言與軟件產(chǎn)品進(jìn)行交互和修改。Workbench Mechanical支持兩種腳本語(yǔ)言:JavaScriptACT Python兩者都暫不支持腳本錄制,只能基于API編寫


ACT自動(dòng)化API是基于Python語(yǔ)言,允許我們自動(dòng)化Mechanical仿真過程(網(wǎng)格劃分、模型設(shè)置、后處理等)和獲取或設(shè)置與本地Mechanical對(duì)象的相關(guān)數(shù)據(jù),這在此之前需要使用JavaScript,現(xiàn)在可以使用IronPython編寫實(shí)現(xiàn)自動(dòng)化腳本。


Python是一種面向?qū)ο?、解釋型的高?jí)編程語(yǔ)言,語(yǔ)法簡(jiǎn)潔、優(yōu)雅、編寫的程序易讀,易于學(xué)習(xí)和掌握,適用于非高級(jí)開發(fā)人員。對(duì)于Mechanical腳本開發(fā)來(lái)說,JavaScript腳本開發(fā)目前沒有公開的API文檔可供參考。


ANSYS提供了非常詳細(xì)和全面的基于Python的ACT開發(fā)文檔,而且正在逐步擴(kuò)展和完善ACT開發(fā)g功能,所以說基于PythonACT開發(fā)代表了以后ANSYS二次開發(fā)的發(fā)展方向。

ACT開發(fā)資料免費(fèi)贈(zèng)送:絕無(wú)僅有!我整理的132份Ansys ACT二次開發(fā)學(xué)習(xí)資料


2、ACT Python腳本編寫

在嘗試編寫Mechanical自動(dòng)化腳本之前,我們首先應(yīng)該熟悉IronPython2.7的使用方法,然后需要了解MechanicalACT控制臺(tái)、對(duì)象結(jié)構(gòu)、如何訪問對(duì)象及其子對(duì)象、如何設(shè)置和修改對(duì)象的屬性值等。


2.1ACT控制臺(tái)

Mechanical中的ACT控制臺(tái)提供ACT Python腳本命令的輸入,以便我們開發(fā)和調(diào)試腳本代碼。

打開后的ACT控制臺(tái)如下所示。通過控制臺(tái)窗口以交互式執(zhí)行腳本命令,我們可以:

  • 為擴(kuò)展的ACT插件查找合適命令;

  • 訪問和設(shè)置Mechanical中對(duì)象數(shù)據(jù);

  • 在開發(fā)插件之前測(cè)試腳本代碼;

  • 調(diào)試開發(fā)的ACT插件。

ACT控制臺(tái)支持多行腳本命令編輯、代碼自動(dòng)縮進(jìn)、代碼自動(dòng)補(bǔ)全、代碼高亮、歷史記錄和代碼片段管理,常用的快捷鍵如下。

2.2代碼自動(dòng)補(bǔ)全
ACT控制臺(tái)提供智能的自動(dòng)補(bǔ)全功能,這意味著它考慮了括號(hào)或引號(hào)等語(yǔ)法元素。當(dāng)在編輯器中輸入句點(diǎn)時(shí),命令行上方將顯示一個(gè)可滾動(dòng)的建議列表,方便我們快速完成腳本命令鍵入。每個(gè)代碼補(bǔ)全建議都有一個(gè)帶有字母顏色編碼的圖標(biāo):

  • 方形圖標(biāo)中的字母描述了成員的類型,如P代表屬性(Property),M代表方法(Method)。

  • 圓形圖標(biāo)中的字母描述所選成員的返回值類型,如C表示類(Class),E表示枚舉(Enumeration)

2.3 Mechanical對(duì)象結(jié)構(gòu)
ACT自動(dòng)化API提供對(duì)Mechanical結(jié)構(gòu)樹中所有對(duì)象的訪問權(quán)限,允許我們創(chuàng)建對(duì)象、刪除對(duì)象或修改對(duì)象屬性

  • 通過ACT訪問Mechanical結(jié)構(gòu)樹時(shí),ExtAPI.DataModel.Project是所有對(duì)象的根節(jié)點(diǎn)。

  • 腳本對(duì)象訪問遵循和Mechanical結(jié)構(gòu)樹相同的結(jié)構(gòu),從這里我們可以訪問所有子節(jié)點(diǎn)上的對(duì)象。

  • 例如訪問Mesh對(duì)象,我們輸入ExtAPI.DataModel.Project.Model.Mesh,或者可簡(jiǎn)寫為Model.Mesh;可以采用相同方式訪問模型所有第一級(jí)對(duì)象(如Geometry、CoordinateSystems等)。

  • 除了Environment對(duì)象(如邊界載荷、后處理等)之外結(jié)構(gòu)樹中的所有對(duì)象都遵循單例模式,即第一級(jí)對(duì)象的實(shí)例對(duì)象不可能同時(shí)存在兩個(gè)

  • Environment對(duì)象作為第一級(jí)對(duì)象的子對(duì)象,存在一個(gè)或多個(gè)實(shí)例對(duì)象,不存在直接的訪問點(diǎn)。例如,我們可以添加多個(gè)Pressure載荷,如果要想訪問這些對(duì)象,就必須通過Children屬性或GetChildren方法訪問。

2.4子對(duì)象
如上所述,對(duì)于能在Mechanical結(jié)構(gòu)樹中存在多個(gè)實(shí)例的對(duì)象,不存在直接的訪問點(diǎn)。對(duì)于這些子對(duì)象,我們可以按照以下方法訪問:①引用父對(duì)象實(shí)例,使用Children屬性或者GetChildren方法,獲得所有子對(duì)象列表。②通過列表索引或?qū)ο竺Q(Name)引用的方式去獲得子對(duì)象。下面我們通過一個(gè)實(shí)例演練一下。

  • 上面模型中,可以直接通過結(jié)構(gòu)樹訪問Named Selections對(duì)象,并將實(shí)例對(duì)象賦值給變量nsObject;

  • 然后獲取nsObject對(duì)象的Children屬性得到子對(duì)象列表;也可以基于父對(duì)象中子對(duì)象的枚舉類型,使用GetChildren方法獲得子對(duì)象列表,方法需要傳入兩個(gè)參數(shù):①枚舉類型(DataModelObjectCategory),指定要查找的對(duì)象的類別。②布爾類型,指定是否遞歸地檢索子類。

  • 獲得子對(duì)象列表之后,將其賦值給nsList變量。

  • 最后通過nsList的列表索引訪問子對(duì)象;獲得子對(duì)象之后,我們可以訪問它們的Name屬性,然后在控制臺(tái)打印出來(lái),代碼和結(jié)果如下。# 獲取Named Selections實(shí)例對(duì)象nsObject = Model.NamedSelections

# 三種方法獲取Named Selections對(duì)象的子對(duì)象列表

nsList = nsObject.Children

nsList = nsObject.GetChildren(DataModelObjectCategory.NamedSelection,True)

nsList = DataModel.GetObjectsByType(DataModelObjectCategory.NamedSelection)

# 列表索引方式獲得子對(duì)象實(shí)例

nsFixed = nsObject.Children[0]

nsPress = nsObject.Children[1]

nsBracket = nsObject.Children[2]

# 訪問子對(duì)象的Name屬性,打印到控制臺(tái)

print?nsFixed.Name, nsPress.Name, nsBracket.Name

  • 上面代碼中,我們通過列表索引獲取子對(duì)象,同樣也能通過其名稱引用子對(duì)象實(shí)例,封裝的代碼方法如下:

  • # 給定Named Selection名稱獲取子對(duì)象實(shí)例def?GetLocByName(ns_name):

for?ns?in?Model.NamedSelections.Children:

if?ns.Name == ns_name:?return?ns

nsFixed = GetLocByName("FixedSurface")

nsPress = GetLocByName("PressSurface")

nsBracket=GetLocByName("BracketBody")

2.5添加子對(duì)象Mechanical結(jié)構(gòu)樹中的第一級(jí)對(duì)象都可作為父對(duì)象添加子對(duì)象;在界面上我們可以選中父對(duì)象,然后單擊右鍵會(huì)出現(xiàn)菜單,選擇Insert項(xiàng)下的子菜單項(xiàng)就可添加子對(duì)象。

ACT自動(dòng)化API中,要想添加子對(duì)象到結(jié)構(gòu)樹中,首先要獲得其父對(duì)象實(shí)例,然后調(diào)用父對(duì)象的addObjectName()方法,其中ObjectName是所需對(duì)象的名稱;最后需要設(shè)置子對(duì)象的屬性參數(shù)。

例如,我們?cè)陟o結(jié)構(gòu)(Static Structure)分析下添加一個(gè)Force載荷,可輸入以下代碼:

#1.To get the static structural analysis object, type:

analysisObj = Model.Analyses[0]

#2.To create the force and assign it to a variable, type AddForce()

force = analysisObj.AddForce()

#3.Nowwecanmanipulatethecreatedforce'spropertyusing

force.TypeHereAProperty=TypeHerePropertyValue


2.6修改對(duì)象屬性
一旦我們獲得Mechanical對(duì)象的實(shí)例后,就可以在ACT控制臺(tái)中,通過腳本命令讀取和修改界面上詳細(xì)視圖(Details View)中對(duì)應(yīng)的屬性參數(shù)。在Mechanical中屬性值常見的有6種輸入類型:Number、Enumeration、Bool、Quantity、Scoping和Magnitude,下面我們?cè)敿?xì)介紹一下使用方法。(1) Number值類型對(duì)象詳細(xì)視圖下需要輸入無(wú)單位數(shù)值的項(xiàng),屬性值應(yīng)該賦予對(duì)應(yīng)Number值類型,如int整形。例如更改分析設(shè)置中的計(jì)算步數(shù),輸入如下。

(2) Enumeration值類型
對(duì)象詳細(xì)視圖中提供下拉框選擇的選項(xiàng),屬性值應(yīng)賦予對(duì)應(yīng)的Enumeration值類型,如下設(shè)置屬性SolverType值為SolverType.Direct枚舉類型。

(3) Bool值類型對(duì)象詳細(xì)視圖中需要只選擇OnOff的選項(xiàng),屬性值應(yīng)賦予對(duì)應(yīng)的Bool類型。比如激活分析設(shè)置中的大變形選項(xiàng),輸入如下。

(4) Quantity值類型

對(duì)象詳細(xì)視圖中需要輸入帶單??數(shù)值的項(xiàng),屬性值應(yīng)賦予對(duì)應(yīng)的Quality類型:類型為Quantity(‘value[unit]’)。例如,更改網(wǎng)格單元格尺寸為2mm,輸入如下。

(5) Scoping值類型
對(duì)象詳細(xì)視圖中Scope組中需要指定Geometry的項(xiàng),對(duì)象的Location屬性應(yīng)賦予對(duì)應(yīng)的Scoping值類型。Mechanical提供兩種指定方式:Geometry Selection和Named Selection。例如,添加一個(gè)Pressure載荷,并指定加載的邊界位置,我們采用兩種方式實(shí)現(xiàn),輸入如下。

  • Geometry Selection選擇:需要先創(chuàng)建一個(gè)SelectionInfo對(duì)象,然后將幾何實(shí)體賦予SelectionInfo對(duì)象的Entities屬性,最后指定給壓力載荷對(duì)象的Location屬性。

  • Named Selection選擇:需要得到Named Selections下子對(duì)象的實(shí)例,然后指定給壓力載荷對(duì)象的Location屬性。

(6) Magnitude值類型對(duì)象詳細(xì)視圖中需要輸入Magnitude值的項(xiàng),屬性值應(yīng)賦予Magnitude值類型;Mechanical中提供三種輸入模式:①公式輸入②表格數(shù)據(jù)③常數(shù)類型。例如,我們繼續(xù)以(5)中的壓力載荷對(duì)象,給定載荷數(shù)值大小。

  • 公式輸入

  • 表格數(shù)據(jù)

  • 常數(shù)類型

2.7輸出云圖

云圖輸出首先需要?jiǎng)?chuàng)建后處理對(duì)象,然后激活對(duì)象讓其高亮顯示,最后使用Graphics.ExportImage方法,指定輸出的圖片路徑即可。例如,我們創(chuàng)建一個(gè)總變形云圖,然后輸出照片,代碼示例如下。

total_deform=Model.Analyses[0].Solution.AddTotalDeformation()total_deform.EvaluateAllResults()total_deform.Activate()Graphics.ExportImage("E:\\Workdata\\total.png")3、Workbench集成Workbench腳本中可以通過SendCommand命令將ACT Python命令發(fā)送Mechanical去執(zhí)行,以實(shí)現(xiàn)仿真流程的集成,代碼示例如下所示。

4、案例練習(xí)

本期中我們可以基于SCDM腳本建模生成的模型,在Mechanical中使用ACT Python腳本實(shí)現(xiàn)自動(dòng)化仿真分析。

使用SCDM創(chuàng)建模型和Mechanical仿真設(shè)置過程大家可以參照上一篇文章,然后參照本期內(nèi)容,自己上手編寫自動(dòng)化腳本吧。


領(lǐng)取鏈接及位置:

https://www.fangzhenxiu.com/share/activity/giftNew?id=117&checkCode=FLLB506675368

領(lǐng)取方式:點(diǎn)擊鏈接,輸入手機(jī)號(hào),獲取網(wǎng)盤資料群,掃碼進(jìn)群,打開下圖位置,即可領(lǐng)取~


輕松上手Mechanical腳本自動(dòng)化的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
伊春市| 北辰区| 台江县| 陇西县| 永修县| 嵊州市| 大洼县| 嘉善县| 雅安市| 县级市| 定结县| 南皮县| 新建县| 农安县| 岱山县| 沁源县| 内黄县| 乌兰察布市| 沂南县| 万全县| 安平县| 天长市| 喀喇| 永德县| 缙云县| 沁水县| 宣武区| 中超| 日土县| 南澳县| 邮箱| 凉山| 靖西县| 台中县| 万源市| 兴隆县| 大埔区| 大庆市| 子长县| 仲巴县| 门源|