def __init__(self): color = coin.SoBaseColor() color.rgb = FreeCADGui.draftToolBar.getDefaultColor("snap") self.marker = coin.SoMarkerSet() # this is the marker symbol self.marker.markerIndex = FreeCADGui.getMarkerIndex("", 9) self.coords = coin.SoCoordinate3() # this is the coordinate self.coords.point.setValue((0,0,0)) node = coin.SoAnnotation() node.addChild(self.coords) node.addChild(color) node.addChild(self.marker) Tracker.__init__(self,children=[node],name="snapTracker")
def onChanged(self,vobj,prop): if prop == "ShowNodes": if hasattr(self,"nodes"): vobj.Annotation.removeChild(self.nodes) del self.nodes if vobj.ShowNodes: from pivy import coin self.nodes = coin.SoAnnotation() self.coords = coin.SoCoordinate3() self.mat = coin.SoMaterial() self.pointstyle = coin.SoDrawStyle() self.pointstyle.style = coin.SoDrawStyle.POINTS self.pointset = coin.SoType.fromName("SoBrepPointSet").createInstance() self.linestyle = coin.SoDrawStyle() self.linestyle.style = coin.SoDrawStyle.LINES self.lineset = coin.SoType.fromName("SoBrepEdgeSet").createInstance() self.facestyle = coin.SoDrawStyle() self.facestyle.style = coin.SoDrawStyle.FILLED self.shapehints = coin.SoShapeHints() self.shapehints.faceType = coin.SoShapeHints.UNKNOWN_FACE_TYPE self.fmat = coin.SoMaterial() self.fmat.transparency.setValue(0.75) self.faceset = coin.SoIndexedFaceSet() self.nodes.addChild(self.coords) self.nodes.addChild(self.mat) self.nodes.addChild(self.pointstyle) self.nodes.addChild(self.pointset) self.nodes.addChild(self.linestyle) self.nodes.addChild(self.lineset) self.nodes.addChild(self.facestyle) self.nodes.addChild(self.shapehints) self.nodes.addChild(self.fmat) self.nodes.addChild(self.faceset) vobj.Annotation.addChild(self.nodes) self.updateData(vobj.Object,"Nodes") self.onChanged(vobj,"NodeColor") self.onChanged(vobj,"NodeLine") self.onChanged(vobj,"NodeSize") elif prop == "NodeColor": if hasattr(self,"mat"): l = vobj.NodeColor self.mat.diffuseColor.setValue([l[0],l[1],l[2]]) self.fmat.diffuseColor.setValue([l[0],l[1],l[2]]) elif prop == "NodeLine": if hasattr(self,"linestyle"): self.linestyle.lineWidth = vobj.NodeLine elif prop == "NodeSize": if hasattr(self,"pointstyle"): self.pointstyle.pointSize = vobj.NodeSize elif prop == "NodeType": self.updateData(vobj.Object,"Nodes") else: ArchComponent.ViewProviderComponent.onChanged(self,vobj,prop)
def __init__(self): color = coin.SoBaseColor() color.rgb = FreeCADGui.DDADockWidget.getDefaultColor("snap") self.marker = coin.SoMarkerSet() # this is the marker symbol self.marker.markerIndex = coin.SoMarkerSet.CIRCLE_FILLED_9_9 self.coords = coin.SoCoordinate3() # this is the coordinate self.coords.point.setValue((0, 0, 0)) node = coin.SoAnnotation() node.addChild(self.coords) node.addChild(color) node.addChild(self.marker) Tracker.__init__(self, children=[node])
def highlight_editable_objects(self): """Highlight editable Draft objects from the selection.""" for obj in self.editable_objects: self.original_view_settings[obj.Name] = { 'Visibility': obj.ViewObject.Visibility, 'PointSize': obj.ViewObject.PointSize, 'PointColor': obj.ViewObject.PointColor, 'LineColor': obj.ViewObject.LineColor} obj.ViewObject.Visibility = True obj.ViewObject.PointSize = 10 obj.ViewObject.PointColor = (1.0, 0.0, 0.0) obj.ViewObject.LineColor = (1.0, 0.0, 0.0) xray = coin.SoAnnotation() xray.addChild(obj.ViewObject.RootNode.getChild(2).getChild(0)) xray.setName("xray") obj.ViewObject.RootNode.addChild(xray)
def attach(self,vobj): self.Object = vobj.Object # adding arrows rn = vobj.RootNode self.col = coin.SoBaseColor() self.setColor() ds = coin.SoDrawStyle() ds.style = coin.SoDrawStyle.LINES self.lcoords = coin.SoCoordinate3() ls = coin.SoLineSet() ls.numVertices.setValues([2,4,4,2,4,4,2,4,4,2,4,4]) pt = coin.SoAnnotation() pt.addChild(self.col) pt.addChild(ds) pt.addChild(self.lcoords) pt.addChild(ls) rn.addChild(pt) self.setVerts()
def __init__(self, pos, object_name, node_name, marker_type, marker_size): self.pos = pos self.name = node_name self.inactive = False self.color = coin.SoBaseColor() self.marker = coin.SoMarkerSet() self.marker.markerIndex = Gui.getMarkerIndex(marker_type, marker_size) self.coords = coin.SoCoordinate3() self.coords.point.setValue((pos.x, pos.y, pos.z)) selnode = None if self.inactive: selnode = coin.SoSeparator() else: selnode = coin.SoType.fromName("SoFCSelection").createInstance() selnode.documentName.setValue(App.ActiveDocument.Name) selnode.objectName.setValue(object_name) selnode.subElementName.setValue(node_name) node = coin.SoAnnotation() selnode.addChild(self.coords) selnode.addChild(self.color) selnode.addChild(self.marker) node.addChild(selnode) ontop = not self.inactive Tracker.__init__( self, children=[node], ontop=ontop, name="EditTracker") self.on()
def __init__(self, pos=Vector(0, 0, 0), name="None", idx=0, objcol=None): color = coin.SoBaseColor() if objcol: color.rgb = objcol[:3] else: color.rgb = FreeCADGui.draftToolBar.getDefaultColor("snap") self.marker = coin.SoMarkerSet() # this is the marker symbol self.marker.markerIndex = coin.SoMarkerSet.SQUARE_FILLED_9_9 self.coords = coin.SoCoordinate3() # this is the coordinate self.coords.point.setValue((pos.x, pos.y, pos.z)) selnode = coin.SoType.fromName("SoFCSelection").createInstance() selnode.documentName.setValue(FreeCAD.ActiveDocument.Name) selnode.objectName.setValue(name) selnode.subElementName.setValue("EditNode" + str(idx)) node = coin.SoAnnotation() selnode.addChild(self.coords) selnode.addChild(color) selnode.addChild(self.marker) node.addChild(selnode) Tracker.__init__(self, children=[node], ontop=True) self.on()
def __init__(self, pos=Vector(0, 0, 0), name=None, idx=0, objcol=None, marker=FreeCADGui.getMarkerIndex("quad", 9), inactive=False): self.color = coin.SoBaseColor() if objcol: self.color.rgb = objcol[:3] else: self.color.rgb = FreeCADGui.draftToolBar.getDefaultColor("snap") self.marker = coin.SoMarkerSet() # this is the marker symbol self.marker.markerIndex = marker self.coords = coin.SoCoordinate3() # this is the coordinate self.coords.point.setValue((pos.x, pos.y, pos.z)) if inactive: self.selnode = coin.SoSeparator() else: self.selnode = coin.SoType.fromName( "SoFCSelection").createInstance() if name: self.selnode.useNewSelection = False self.selnode.documentName.setValue(FreeCAD.ActiveDocument.Name) self.selnode.objectName.setValue(name) self.selnode.subElementName.setValue("EditNode" + str(idx)) node = coin.SoAnnotation() self.selnode.addChild(self.coords) self.selnode.addChild(self.color) self.selnode.addChild(self.marker) node.addChild(self.selnode) ontop = not inactive Tracker.__init__(self, children=[node], ontop=ontop, name="editTracker") self.on()