You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.9 KiB
110 lines
3.9 KiB
import FreeCAD as App |
|
|
|
|
|
class LaserJob: |
|
def __init__(self, obj): |
|
'''Add some custom properties to our box feature''' |
|
obj.addProperty("App::PropertyVector", "base_reference", "Reference", "Reference Point (teached)") |
|
obj.base_reference = App.Vector(0,0,0) |
|
|
|
## to make addObject() available |
|
obj.addExtension("App::GroupExtensionPython", None) |
|
obj.Proxy = self |
|
|
|
def addObject(self, obj): |
|
self.pads = [obj] |
|
|
|
def onChanged(self, fp, prop): |
|
'''Do something when a property has changed''' |
|
App.Console.PrintMessage("Change property: " + str(prop) + "\n") |
|
|
|
def execute(self, fp): |
|
'''Do something when doing a recomputation, this method is mandatory''' |
|
App.Console.PrintMessage("Recompute Python Box feature\n") |
|
|
|
|
|
|
|
|
|
|
|
class ViewProviderLaserJob: |
|
def __init__(self, obj): |
|
'''Set this object to the proxy object of the actual view provider''' |
|
obj.addProperty("App::PropertyColor","Color","Box","Color of the box").Color=(1.0,0.0,0.0) |
|
|
|
obj.addExtension("Gui::ViewProviderGroupExtensionPython", None) |
|
|
|
obj.Proxy = self |
|
|
|
def attach(self, obj): |
|
'''Setup the scene sub-graph of the view provider, this method is mandatory''' |
|
self.onChanged(obj,"Color") |
|
|
|
def updateData(self, fp, prop): |
|
'''If a property of the handled feature has changed we have the chance to handle this here''' |
|
# fp is the handled feature, prop is the name of the property that has changed |
|
pass |
|
|
|
def getDisplayModes(self,obj): |
|
'''Return a list of display modes.''' |
|
modes=[] |
|
modes.append("Shaded") |
|
modes.append("Wireframe") |
|
return modes |
|
|
|
def getDefaultDisplayMode(self): |
|
'''Return the name of the default display mode. It must be defined in getDisplayModes.''' |
|
return "Shaded" |
|
|
|
def setDisplayMode(self,mode): |
|
'''Map the display mode defined in attach with those defined in getDisplayModes.\ |
|
Since they have the same names nothing needs to be done. This method is optional''' |
|
return mode |
|
|
|
def onChanged(self, vp, prop): |
|
'''Here we can do something when a single property got changed''' |
|
App.Console.PrintMessage("Change property: " + str(prop) + "\n") |
|
#if prop == "Color": |
|
# c = vp.getPropertyByName("Color") |
|
# self.color.rgb.setValue(c[0],c[1],c[2]) |
|
|
|
def getIcon(self): |
|
'''Return the icon in XPM format which will appear in the tree view. This method is\ |
|
optional and if not defined a default icon is shown.''' |
|
return """ |
|
/* XPM */ |
|
static const char * ViewProviderBox_xpm[] = { |
|
"16 16 6 1", |
|
" c None", |
|
". c #141010", |
|
"+ c #615BD2", |
|
"@ c #C39D55", |
|
"# c #000000", |
|
"$ c #57C355", |
|
" ........", |
|
" ......++..+..", |
|
" .@@@@.++..++.", |
|
" .@@@@.++..++.", |
|
" .@@ .++++++.", |
|
" ..@@ .++..++.", |
|
"###@@@@ .++..++.", |
|
"##$.@@$#.++++++.", |
|
"#$#$.$$$........", |
|
"#$$####### ", |
|
"#$$#$$$$$# ", |
|
"#$$#$$$$$# ", |
|
"#$$#$$$$$# ", |
|
" #$#$$$$$# ", |
|
" ##$$$$$# ", |
|
" ####### "}; |
|
""" |
|
|
|
def __getstate__(self): |
|
'''When saving the document this object gets stored using Python's json module.\ |
|
Since we have some un-serializable parts here -- the Coin stuff -- we must define this method\ |
|
to return a tuple of all serializable objects or None.''' |
|
return None |
|
|
|
def __setstate__(self,state): |
|
'''When restoring the serialized object from document we have the chance to set some internals here.\ |
|
Since no data were serialized nothing needs to be done here.''' |
|
return None
|
|
|