Abaqus:利用python實現模型的參數化快速創建
2026年11月9日
AI 生成·可能包含錯誤
視頻概述
AI 生成本视频详细介绍了如何利用 Python 脚本在 Abaqus/CAE(视频中称为 apex)中实现模型的参数化创建。通过提取软件自动生成的 RPY 记录文件,用户可以将手动建模操作转化为可重复执行的 Python 函数,从而高效地进行大规模仿真分析和参数化设计,避免重复建模带来的时间浪费。
大家好,今天咱們講一期如何用python實現apex當中的一個模型的創建,
其實呢,因爲最近在做這個仿真的過程中呢,需要用到這個python,
然後呢,就學習了一下,就發現了這個python呢,
其實在利用apex進行仿真的過程中呢,如果會用,
甚至是非常熟悉的話,對你這個仿真工作是有很大的幣益,
包括提高效率,節省這個時間,是非常好的,
特別是對這種大規模的insight,甚至是這種參數化的設計,
比你重複性的建模呢,是要省很多的這個時間和精力的,
那我們開始講,話不多說,那首先我們打開這個apex,
我們可以看一下我們設置的工作的目錄是在C盤當中,
我們可以看一下,C盤有一個日期,我們打開之後呢,
就是你只要打開這個apex,它就會在你的工作目錄當中,
生成一個RPY的這麼一個後綴的一個文件,我們打開可以看一下,
這是你打開這個apex,它所生成的一些這個命令,
那隨着其實隨着我們這個後續的這個模型的創建,
它會生成一些更多的一些命令,
那我們就是要基於我們操作完成之後,
所生成的命令進行一個模型的參數化設計,
那我們開始進入正題,那我們用的模型的比較簡單,
大家可以照葫蘆畫瓢,這個照搬操作就可以了,
首先我們創建一個簡單的模型,創建一個矩形,
採用兩點創建,一個點是00,第二個點是5050,
創建完成之後,我們帶在它的內部創建一個圓,
圓心是25,再創建一個15,25,
也就是圓心在這個正方形的中心半徑是10,
完成之後呢,創建一個拉伸的一個厚度是10,
這樣呢,關於這一個簡單的模型,我們就創建完成了,
當然大家在做仿真的過程中,如果你的模型是什麼樣的,
你就去創建完成之後,就可以了,
你會發現它需要你去更新你的生成的API的文件,
你寫reload,它就會把你剛纔的操作就會記錄在內,
我們可以看一下,我們剛纔創建的圓的圓心的座標,
這個長方形的點的創建都記錄在內了,
所以說你如果你的模型是什麼樣的,也會在這之內,
這樣呢,如果我們想進行參數化的設計,
僅限於模型的變化的話,那到這一步我們就可以截止了,
這也是我們今天要講的一個內容,
創建完成之後,我們就可以進行一個在它的基礎上進行一個修改,
重新定義函數,實現我們的這個模型的參數化設計,
就是我們先新創建一個,把我們所需要的命先copy過來,
領存爲paste格式的一個文件,看一下,
這是我們創建的,剛纔創建的這個文件,
它不顯示,我再重新試一下,
好,這樣就可以了,它的顏色和它的顏色匹配起來,
我們再重新的保存一下,替換一下就可以了,
然後,創建完之後呢,我們再來找我們需要的命令,
從這一部分開始,下面有個a new model database has been created,
對吧,從這下面開始有個s,然後一直到dl,
到這一行,將這幾行的命令copy過來,
然後這種對於這模型呢,都把它放在同一行就可以了,
然後我們再去刪掉我們不需要的,
包括這個session viewports,我們不需要,刪掉,
以及下面的session viewports,也不需要,刪掉,
那現在呢,我們就把我們需要的這個命令呢,流傳了下來,
下面呢,我們就開始要去定義我們要的函數,
如何通過函數實現模型的一個快速創建,
也就是先是創建,創建function,
我們是選擇create,
然後呢,我們知道我們是這個模型創建是一個正方形,
一個圓形加一個厚度,那我們對它的變量呢,
我們對這個板的長度,以及圓的半徑,
以及它的拉伸的厚度,作爲一個變量進行創建,
當然了實際過程中呢,你的變量可能是一個,
可能是兩個,甚至可能更多,
所以說呢,需要大家去定義一個不同的變量來表示,
它的一些這個,這個模型的,幾何模型的一些參數,
比如說我們這個長度,我們就用length來表示,
它的半徑, radius,
然後它的厚度呢, thickness,
創建,我們要創建part,
然後要創建model,
這樣我們就可以定義好了我們的函數,
不要忘記冒號,
給它手環縮近一下,
那同理,如果我們這些地方都要變化的話,
我們就給它替換一下,
這樣呢,我們在改數值的過程中呢,
它這個就會相應的有一個負值,
20,我們的半徑是10,25,
radius改成thickness,
好,這樣我們需要,
作爲變量的一些數值呢,進行了一個替換,
替換完成之後,
再來定義我們的變量,
首先是我們創建的我們的模型,
我們用myName來表示,
比如說我這個創建的這個板是用來進行一個應力分析的,
我們再來看,
長度用myLength,
比如說我們長度是剛纔是50對吧,
50.0,myRadius,10.0,myThickness,
這是我們要創建的,
和我們剛纔的參數是一樣的,
Model的Name等於myName,
這就是Stress Analysis對吧,
然後,
我們是PlateWithHole,
創建完成之後,
再去一個函數,
再去Create,
創建一個板材,帶中心框的板材,
上面是有5個編量,
我們要創建的也需要賦予5個編量對吧,
這5個編量是由它來的,
那就是myLength,myRadius,myThickness,myPart,
以及myModelName,
好,這樣創建完成,
我們還需要做的修改就是這個地方,
Model是選中,
然後選擇替換,
替換成Model,
全部替換,
以及這個Part也要替換掉,
替換成平,
好,我們檢查一下,
我們現在的模型的變量是Length,Radius,Thickness,
然後下面我們所有的數值都進行了一個對應的變換,
都用變量來代替了,
變量的數值通過下面我定義的這些變量進行一個替換,
12345,
我們來運行一下,
重新創建一個空的模板,
我們保存一下我們這個,
運行,
有個Run Script,
運行腳本,
這個沒保存嗎?
好,我們可以看到,
這就是我們這地方運行完我們的腳本,
我們這個Plate Hold腳本之後,
我們發現生成了一個什麼,
在Model下面生成了一個Stress Analysis的一個Model名字,
也就是我們這個地方定義的,
我們找到這個地方,
有一個Part對吧,
我們的Part命名就是什麼,
Plate Hold,
這個模型就出來了,
當然了,
這個地方如果你不去定義這個地方的話,
你可以在它的基礎上,
只把這個地方拿出來,
這部分的內容拿出來,
然後呢,
把這個裏邊的數值進行修改,
因爲命令太多,
比如說我需要修改的變量很大,
它的命令又比較多,
我要單個的去找就容易出錯,
我們只把我們要修改的這些變量,
我們自定義的變量,
也就是我們的字符串來代替,
然後我們把字符串集中到一個位置來,
然後我們就把這幾個變量進行修改,
那我們獲得的模型就是,
我們想進行修改的一個模型,
比如說這個地方它的list是50,
那我可以改成100,
我們可以看一下它的一個變化,
然後當然這個命令,
還可以直接copy到右下角這個地方來,
選擇運行我們的命令,
重新運行一個,
好,
我們會發現,
此時的版的這個長度就變成了100了,
當然了它對應的孔也發生了變化,
如果我們想保持孔永遠在中心的位置的過程中,
我們可能就像對point1,
也做一個變量的定義,
讓這個孔永遠在它的一箇中間,
可能也通過一個方程或者表達式來變化,
那我們比如說再修改回50,
那我們可以把它的radius變化大一點,
改成20,
再來看一下,
保存,
重新創建一個新的,
然後再run script,
好,運行完之後,
找到我們的stress analysis,
然後下面就有一個plate hole,
好,
我們此時看到孔就很大了,
對吧,
然後同理我們的厚度,
我的孔變大之後,
我的需要的厚度也需要變小,
我需要變小,
我變成5,
可以嗎,
變成5,
不夠美,
這個s,
保存完之後,
再重新再run script,
plate hole,
就發現它的厚度,
就是我們的5毫米,
大家可能直觀的感受沒那麼明顯,
我們就可以用我們的測量工具,
來測量一下兩點之間的距離,
看一下,
distance是5,
也就是和我們當中的5是對應起來的,
所以說,
大家就完全,
如果你需要創建不同的模型,
進行一個有限的分析,
那你就可以把你創建完之後,
生成在工作目錄下的API文件,
單獨的創建模型的這部分,
進行提取,
然後,
進行一系列的處理,
包括定義函數,
定義變量之後,
就可以做一些簡單的修改,
就可以獲得我們的新的模型了,
就不需要大家再去在裏面,
再進行一步一步的去操作,
要費時費力,
對於你像做這個切換房間的,
我喜歡,
不是我喜歡了,
是我本身是做切換房間的,
那我的刀具的幾何角度,
甚至它的刃口鈍圓半徑,
可能都要發生變化,
那我們就可以在這裏邊,
創建一個刀具的幾何模型之後,
我們創建,
利用pass進行一個這樣一個函數的定義,
變量的一個複製,
就可以實現刀具幾何角度,
刃口半徑的一個快速的建模,
實現我們後續的一個分析,
當然了,
這只是其中的一部分,
對於每一個模塊,
包括我們的property,
step,
interaction,
load,
mesh,
每一個模塊,
其實你在進行一個完整的有限房間之後,
它都會生成一個,
都在裏邊,
都有一部分對應的內容,
因爲我在我們建立的google群裏邊,
發了一個文件,
就是在一個小時之內學會用apex,
這是一個外國人寫的,
當然它也很簡單,
它就是把我們創建模型當中的每一個模塊都進行了一個分割,
就是如果你要創建模型,
那你就要對這一部分的內容進行一個,
也就是我們這樣的一個pattern處理,
如果你想要進行一個材料屬性的變化,
你就要進行材料屬性這一部分的一個程序的編寫,
提取編寫,
如果你想要進行一個分析部的定義,
你想要相互作用,
以及網絡的劃分,
你都可以單純的提取出來,
如果我想完全脫離我們的,
比如說我建完一個流程之後,
我想突然完全脫離再去創建,
那我們就可以把整個的,
從模型的創建一直到Job的提交,
整個的模塊提取出來,
把某一部分in person寫成這個程序,
只把我們的變量的部分提取出來,
這個變量這部分進行一個定義,
就可以完全運行之後,
你就不需要再去一步一步的點擊鍵盤了,
好,那關於這個in person進行創建模型,
快速的創建模型,
以及參數化的設計,
我們就先講到這兒,
後續我們可以再講一下,
in person進行Apex的二次開發的過程當中,
再講其他的,
好,那今天的內容就講到這兒。

