def proceed(self): """Proceed with the command if one object was selected.""" if self.call: self.view.removeEventCallback("SoEvent", self.call) self.sel = Gui.Selection.getSelection()[0] if not self.sel.isDerivedFrom("Part::Feature"): _wrn(translate("draft", "Cannot offset this object type")) self.finish() else: self.step = 0 self.dvec = None self.npts = None self.constrainSeg = None self.ui.offsetUi() occmode = utils.param.GetBool("Offset_OCC", False) self.ui.occOffset.setChecked(occmode) self.linetrack = trackers.lineTracker() self.faces = False self.shape = self.sel.Shape self.mode = None if utils.getType(self.sel) in ("Circle", "Arc"): self.ghost = trackers.arcTracker() self.mode = "Circle" self.center = self.shape.Edges[0].Curve.Center self.ghost.setCenter(self.center) self.ghost.setStartAngle(math.radians(self.sel.FirstAngle)) self.ghost.setEndAngle(math.radians(self.sel.LastAngle)) elif utils.getType(self.sel) == "BSpline": self.ghost = trackers.bsplineTracker(points=self.sel.Points) self.mode = "BSpline" elif utils.getType(self.sel) == "BezCurve": _wrn( translate( "draft", "Offset of Bezier curves " "is currently not supported")) self.finish() return else: if len(self.sel.Shape.Edges) == 1: import Part if isinstance(self.sel.Shape.Edges[0].Curve, Part.Circle): self.ghost = trackers.arcTracker() self.mode = "Circle" self.center = self.shape.Edges[0].Curve.Center self.ghost.setCenter(self.center) if len(self.sel.Shape.Vertexes) > 1: _edge = self.sel.Shape.Edges[0] self.ghost.setStartAngle(_edge.FirstParameter) self.ghost.setEndAngle(_edge.LastParameter) if not self.ghost: self.ghost = trackers.wireTracker(self.shape) self.mode = "Wire" self.call = self.view.addEventCallback("SoEvent", self.action) _msg(translate("draft", "Pick distance")) if self.planetrack: self.planetrack.set(self.shape.Vertexes[0].Point) self.running = True
def Activated(self): """Execute when the command is called.""" name = translate("draft", "Dimension") if self.cont: self.finish() elif self.hasMeasures(): super(Dimension, self).Activated(name) self.dimtrack = trackers.dimTracker() self.arctrack = trackers.arcTracker() self.createOnMeasures() self.finish() else: super(Dimension, self).Activated(name) if self.ui: self.ui.pointUi(name) self.ui.continueCmd.show() self.ui.selectButton.show() self.altdown = False self.call = self.view.addEventCallback("SoEvent", self.action) self.dimtrack = trackers.dimTracker() self.arctrack = trackers.arcTracker() self.link = None self.edges = [] self.pts = [] self.angledata = None self.indices = [] self.center = None self.arcmode = False self.point2 = None self.force = None self.info = None self.selectmode = False self.setFromSelection() _msg(translate("draft", "Pick first point")) Gui.draftToolBar.show()
def initGhost(self, obj): """Initialize preview ghost.""" if utils.get_type(obj) == "Wire": return trackers.wireTracker(obj.Shape) elif utils.get_type(obj) == "BSpline": return trackers.bsplineTracker() elif utils.get_type(obj) == "BezCurve": return trackers.bezcurveTracker() elif utils.get_type(obj) == "Circle": return trackers.arcTracker()
def Activated(self): """Execute when the command is called.""" if self.cont: self.finish() elif self.selected_app_measure(): super(Dimension, self).Activated(name="Dimension") self.dimtrack = trackers.dimTracker() self.arctrack = trackers.arcTracker() self.create_with_app_measure() self.finish() else: super(Dimension, self).Activated(name="Dimension") if self.ui: self.ui.pointUi(title=translate("draft", self.featureName), icon="Draft_Dimension") self.ui.continueCmd.show() self.ui.selectButton.show() self.altdown = False self.call = self.view.addEventCallback("SoEvent", self.action) self.dimtrack = trackers.dimTracker() self.arctrack = trackers.arcTracker() self.link = None self.edges = [] self.angles = [] self.angledata = None self.indices = [] self.center = None self.arcmode = False self.point1 = None self.point2 = None self.proj_point1 = None self.proj_point2 = None self.force = None self.info = None self.selectmode = False self.set_selection() _msg(translate("draft", "Pick first point")) Gui.draftToolBar.show()
def Activated(self): """Execute when the command is called.""" super(Arc_3Points, self).Activated() # Reset the values self.points = [] self.normal = None self.tracker = trackers.arcTracker() self.tracker.autoinvert = False # Set up the working plane and launch the Snapper # with the indicated callbacks: one for when the user clicks # on the 3D view, and another for when the user moves the pointer. if hasattr(App, "DraftWorkingPlane"): App.DraftWorkingPlane.setup() Gui.Snapper.getPoint(callback=self.getPoint, movecallback=self.drawArc)
def proceed(self): """Continue with the command after a selection has been made.""" if self.call: self.view.removeEventCallback("SoEvent", self.call) self.selected_objects = Gui.Selection.getSelection() self.selected_objects = \ groups.get_group_contents(self.selected_objects, addgroups=True, spaces=True, noarchchild=True) self.selected_subelements = Gui.Selection.getSelectionEx() self.step = 0 self.center = None self.ui.rotateSetCenterUi() self.arctrack = trackers.arcTracker() self.call = self.view.addEventCallback("SoEvent", self.action) _msg(translate("draft", "Pick rotation center"))
def Activated(self): """Execute when the command is called.""" super(Polygon, self).Activated(name="Polygon") if self.ui: self.step = 0 self.center = None self.rad = None self.tangents = [] self.tanpoints = [] self.ui.pointUi(title=translate("draft", self.featureName), icon="Draft_Polygon") self.ui.extUi() self.ui.numFaces.show() self.ui.numFacesLabel.show() self.altdown = False self.ui.sourceCmd = self self.arctrack = trackers.arcTracker() self.call = self.view.addEventCallback("SoEvent", self.action) _msg(translate("draft", "Pick center point"))
def Activated(self, name=translate("draft", "Fillet")): DraftTools.Creator.Activated(self, name) if not self.doc: FCC.PrintWarning(translate("draft", "No active document") + "\n") return if self.ui: self.rad = 100 self.chamfer = False self.delete = False label = translate("draft", "Fillet radius") tooltip = translate("draft", "Radius of fillet") # Call the Task panel for a radius # The graphical widgets are defined in DraftGui self.ui.taskUi(title=name, icon="Draft_Fillet") self.ui.radiusUi() self.ui.sourceCmd = self self.ui.labelRadius.setText(label) self.ui.radiusValue.setToolTip(tooltip) self.ui.setRadiusValue(self.rad, "Length") self.ui.check_delete = self.ui._checkbox("isdelete", self.ui.layout, checked=self.delete) self.ui.check_delete.setText( translate("draft", "Delete original objects")) self.ui.check_delete.show() self.ui.check_chamfer = self.ui._checkbox("ischamfer", self.ui.layout, checked=self.chamfer) self.ui.check_chamfer.setText(translate("draft", "Create chamfer")) self.ui.check_chamfer.show() QtCore.QObject.connect(self.ui.check_delete, QtCore.SIGNAL("stateChanged(int)"), self.set_delete) QtCore.QObject.connect(self.ui.check_chamfer, QtCore.SIGNAL("stateChanged(int)"), self.set_chamfer) self.linetrack = trackers.lineTracker(dotted=True) self.arctrack = trackers.arcTracker() # self.call = self.view.addEventCallback("SoEvent", self.action) FCC.PrintMessage(translate("draft", "Enter radius") + "\n")
def Activated(self): """Execute when the command is called.""" super(Arc, self).Activated(name=_tr(self.featureName)) if self.ui: self.step = 0 self.center = None self.rad = None self.angle = 0 # angle inscribed by arc self.tangents = [] self.tanpoints = [] if self.featureName == "Arc": self.ui.arcUi() else: self.ui.circleUi() self.altdown = False self.ui.sourceCmd = self self.linetrack = trackers.lineTracker(dotted=True) self.arctrack = trackers.arcTracker() self.call = self.view.addEventCallback("SoEvent", self.action) _msg(translate("draft", "Pick center point"))
def init_preview_object(self, obj): return trackers.arcTracker()
def proceed(self): """Proceed with execution of the command after proper selection.""" if self.call: self.view.removeEventCallback("SoEvent", self.call) sel = Gui.Selection.getSelection() if len(sel) == 2: self.trimObjects(sel) self.finish() return self.obj = sel[0] self.ui.trimUi() self.linetrack = trackers.lineTracker() import DraftGeomUtils import Part if "Shape" not in self.obj.PropertiesList: return if "Placement" in self.obj.PropertiesList: self.placement = self.obj.Placement if len(self.obj.Shape.Faces) == 1: # simple extrude mode, the object itself is extruded self.extrudeMode = True self.ghost = [trackers.ghostTracker([self.obj])] self.normal = self.obj.Shape.Faces[0].normalAt(0.5, 0.5) for v in self.obj.Shape.Vertexes: self.ghost.append(trackers.lineTracker()) elif len(self.obj.Shape.Faces) > 1: # face extrude mode, a new object is created ss = Gui.Selection.getSelectionEx()[0] if len(ss.SubObjects) == 1: if ss.SubObjects[0].ShapeType == "Face": self.obj = self.doc.addObject("Part::Feature", "Face") self.obj.Shape = ss.SubObjects[0] self.extrudeMode = True self.ghost = [trackers.ghostTracker([self.obj])] self.normal = self.obj.Shape.Faces[0].normalAt(0.5, 0.5) for v in self.obj.Shape.Vertexes: self.ghost.append(trackers.lineTracker()) else: # normal wire trimex mode self.color = self.obj.ViewObject.LineColor self.width = self.obj.ViewObject.LineWidth # self.obj.ViewObject.Visibility = False self.obj.ViewObject.LineColor = (0.5, 0.5, 0.5) self.obj.ViewObject.LineWidth = 1 self.extrudeMode = False if self.obj.Shape.Wires: self.edges = self.obj.Shape.Wires[0].Edges self.edges = Part.__sortEdges__(self.edges) else: self.edges = self.obj.Shape.Edges self.ghost = [] lc = self.color sc = (lc[0], lc[1], lc[2]) sw = self.width for e in self.edges: if DraftGeomUtils.geomType(e) == "Line": self.ghost.append( trackers.lineTracker(scolor=sc, swidth=sw)) else: self.ghost.append(trackers.arcTracker(scolor=sc, swidth=sw)) if not self.ghost: self.finish() for g in self.ghost: g.on() self.activePoint = 0 self.nodes = [] self.shift = False self.alt = False self.force = None self.cv = None self.call = self.view.addEventCallback("SoEvent", self.action) _msg(translate("draft", "Pick distance"))