Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

ASCIIファイルをstlファイルにする 一連の面倒な操作はPythonのマクロ でやってしまおう

Slide 3

Slide 3 text

メッシュは削除

Slide 4

Slide 4 text

stlファイル出力したい面だけ 「bc:」と頭に付ける

Slide 5

Slide 5 text

「マクロ」>「マクロ…」 「export_stl.py」を以下に保存 or 編集 C:/ユーザ名/AppData/Roaming/FreeCAD/Macro

Slide 6

Slide 6 text

export_stl.py import os import Mesh import MeshPart # 現在のディレクトリ PWD = r'C:¥work¥openfoam¥20220929_FreeCAD_stl¥stl' print('現在のディレクトリ:',PWD) labels = [] doc = App.ActiveDocument print(doc) for obj in doc.Objects: if obj.Label[0:3] == 'bc:': mesh = doc.addObject("Mesh::Feature", "Mesh") print(mesh) # mefisto #mesh.Mesh = MeshPart.meshFromShape(Shape=obj.Shape, MaxLength=10) # standard mesh.Mesh = Mesh.Mesh(obj.Shape.tessellate(0.01)) print(mesh.Mesh) label = obj.Label[3:] labels.append(label) Mesh.export([mesh], fr'{PWD}/{label}.ast') print(label) doc.removeObject(mesh.Name) print(doc.Label) print(labels, type(labels)) with open(rf'{PWD}/{doc.Label}.stl', 'w') as f: print('test') for label in labels: with open(rf'{PWD}/{label}.ast', 'r') as fi: for line in fi: if line[:5] == 'solid': line = 'solid ' + label + '¥n' elif line[:8] == 'endsolid': line = 'endsolid ' + label + '¥n' f.write(line) for label in labels: os.remove(rf'{PWD}/label.ast') 中身の編集 「export_stl.py」を実行 stlファイルが出力