僕は機械設計の仕事において、軸を描くことが多く、その作業を効率化したいと考えています。
そこで、FreeCADを用いて軸設計のプロセスを自動化し、出力を迅速かつ精密に行えるようにすることを目指しています。
この取り組みにより、図面作成にかかる時間を削減し、他の重要な設計業務に集中できる環境を整えたいと考えています。
Pythonコンソールから円筒を1つ生成してみる
FreeCADのPart Designワークベンチを使用して、与えられたdia1とlen1パラメータから円筒を生成するPythonコードを作成します。
import FreeCAD as App
import FreeCADGui as Gui
from PySide import QtCore
dia1=10
len1=20
def create_cylinder(dia1, len1):
# アクティブなドキュメントを取得、なければ新規作成
try:
doc = App.activeDocument()
except:
doc = App.newDocument()
# Part Designワークベンチに切り替え
Gui.activateWorkbench("PartDesignWorkbench")
# 新しいボディを作成
body = doc.addObject('PartDesign::Body', 'Body')
# スケッチを作成
sketch = body.newObject('Sketcher::SketchObject', 'Sketch')
sketch.Support = (doc.XY_Plane, [''])
sketch.MapMode = 'FlatFace'
# 円を描画(原点中心)
sketch.addGeometry(Part.Circle(App.Vector(0,0,0), App.Vector(0,0,1), dia1/2))
# パッド(押し出し)を作成
pad = body.newObject('PartDesign::Pad', 'Pad')
pad.Profile = sketch
pad.Length = len1
# ビューの更新
doc.recompute()
Gui.activeDocument().activeView().viewAxonometric()
Gui.SendMsgToActiveView("ViewFit")
return body
# 使用例:
create_cylinder(dia1,len1 ) # 直径10mm、長さ20mmの円筒を生成
このスクリプトの主な機能は以下の通りです:
- アクティブなドキュメントを取得(なければ新規作成)
- Part Designワークベンチをアクティブ化
- 新しいBodyを作成
- スケッチを作成(XY平面上)
- 指定された直径の円を描画
- 指定された長さでパッド(押し出し)を実行
使用方法:
create_cylinder(dia1=10, len1=20) # 直径10mm、長さ20mmの円筒を生成
パラメータ:
dia1
円筒の直径(mm)len1
: 円筒の長さ(mm)
このスクリプトを実行すると、指定されたサイズの円筒がアクティブなBodyとして生成され、自動的に適切なビュー位置に調整されます。