Macro creation
Open a new file in Part Design workbench. You should see four icons:- "Open a dialog to record a macro" - red circle
- "Stop the macro recording session" - (inactive) square
- "Opens a dialog to let you execute a recorded macro" - notepad icon
- "Execute the macro in the editor" - (inactive) triangle
Click on the "Open a dialog to record a macro" and fill "Macro name" field. Click on the Record button, macro recording will start.
Sketch a rectangle as above image on the plane XY. It would be ring section.
Revolve section around Y axis with angle 359.5 deg (ring needs a small gap). Important: set base in the Property view to [0,0,0]. Now you should see finished piston ring model. You can stop macro recording - click on the "Stop the macro recording session" icon.
# Macro Begin: /home/adi/.FreeCAD/piston-ring1.FCMacro +++++++++++++++++++++++++++++++++++++++++++++++++
import FreeCAD
import Sketcher
import PartDesign
App.activeDocument().addObject('Sketcher::SketchObject','Sketch')
App.activeDocument().Sketch.Placement = App.Placement(App.Vector(0.000000,0.000000,0.000000),App.Rotation(0.000000,0.000000,0.000000,1.000000))
#Gui.activeDocument().activeView().setCamera('#Inventor V2.1 ascii \n OrthographicCamera { \n viewportMapping ADJUST_CAMERA \n position 0 0 87 \n orientation 0 0 1 0 \n nearDistance 37 \n farDistance 137 \n aspectRatio 1 \n focalDistance 87 \n height 119 }')
#Gui.activeDocument().setEdit('Sketch')
App.ActiveDocument.Sketch.addGeometry(Part.Line(App.Vector(-90.364075,7.014562,0),App.Vector(-76.830093,7.014562,0)))
App.ActiveDocument.Sketch.addGeometry(Part.Line(App.Vector(-76.830093,7.014562,0),App.Vector(-76.830093,0.082527,0)))
App.ActiveDocument.Sketch.addGeometry(Part.Line(App.Vector(-76.830093,0.082527,0),App.Vector(-90.364075,0.082527,0)))
App.ActiveDocument.Sketch.addGeometry(Part.Line(App.Vector(-90.364075,0.082527,0),App.Vector(-90.364075,7.014562,0)))
App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Coincident',0,2,1,1))
App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Coincident',1,2,2,1))
App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Coincident',2,2,3,1))
App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Coincident',3,2,0,1))
App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Horizontal',0))
App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Horizontal',2))
App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Vertical',1))
App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('Vertical',3))
#App.ActiveDocument.recompute()
App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('DistanceX',1,2,-76.830093))
App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('DistanceY',1,2,0.082527))
#App.ActiveDocument.recompute()
App.ActiveDocument.Sketch.setDatum(9,0.000000)
App.ActiveDocument.Sketch.setDatum(8,34.800000)
App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('DistanceX',2,2,-90.364075))
App.ActiveDocument.Sketch.setDatum(10,37.500000)
App.ActiveDocument.Sketch.addConstraint(Sketcher.Constraint('DistanceY',2,2,0,1,7.014562))
App.ActiveDocument.Sketch.setDatum(11,1.750000)
#Gui.activeDocument().resetEdit()
App.ActiveDocument.recompute()
App.activeDocument().addObject("PartDesign::Revolution","Revolution")
App.activeDocument().Revolution.Sketch = App.activeDocument().Sketch
App.activeDocument().Revolution.Base = App.Vector(37.600000,1.850000,0.100000)
App.activeDocument().Revolution.Axis = App.Vector(0.000000,1.000000,0.000000)
App.activeDocument().Revolution.Angle = 360.0
#App.ActiveDocument.recompute()
#Gui.activeDocument().hide("Sketch")
App.activeDocument().getObject("Revolution").Angle = 359.50
App.activeDocument().getObject("Revolution").Base = (0.00, 0.00, 0.00)
# Macro End: /home/adi/.FreeCAD/piston-ring1.FCMacro +++++++++++++++++++++++++++++++++++++++++++++++++
Your icon, your toolbar
If you created an amazing macro you need your custom shortcut:) Open dialog window from the "Tools-Customize" menu.At the end you can see your icon (football in the example) in one of the FreeCAD toolbars. Click it to execute macro.
More?
You can try:- modify created macros,
- put scripts fro older posts as macros,
- use PyQT to extend graphical interface,
- use external modules in macros, eg. oosheet, pyODE,
- and much more!
Download file.
Download RAW Video.
FreeCAD 0.12 5017 SVN
This is probably the last "FreeCAD: engine tutorial" post before FreeCAD 0.12 stable release.
No comments:
Post a Comment