##
import ModelHighAPI
-from GeomDataAPI import *
-from ModelAPI import *
-import math
+import GeomDataAPI
def addPolyline(sketch, *coords):
"""Add a poly-line to sketch.
return int(filter(str.isdigit, aSketch.string("SolverDOF").value()))
def distancePointPoint(thePoint1, thePoint2):
- aPnt1 = toList(thePoint1)
- aPnt2 = toList(thePoint2)
- return math.hypot(aPnt1[0] - aPnt2[0], aPnt1[1] - aPnt2[1])
-
-def distancePointLine(thePoint, theLine):
- aPoint = toList(thePoint)
- aLine = toSketchFeature(theLine)
-
- aLineStart = geomDataAPI_Point2D(aLine.attribute("StartPoint")).pnt().xy()
- aLineEnd = geomDataAPI_Point2D(aLine.attribute("EndPoint")).pnt().xy()
- aLineDir = aLineEnd.decreased(aLineStart)
- aLineLen = aLineEnd.distance(aLineStart)
- aCross = (aPoint[0] - aLineStart.x()) * aLineDir.y() - (aPoint[1] - aLineStart.y()) * aLineDir.x()
- return math.fabs(aCross / aLineLen)
+ aGeomPnt1 = thePoint1
+ aGeomPnt2 = thePoint2
+ if issubclass(type(thePoint1), GeomDataAPI.GeomDataAPI_Point2D):
+ aGeomPnt1 = thePoint1.pnt()
+ if issubclass(type(thePoint2), GeomDataAPI.GeomDataAPI_Point2D):
+ aGeomPnt2 = thePoint2.pnt()
+ return aGeomPnt1.distance(aGeomPnt2)
def lastSubFeature(theSketch, theKind):
"""
obtains last feature of given kind from the sketch
"""
- aSketch = featureToCompositeFeature(toSketchFeature(theSketch))
- for anIndex in range(aSketch.numberOfSubs() - 1, -1, -1):
- aSub = aSketch.subFeature(anIndex)
+ for anIndex in range(theSketch.numberOfSubs() - 1, -1, -1):
+ aSub = theSketch.subFeature(anIndex)
if (aSub.getKind() == theKind):
return aSub
-
-def toSketchFeature(theEntity):
- """ Converts entity to sketch feature if possible
- """
- if issubclass(type(theEntity), ModelHighAPI.ModelHighAPI_Interface):
- return theEntity.feature()
- else:
- return theEntity
-
-def toList(thePoint):
- if issubclass(type(thePoint), list):
- return thePoint
- elif issubclass(type(thePoint), GeomDataAPI_Point2D):
- return [thePoint.x(), thePoint.y()]
- else:
- aFeature = toSketchFeature(thePoint)
- aPoint = geomDataAPI_Point2D(aFeature.attribute("PointCoordinates"))
- return [aPoint.x(), aPoint.y()]