import FreeCAD as App import FreeCADGui as Gui import Part from .job import LaserJob, ViewProviderLaserJob from .pad import LaserPad, create_laserpad class CreateCladdingJob(): def Activated(self): # Here your write what your ScriptCmd does... App.Console.PrintMessage('Create Lasser Cladding Job') a=App.ActiveDocument.addObject("App::FeaturePython","LaserJob") LaserJob(a) ViewProviderLaserJob(a.ViewObject) def GetResources(self): return {'Pixmap' : 'path_to_an_icon/myicon.png', 'MenuText': 'Create Cladding Job', 'ToolTip': 'Add a Job to your Document'} class SelectBaseReference(): def Activated(self): # Here your write what your ScriptCmd does... App.Console.PrintMessage('Select Base reference!') if not Gui.Selection.hasSelection(): App.Console.PrintMessage('Select a Vertex') return # check length selection = Gui.Selection.getSelectionEx() # find first vertex for s in selection: if s.HasSubObjects: for obj in s.SubObjects: if isinstance(obj, Part.Vertex): vertex = obj.copy() laserjob_entry = App.ActiveDocument.getObject('LaserJob') if laserjob_entry is None: App.Console.PrintMessage('Create a LaserJob first') return laserjob_entry.base_reference = App.Vector((vertex.X, vertex.Y, vertex.Z)) App.ActiveDocument.recompute() def GetResources(self): return {'Pixmap' : 'path_to_an_icon/myicon.png', 'MenuText': 'Select Base reference', 'ToolTip': 'Add a Job to your Document'} class CreatePad(): def Activated(self): # Here your write what your ScriptCmd does... App.Console.PrintMessage('Select some Face as reference') if not Gui.Selection.hasSelection(): App.Console.PrintMessage('Select a Face') return # check length ref_face = (Gui.Selection.getSelection()[0], Gui.Selection.getSelectionEx()[0].SubElementNames[0]) #selection = Gui.Selection.getSelectionEx() # find first vertex #for s in selection: # if s.HasSubObjects: # for obj in s.SubObjects: # if isinstance(obj, Part.Face): # face = obj.copy() create_laserpad(ref_face) App.ActiveDocument.recompute() def GetResources(self): return {'Pixmap' : 'path_to_an_icon/myicon.png', 'MenuText': 'Select Base reference', 'ToolTip': 'Add a Job to your Document'} Gui.addCommand('CreateCladdingJob', CreateCladdingJob()) Gui.addCommand('SelectBaseReference', SelectBaseReference()) Gui.addCommand('CreatePad', CreatePad())