7 from __future__
import print_function
10 from opals
import pyDM
12 def output_polyline(line,prefix=""):
13 print(prefix,
"Polyline has",line.sizePart(),
"parts with",line.sizePoint(),
"points")
14 for idx, part
in enumerate(line.parts()):
15 print(
"\tPart",idx,
"with",part.sizePoint(),
"points")
16 for p
in part.points():
17 if sys.float_info.max == p.z:
18 print(
"\t\t(%.3f," % p.x,
" %.3f," % p.y,
"---)")
20 print(
"\t\t(%.3f," % p.x,
" %.3f," % p.y,
"%.3f)" % p.z)
25 f = pyDM.PolylineFactory()
32 line1 = f.getPolyline()
35 f.addPoint(5, 0.5, 0.5)
36 f.addPoint(10, 0, -0.5)
38 line2 = f.getPolyline()
41 output_polyline(line1,
"Line1:")
42 output_polyline(line2,
"Line2:")
47 class AnalyseDistance(pyDM.AnalyseDistance):
51 if sys.version_info >= (3, 0):
54 super(AnalyseDistance, self).__init__()
57 self.exceedCounter = 0
62 self.exceedCounter = 0
64 def closest(self, distance, idx, basePt, lineIdx1, lineIdx2, minDistPt):
66 self.sumDistance += distance
68 def exceeds(self,idx):
69 self.exceedCounter += 1
71 def meanDistance(self):
72 return self.sumDistance / self.counter
75 line1dense = pyDM.GeometricAlgorithms.densify(line1,1.0)
77 obj = AnalyseDistance()
78 pyDM.GeometricAlgorithms.analyseDistance(line1dense,line2,obj)
80 print(
"\nResults of distance analysis (no distance threshold):")
81 print(
"\tMean distance of lines: %.2f" % obj.meanDistance())
82 print(
"\tVertices exceed distance threshold: %d" % obj.exceedCounter)
86 pyDM.GeometricAlgorithms.analyseDistance(line1dense,line2,obj,maxDist)
88 print(
"\nResults of distance analysis (max distance threshold = %.2f):" % maxDist)
89 print(
"\tMean distance of lines: %.2f" % obj.meanDistance())
90 print(
"\tVertices exceed distance threshold: %d" % obj.exceedCounter)