コード例 #1
0
 def MouseMoveEvent(self, thePnt2d: gp_Pnt2d, buttons, modifiers):
     if self.myArcCenter2PAction == ArcCenter2PAction.Nothing:
         pass
     elif self.myArcCenter2PAction == ArcCenter2PAction.Input_CenterArc:
         self.curPnt2d = self.myAnalyserSnap.MouseMove(thePnt2d)
     elif self.myArcCenter2PAction == ArcCenter2PAction.Input_1ArcPoint:
         self.curPnt2d = self.myAnalyserSnap.MouseMoveException(
             self.myFirstgp_Pnt2d, thePnt2d, TangentType.Circle_CenterPnt,
             True)
         self.radius = self.myFirstgp_Pnt2d.Distance(self.curPnt2d)
         if self.radius == 0.0:
             self.radius = 1.0
         self.tempGeom_Circle.SetRadius(self.radius)
         self.myContext.Redisplay(self.myRubberCircle, True)
         self.mySecondPoint.SetPnt(
             elclib.To3d(self.curCoordinateSystem.Ax2(), self.curPnt2d))
     elif self.myArcCenter2PAction == ArcCenter2PAction.Input_2ArcPoint:
         self.curPnt2d = self.myAnalyserSnap.MouseMove(thePnt2d)
         if self.ProjectOnCircle(self.curPnt2d):
             third_Pnt = elclib.To3d(self.curCoordinateSystem.Ax2(),
                                     self.curPnt2d)
             self.myRubberCircle.SetCircle(self.tempGeom_Circle)
             p1 = elclib.Parameter(self.tempGeom_Circle.Circ(),
                                   self.mySecondPoint.Pnt())
             p2 = elclib.Parameter(self.tempGeom_Circle.Circ(), third_Pnt)
             self.myRubberCircle.SetFirstParam(min(p1, p2))
             self.myRubberCircle.SetLastParam(max(p1, p2))
             self.myContext.Redisplay(self.myRubberCircle, True)
             # update text
             degree = "Degree: {}".format(round(p2 * 180 / M_PI))
             self.myAIS_Label.SetText(TCollection_ExtendedString(degree))
             self.myContext.Redisplay(self.myAIS_Label, True)
コード例 #2
0
 def SetParam(self, start: gp_Pnt2d, mid: gp_Pnt2d, end: gp_Pnt2d):
     self.myFirstParam = elclib.Parameter(gp_Circ2d(), start)
     self.myLastParam = elclib.Parameter(gp_Circ2d(), end)
     u = elclib.Parameter(gp_Circ2d(), mid)
     self.CheckParam()
     if self.myFirstParam < u and u < self.myLastParam or self.myLastParam < u + 2 * M_PI and u + 2 * M_PI < self.myLastParam:
         pass
     else:
         if self.myLastParam > 2 * M_PI:
             self.myLastParam -= 2 * M_PI
             u = self.myFirstParam
         else:
             u = self.myFirstParam + 2 * M_PI
         self.myFirstParam = self.myLastParam
         self.myLastParam = u
コード例 #3
0
    def MouseMoveEvent(self, thePnt2d: gp_Pnt2d, buttons, modifiers):
        self.curPnt2d = self.myAnalyserSnap.MouseMove(thePnt2d)
        if self.myArc3PAction == Arc3PAction.Nothing:
            pass
        elif self.myArc3PAction == Arc3PAction.Input_1ArcPoint:
            self.curPnt2d = self.myAnalyserSnap.MouseMove(thePnt2d)
        elif self.myArc3PAction == Arc3PAction.Input_2ArcPoint:
            self.mySecondPoint.SetPnt(elclib.To3d(self.curCoordinateSystem.Ax2(), self.curPnt2d))
            self.myRubberLine.SetPoints(self.myFirstPoint, self.mySecondPoint)
            self.myContext.Redisplay(self.myRubberLine, True)
        elif self.myArc3PAction == Arc3PAction.Input_3ArcPoint:
            self.third_Pnt = elclib.To3d(self.curCoordinateSystem.Ax2(), self.curPnt2d)
            tempMakeCirc = gce_MakeCirc(self.myFirstPoint.Pnt(), self.mySecondPoint.Pnt(), self.third_Pnt)
            if tempMakeCirc.Status() == gce_Done:
                self.tempGeom_Circle.SetCirc(tempMakeCirc.Value())
                self.myRubberCircle.SetCircle(self.tempGeom_Circle)
                self.myRubberCircle.SetFirstParam(
                    elclib.Parameter(self.tempGeom_Circle.Circ(), self.myFirstPoint.Pnt()))
                self.myRubberCircle.SetLastParam(elclib.Parameter(self.tempGeom_Circle.Circ(), self.third_Pnt))
                self.myContext.Redisplay(self.myRubberCircle, True)
        elif self.myArc3PAction == Arc3PAction.Input_PolylineArc:
            self.third_Pnt = elclib.To3d(self.curCoordinateSystem.Ax2(), self.curPnt2d)
            self.TempGeom2d_Point.SetPnt2d(self.curPnt2d)
            temp2d_QualifiedCurve = Geom2dGcc_QualifiedCurve(self.temp2dAdaptor_Curve, gccent_Unqualified)
            tempGcc_Circ2d3Tan = Geom2dGcc_Circ2d3Tan(temp2d_QualifiedCurve, self.FirstGeom2d_Point,
                                                      self.TempGeom2d_Point, 1.0e-6, 0)
            if (tempGcc_Circ2d3Tan.IsDone() and tempGcc_Circ2d3Tan.NbSolutions() > 0):
                self.temp2d_Circ = tempGcc_Circ2d3Tan.ThisSolution(1)
                self.u1 = elclib.Parameter(self.temp2d_Circ, self.myFirstgp_Pnt2d)
                self.u2 = elclib.Parameter(self.temp2d_Circ, self.mySecondgp_Pnt2d)

                self.temp_u1 = self.u1 + (self.u2 - self.u1) / 100
                self.temp_u2 = self.u1 - (self.u2 - self.u1) / 100

                self.tempu1_pnt2d = elclib.Value(self.temp_u1, self.temp2d_Circ)
                self.tempu2_pnt2d = elclib.Value(self.temp_u2, self.temp2d_Circ)

                self.dist1 = self.tempu1_pnt2d.Distance(self.midpoint2d)
                self.dist2 = self.tempu2_pnt2d.Distance(self.midpoint2d)

                if self.dist1 < self.dist2:
                    self.tempu1_pnt2d = self.tempu2_pnt2d
                tempMakeCirc = gce_MakeCirc(self.myFirstPoint.Pnt(),
                                            elclib.To3d(self.curCoordinateSystem.Ax2(), self.tempu1_pnt2d),
                                            self.third_Pnt)
                if tempMakeCirc.Status() == gce_Done:
                    self.tempGeom_Circle.SetCirc(tempMakeCirc.Value())
                    self.myRubberCircle.SetFirstParam(
                        elclib.Parameter(self.tempGeom_Circle.Circ(), self.myFirstPoint.Pnt()))
                    self.myRubberCircle.SetLastParam(elclib.Parameter(self.tempGeom_Circle.Circ(), self.third_Pnt))
                    self.myContext.Redisplay(self.myRubberCircle, True)
コード例 #4
0
 def EndParameter(self):
     return elclib.Parameter(self.Lin2d(), self.EndPnt)
コード例 #5
0
 def StartParameter(self):
     return elclib.Parameter(self.Lin2d(), self.StartPnt)
コード例 #6
0
    def MouseInputEvent(self, thePnt2d: gp_Pnt2d, buttons, modifier):
        self.curPnt2d = self.myAnalyserSnap.MouseInput(thePnt2d)
        if self.myArc3PAction == Arc3PAction.Nothing:
            pass
        elif self.myArc3PAction == Arc3PAction.Input_1ArcPoint:
            self.myFirstgp_Pnt2d = gp_Pnt2d(self.curPnt2d.X(),self.curPnt2d.Y())
            self.myFirstPoint.SetPnt(elclib.To3d(self.curCoordinateSystem.Ax2(), self.curPnt2d))
            if not self.myPolylineMode:
                self.myRubberLine.SetPoints(self.myFirstPoint, self.myFirstPoint)
                self.myContext.Display(self.myRubberLine, True)
                self.myArc3PAction = Arc3PAction.Input_2ArcPoint
            else:
                self.findlastSObject()
                self.myContext.Display(self.myRubberCircle, True)
        elif self.myArc3PAction == Arc3PAction.Input_2ArcPoint:
            self.mySecondgp_Pnt2d =  gp_Pnt2d(self.curPnt2d.X(),self.curPnt2d.Y())
            self.mySecondPoint.SetPnt(elclib.To3d(self.curCoordinateSystem.Ax2(), self.curPnt2d))
            self.temp_Circ.SetLocation(self.myFirstPoint.Pnt().Scaled(self.mySecondPoint.Pnt(), 0.5))
            self.temp_Circ.SetRadius(self.myFirstgp_Pnt2d.Distance(self.curPnt2d) / 2)

            self.tempGeom_Circle.SetCirc(self.temp_Circ)
            self.myRubberCircle.SetCircle(self.tempGeom_Circle)

            self.u1 = elclib.Parameter(self.temp_Circ, self.myFirstPoint.Pnt())
            self.u2 = elclib.Parameter(self.temp_Circ, self.mySecondPoint.Pnt())

            if self.u1 > self.u2:
                self.myRubberCircle.SetFirstParam(self.u2)
                self.myRubberCircle.SetLastParam(self.u1)
            else:
                self.myRubberCircle.SetFirstParam(self.u1)
                self.myRubberCircle.SetLastParam(self.u2)

            self.myContext.Remove(self.myRubberLine, True)
            self.myContext.Display(self.myRubberCircle, True)
            self.myContext.Redisplay(self.myRubberCircle, True)
            self.myArc3PAction = Arc3PAction.Input_3ArcPoint

        elif self.myArc3PAction == Arc3PAction.Input_3ArcPoint:
            Geom2d_Point1 = Geom2d_CartesianPoint(self.myFirstgp_Pnt2d)
            Geom2d_Point2 = Geom2d_CartesianPoint(self.mySecondgp_Pnt2d)
            Geom2d_Point3 = Geom2d_CartesianPoint(self.curPnt2d)
            tempGcc_Circ2d3Tan = Geom2dGcc_Circ2d3Tan(Geom2d_Point1, Geom2d_Point2, Geom2d_Point3, 1.0e-10)
            if tempGcc_Circ2d3Tan.IsDone() and tempGcc_Circ2d3Tan.NbSolutions() > 0:
                myGeom2d_Arc = Geom2d_Arc(tempGcc_Circ2d3Tan.ThisSolution(1))
                myGeom2d_Arc.SetParam(self.myFirstgp_Pnt2d, self.mySecondgp_Pnt2d, self.curPnt2d)

                Geom_Circle1 = Geom_Circle(elclib.To3d(self.curCoordinateSystem.Ax2(), myGeom2d_Arc.Circ2d()))
                myAIS_Circle = AIS_Circle(Geom_Circle1)

                myAIS_Circle.SetFirstParam(myGeom2d_Arc.FirstParameter())
                myAIS_Circle.SetLastParam(myGeom2d_Arc.LastParameter())

                self.AddObject(myGeom2d_Arc, myAIS_Circle, Sketch_GeometryType.ArcSketchObject)
                self.myContext.Remove(self.myRubberCircle, True)
                self.myContext.Display(myAIS_Circle, True)

                self.myArc3PAction = Arc3PAction.Input_1ArcPoint
            # self.third_Pnt = elclib.To3d(self.curCoordinateSystem.Ax2(), self.curPnt2d)
            # tempMakeCirc = gce_MakeCirc(self.myFirstPoint.Pnt(), self.mySecondPoint.Pnt(), self.third_Pnt)
            # if tempMakeCirc.Status() == gce_Done:
            #
            #     Geom_Circle1 = Geom_Circle(tempMakeCirc.Value())
            #     myAIS_Circle = AIS_Circle(Geom_Circle1)
            #
            #     myAIS_Circle.SetFirstParam(
            #         elclib.Parameter(Geom_Circle1.Circ(), self.myFirstPoint.Pnt()))
            #     myAIS_Circle.SetLastParam(elclib.Parameter(Geom_Circle1.Circ(), self.third_Pnt))
            #
            #     self.AddObject(Geom_Circle, myAIS_Circle, Sketch_ObjectTypeOfMethod.Arc3P_Method)
            #     self.myContext.Remove(self.myRubberCircle, True)
            #     self.myContext.Display(myAIS_Circle, True)
            #     self.myArc3PAction = Arc3PAction.Input_1ArcPoint

        elif self.myArc3PAction == Arc3PAction.Input_PolylineArc:
            self.TempGeom2d_Point.SetPnt2d(self.curPnt2d)
            temp2d_QualifiedCurve = Geom2dGcc_QualifiedCurve(self.temp2dAdaptor_Curve, gccent_Unqualified)
            tempGcc_Circ2d3Tan = Geom2dGcc_Circ2d3Tan(temp2d_QualifiedCurve, self.FirstGeom2d_Point,
                                                      self.TempGeom2d_Point, 1.0e-6, 0)
            if (tempGcc_Circ2d3Tan.IsDone() and tempGcc_Circ2d3Tan.NbSolutions() > 0):
                self.temp2d_Circ = tempGcc_Circ2d3Tan.ThisSolution(1)
                self.u1 = elclib.Parameter(self.temp2d_Circ, self.myFirstgp_Pnt2d)
                self.u2 = elclib.Parameter(self.temp2d_Circ, self.curPnt2d)

                self.temp_u1 = self.u1 + (self.u2 - self.u1) / 100
                self.temp_u2 = self.u1 - (self.u2 - self.u1) / 100

                self.tempu1_pnt2d = elclib.Value(self.temp_u1, self.temp2d_Circ)
                self.tempu2_pnt2d = elclib.Value(self.temp_u2, self.temp2d_Circ)

                self.dist1 = self.tempu1_pnt2d.Distance(self.midpoint2d)
                self.dist2 = self.tempu2_pnt2d.Distance(self.midpoint2d)

                if self.dist1 < self.dist2:
                    self.tempu1_pnt2d = self.tempu2_pnt2d
                myGeom2d_Arc = Geom2d_Arc(self.temp2d_Circ)
                myGeom2d_Arc.SetParam(self.myFirstgp_Pnt2d, self.tempu1_pnt2d, self.curPnt2d)

                Geom_Circle1 = Geom_Circle(elclib.To3d(self.curCoordinateSystem.Ax2(), myGeom2d_Arc.Circ2d()))
                myAIS_Circle = AIS_Circle(Geom_Circle1)
                myAIS_Circle.SetFirstParam(myGeom2d_Arc.FirstParameter())
                myAIS_Circle.SetLastParam(myGeom2d_Arc.LastParameter())
                self.myContext.Display(myAIS_Circle, True)

                self.AddObject(myGeom2d_Arc, myAIS_Circle, Sketch_GeometryType.ArcSketchObject)

                self.midpoint2d = myGeom2d_Arc.MiddlePnt()
                self.tempGeom2d_Circle.SetCirc2d(myGeom2d_Arc.Circ2d())
                self.temp2dAdaptor_Curve.Load(self.tempGeom2d_Circle)

                self.myFirstgp_Pnt2d = self.curPnt2d
                self.FirstGeom2d_Point.SetPnt2d(self.myFirstgp_Pnt2d)
                self.myFirstPoint.SetPnt(elclib.To3d(self.curCoordinateSystem.Ax2(), self.curPnt2d))

                self.tempGeom_Circle.SetRadius(0)
                self.myRubberCircle.SetCircle(self.tempGeom_Circle)
                self.myContext.Redisplay(self.myRubberCircle, True)
        return False
コード例 #7
0
    def MouseInputEvent(self, thePnt2d: gp_Pnt2d, buttons, modifier):
        if self.myArcCenter2PAction == ArcCenter2PAction.Nothing:
            pass
        elif self.myArcCenter2PAction == ArcCenter2PAction.Input_CenterArc:
            self.tempGeom_Circle = Geom_Circle(self.curCoordinateSystem.Ax2(),
                                               SKETCH_RADIUS)

            self.curPnt2d = self.myAnalyserSnap.MouseInput(thePnt2d)
            self.myFirstgp_Pnt2d = gp_Pnt2d(self.curPnt2d.X(),
                                            self.curPnt2d.Y())
            self.myFirstPoint.SetPnt(
                elclib.To3d(self.curCoordinateSystem.Ax2(),
                            self.myFirstgp_Pnt2d))

            self.myCircleAx2d.SetLocation(self.myFirstgp_Pnt2d)
            self.tempGeom_Circle.SetLocation(self.myFirstPoint.Pnt())
            self.tempGeom_Circle.SetRadius(SKETCH_RADIUS)

            self.myRubberCircle.SetCircle(self.tempGeom_Circle)
            self.myRubberCircle.SetFirstParam(0)
            self.myRubberCircle.SetLastParam(M_PI * 2)
            self.myContext.Display(self.myRubberCircle, True)
            self.myArcCenter2PAction = ArcCenter2PAction.Input_1ArcPoint

        elif self.myArcCenter2PAction == ArcCenter2PAction.Input_1ArcPoint:
            self.curPnt2d = self.myAnalyserSnap.MouseInputException(
                self.myFirstgp_Pnt2d, thePnt2d, TangentType.Circle_CenterPnt,
                True)
            self.radius = self.myFirstgp_Pnt2d.Distance(self.curPnt2d)
            self.tempGeom_Circle.SetRadius(self.radius)
            self.myRubberCircle.SetCircle(self.tempGeom_Circle)
            self.tempGeom2d_Circle = Geom2d_Circle.DownCast(
                geomapi_To2d(self.tempGeom_Circle,
                             gp_Pln(self.curCoordinateSystem)))

            self.myContext.Redisplay(self.myRubberCircle, True)
            # update text
            self.myAIS_Label.SetPosition(self.tempGeom_Circle.Location())
            self.myContext.Display(self.myAIS_Label, True)
            self.myArcCenter2PAction = ArcCenter2PAction.Input_2ArcPoint
        elif self.myArcCenter2PAction == ArcCenter2PAction.Input_2ArcPoint:
            self.curPnt2d = self.myAnalyserSnap.MouseMove(thePnt2d)
            if self.ProjectOnCircle(self.curPnt2d):
                third_Pnt = elclib.To3d(self.curCoordinateSystem.Ax2(),
                                        self.curPnt2d)
                self.myRubberCircle.SetCircle(self.tempGeom_Circle)
                p1 = elclib.Parameter(self.tempGeom_Circle.Circ(),
                                      self.mySecondPoint.Pnt())
                p2 = elclib.Parameter(self.tempGeom_Circle.Circ(), third_Pnt)
                self.myRubberCircle.SetFirstParam(min(p1, p2))
                self.myRubberCircle.SetLastParam(max(p1, p2))

                self.myGeomArc = Geom2d_Arc(self.tempGeom2d_Circle.Circ2d())
                self.myGeomArc.SetFirstParam(min(p1, p2))
                self.myGeomArc.SetLastParam(max(p1, p2))
                # Remove text
                self.myContext.Remove(self.myAIS_Label, True)
                self.myContext.Remove(self.myRubberCircle, True)

                nurbs = self.ArcToNurbsArc(min(p1, p2), max(p1, p2))
                self.bspline_node = BsplineNode(nurbs.GetName(), self.rootNode)
                self.bspline_node.setSketchObject(nurbs)
                self.AddObject(self.myGeomArc, nurbs.GetAIS_Object(),
                               Sketch_GeometryType.ArcSketchObject)

            self.myArcCenter2PAction = ArcCenter2PAction.Nothing
        return False
コード例 #8
0
 def SetLastParam(self, u2):
     if type(u2) == float:
         self.myLastParam = u2
     elif type(u2) == gp_Pnt2d:
         self.myLastParam = elclib.Parameter(gp_Circ2d(), u2)
     self.CheckParam()
コード例 #9
0
 def SetFirstParam(self, u1):
     if type(u1) == float:
         self.myFirstParam = u1
     elif type(u1) == gp_Pnt2d:
         self.myFirstParam = elclib.Parameter(gp_Circ2d(), u1)
     self.CheckParam()
コード例 #10
0
 def SetParam(self, start: gp_Pnt2d, end: gp_Pnt2d):
     self.myFirstParam = elclib.Parameter(self.Circ2d(), start)
     self.myLastParam = elclib.Parameter(self.Circ2d(), end)
     # u = elclib.Parameter(self.Circ2d(), mid)
     self.CheckParam()