Пример #1
0
    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
Пример #2
0
 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()
Пример #3
0
 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()
Пример #4
0
 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()
Пример #5
0
    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)
Пример #6
0
 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"))
Пример #7
0
 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"))
Пример #8
0
    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")
Пример #9
0
 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"))
Пример #10
0
 def init_preview_object(self, obj):
     return trackers.arcTracker()
Пример #11
0
    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"))