Abaqus CAEで会社ロゴを自動でメッシュ分割する
EPLU(Engineering Process Leading Unit)のパルハットです。
以前仕事現場でCAE関連の業務に関わりました。今回それに関係する内容で書こうと思います。
CAE関連のソフトはたくさんありますが、今回はAbaqus14 Student Editionを使用して、簡単な会社ロゴ(iPXの文字)のメッシュをスクリプトで作ります。
Abaqusはスクリプト言語としてPython2.6を使用できます。Pythonは完全にオブジェクト指向の構造です。
AbaqusではPythonオブジェクトとしてSession, Mdb, Odbが提供されています。SessionオブジェクトにはViewportの定義、リモートキュー、ユーザ定義Views等を含みます。
Mdbオブジェクトはモデル情報を含みます。Odbオブジェクトは解析結果データ関連情報を含みます。プログラム作成手順は以下のとおりです。
- 初期定義とモデル定義
- 2次元スケッチ作成
- パート作成
- アセンブリ設定
- メッシュ作成
初期定義とモデル定義
from abaqus import * from abaqusConstants import * from caeModules import * # モデルオブジェクトの作成 Mdb() mdl = mdb.Model(name="Model-iPXLogo")
2次元スケッチ作成
# 2次元スケッチ作成 stk = mdb.models['Model-iPXLogo'].ConstrainedSketch(name='Sketch iPX', sheetSize=200.0) # i字の作成 # 指定座標に円を作成 stk.CircleByCenterPerimeter(center=(-12.5, 10.0), point1=(-10.0, 10.0)) #指定座標に長方形を作成 stk.rectangle(point1=(-15.0, 5.0), point2=(-10.0, -17.5)) # P字の作成 xyCoords=[[6.25, 12.5],[-5.0, 12.5],[-5.0, 12.5],[-5.0, -17.5],[-5.0, -17.5], [0.0, -17.5],[0.0, -17.5],[0.0, -2.5],[0.0, -2.5],[6.25, -2.5], [0.0, 2.5], [5.0, 2.5], [0.0, 2.5], [0.0, 7.5], [0.0, 7.5], [5.0, 7.5]] for i in range(0, len(xyCoords) - 1, 2): stk.Line(point1=xyCoords[i], point2=xyCoords[i+1]) stk.Arc3Points(point1=(5.0, 7.5), point2=(5.0, 2.5), point3=(7.5, 5.0)) stk.Arc3Points(point1=(6.25, 12.5), point2=(6.25, -2.5), point3=(12.5, 5.0)) # X字の作成 xyCoords1=[[15.0, 12.5],[23.75, -2.5],[23.75, -2.5],[15.0, -17.5],[15.0, -17.5],[20.0, -17.5], [20.0, -17.5],[27.5, -5.0],[15.0, 12.5],[20.0, 12.5],[20.0, 12.5],[27.5, 0.0], [27.5, 0.0],[35.0, 12.5],[35.0, 12.5],[40.0, 12.5],[40.0, 12.5],[31.25, -2.5], [31.25, -2.5],[40.0, -17.5],[40.0, -17.5],[35.0, -17.5],[35.0, -17.5],[27.5, -5.0]] for i in range(0, len(xyCoords1) - 1, 2): stk.Line(point1=xyCoords1[i], point2=xyCoords1[i+1])
作成されたスケッチ図は以下の通りです。
パート作成
#パートを作成します。 p = mdb.models['Model-iPXLogo'].Part(name='iPXLogo', dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-iPXLogo'].parts['iPXLogo'] p.BaseSolidExtrude(sketch=stk, depth=5.0) session.viewports['Viewport: 1'].setValues(displayedObject=p)
作成されたパート図は以下の通りです。
アセンブリ設定
# アセンブリにパートをインスタンス化します。 iPXAssambely = mdb.models['Model-iPXLogo'].rootAssembly iPXInstance = iPXAssambely.Instance(name="iPXLogo A-1", part=p, dependent=OFF)
作成されたアセンブリ図は以下の通りです。
メッシュ作成
# メッシュを作成します。 partInstances = [iPXInstance] iPXAssambely.seedPartInstance(regions=partInstances, size=2.0) iPXAssambely.generateMesh(regions=partInstances) # viewportでメッシュインスタンスを表示します。 iPXViewport = session.Viewport(name="ipx viewport", origin=(10,10), width=400, height=200) iPXViewport.assemblyDisplay.setValues(renderStyle=SHADED, mesh=ON) iPXViewport.setValues(displayObject=iPXAssambely)
作成されたメッシュ図は以下の通りです。
まとめ
今回Abaqusを使用して簡単なロゴを作成して、メッシュまで作りました。メッシュサイズをもっと小さくすると、刻みがきれいに出来ます。
次回は材料情報の追加と何らかの境界条件を追加して、解析コンター図まで出してみたいです。
参考情報
- http://www.jikosoft.com/cae/abaqus/index.html
- Abaqus14 Student Editionドキュメント(インストール時に一緒にインストールされます。)