def getEntsToSave(self): """ get the bisector segments """ id0, p0 = self.value[0] id1, p1 = self.value[1] objEnt = [] ent1 = self.document.getEntity(id0) ent2 = self.document.getEntity(id1) cel1 = ent1.getConstructionElements() seg1 = Segment(cel1) cel2 = ent2.getConstructionElements() seg2 = Segment(cel2) arg = { "OBJECTJOINT_0": seg1, "OBJECTJOINT_1": seg2, "OBJECTJOINT_2": p0, "OBJECTJOINT_3": p1, "OBJECTJOINT_5": self.value[2], } cmf = Bisector(arg) bisectorSegment = cmf.getReletedComponent() objEnt.append(bisectorSegment) return objEnt
def updateSegment(objSegment, objPoint, objInterPoint): """ Return a segment with trimed to the intersection point """ from kernel.geoentity.segment import Segment from kernel.geoentity.point import Point from kernel.geoutil.geolib import Vector objProjection = objSegment.getProjection(objPoint) _p1, _p2 = objSegment.getEndpoints() if not (_p1 == objInterPoint or _p2 == objInterPoint): pickIntVect = Vector(objInterPoint, objProjection).mag() p1IntVect = Vector(objInterPoint, _p1).mag() if (pickIntVect == p1IntVect): arg = {"SEGMENT_0": _p1, "SEGMENT_1": objInterPoint} return Segment(arg) p2IntVect = Vector(objInterPoint, _p2).mag() if (pickIntVect == p2IntVect): arg = {"SEGMENT_0": objInterPoint, "SEGMENT_1": _p2} return Segment(arg) ldist = objProjection.dist(_p1) if ldist > objProjection.dist(_p2): arg = {"SEGMENT_0": _p1, "SEGMENT_1": objInterPoint} return Segment(arg) else: arg = {"SEGMENT_0": objInterPoint, "SEGMENT_1": _p2} return Segment(arg)
def getEntityEntity(sympyEntity): """ convert sympy object into PyCAD object """ if isinstance(sympyEntity, geoSympy.Circle): arg={"ARC_0":Point(0.0, 0.0), "ARC_1":1, "ARC_2":None, "ARC_3":None } arc=Arc(arg) arc.setFromSympy(sympyEntity) return arc elif isinstance(sympyEntity, geoSympy.Point): p=Point(0.0, 0.0) p.setFromSympy(sympyEntity) return p elif isinstance(sympyEntity, geoSympy.Segment): segArg={"SEGMENT_0":Point(0.0, 0.0), "SEGMENT_1":Point(1.0, 1.0)} seg=Segment(segArg) seg.setFromSympy(sympyEntity) return seg elif isinstance(sympyEntity, geoSympy.Ellipse): arg={"ELLIPSE_0":Point(0.0, 0.0), "ELLIPSE_1":1.0, "ELLIPSE_2":2.0} e=Ellipse(arg) e.setFromSympy(sympyEntity) return e else: raise "not supported entity"
def segment_segmet(): print "++ segment_segmet ++" p1 = Point(0, 0) p2 = Point(0, 1) arg = {"SEGMENT_0": p1, "SEGMENT_1": p2} seg1 = Segment(arg) p3 = Point(0, 0) p4 = Point(-1, 0) arg = {"SEGMENT_0": p3, "SEGMENT_1": p4} seg2 = Segment(arg) print find_intersections(seg1, seg2) print "-- segment_segmet --"
def testSympySegment(): print "++ Sympy Segment ++" p1=Point(0, 1) p2=Point(10, 20) arg={"SEGMENT_0":p1, "SEGMENT_1":p2} seg=Segment(arg) symSeg=seg.getSympy() print symSeg p3=Point(30, 40) arg1={"SEGMENT_0":p1, "SEGMENT_1":p3} seg1=Segment(arg1) seg1.setFromSympy(symSeg) print "Segment ", seg1 print "-- Sympy Segment --"
def createLine(self, x1, y1, x2, y2, c): """ Create the line into the current drawing """ args = {"SEGMENT_0": Point(x1, y1), "SEGMENT_1": Point(x2, y2)} _seg = Segment(args) self.__kernel.saveEntity(_seg)
def getEntsToSave(self): """ get the fillet segments """ id0, p0 = self.value[0] id1, p1 = self.value[1] objEnt = [] ent1 = self.document.getEntity(id0) ent2 = self.document.getEntity(id1) cel1 = ent1.getConstructionElements() seg1 = Segment(cel1) cel2 = ent2.getConstructionElements() seg2 = Segment(cel2) arg = { "OBJECTJOINT_0": seg1, "OBJECTJOINT_1": seg2, "OBJECTJOINT_2": p0, "OBJECTJOINT_3": p1, "OBJECTJOINT_4": self.value[2], "OBJECTJOINT_5": self.value[3] } fillet = Fillet(arg) seg1Mod, seg2Mod, filletArc = fillet.getReletedComponent() _cElements1, entityType = self.document._getCelements(seg1Mod) _cElements2, entityType = self.document._getCelements(seg2Mod) ent1.setConstructionElements(_cElements1) ent2.setConstructionElements(_cElements2) objEnt.append(ent1) objEnt.append(ent2) objEnt.append(filletArc) return objEnt
def segment_cline(): print "++ segment_cline ++" p1 = Point(0, 0) p2 = Point(0, 1) arg = {"CLINE_0": p1, "CLINE_1": p2} seg1 = CLine(arg) p3 = Point(0, 0) p4 = Point(-1, 0) arg = {"SEGMENT_0": p3, "SEGMENT_1": p4} seg2 = Segment(arg) print find_intersections(seg1, seg2) print "-- segment_cline --"
def getEntsToSave(self): """ return a list of segment """ objEnt = [] self.CalculatePoint() if len(self.__xpts): # find starting point ... _p0 = Point(self.__xpts[0], self.__ypts[0]) # make segments for all the points ... _p1 = _p0 for _i in range(1, self.side): _x = self.__xpts[_i] _y = self.__ypts[_i] _pi = Point(_x, _y) segArg = {"SEGMENT_0": _p1, "SEGMENT_1": _pi} objEnt.append(Segment(segArg)) _p1 = _pi # now add closing segment ... segArg = {"SEGMENT_0": _p1, "SEGMENT_1": _p0} objEnt.append(Segment(segArg)) return objEnt
def getSegments(self): """ return an array of segments that identifie the polyline used for intersection porpouse """ tempPoint = None exitArray = [] for p in self.points(): if tempPoint: constr = {"SEGMENT_0": tempPoint, "SEGMENT_1": p} exitArray.append(Segment(constr)) tempPoint = p else: return exitArray return []
def testSympySegment(): print "++ Sympy Segment ++" p1 = Point(0, 1) p2 = Point(10, 20) arg = {"SEGMENT_0": p1, "SEGMENT_1": p2} seg = Segment(arg) symSeg = seg.getSympy() print symSeg p3 = Point(30, 40) arg1 = {"SEGMENT_0": p1, "SEGMENT_1": p3} seg1 = Segment(arg1) seg1.setFromSympy(symSeg) print "Segment ", seg1 print "-- Sympy Segment --"