1 # -*- coding: utf-8 -*-
3 # -------------------------------------
5 def controlGeomProps(geompy, geomShape, refLength, refArea):
7 compare area and length of a geometric face with a reference,
8 with relative precision of 1.E-7
10 props = geompy.BasicProperties(geomShape)
11 print " Wires length: ", props[0]
12 print " Surface area: ", props[1]
13 print " Volume : ", props[2]
14 deltaLength = 2.0*abs((props[0] - refLength)/(props[0] + refLength))
15 deltaArea = 2.0*abs((props[1] - refArea)/(props[1] + refArea))
16 if deltaLength > 1e-3 or deltaArea > 1e-3 or props[2] != 0:
17 print "While must be:"
18 print " Wires length: ", refLength
19 print " Surface area: ", refArea
20 print " Volume : ", 0.
21 raise ValueError("Bad length or area")
23 # -------------------------------------
25 def controlMeshStats(aMesh, nbNodes, nbEdges, nbTriangles):
27 Compare number of nodes and elements with a reference,
28 with a precision of 5%.
29 Only for a mesh, not for a subMesh.
33 references['Entity_Node'] = nbNodes
34 references['Entity_Edge'] = nbEdges
35 references['Entity_Triangle'] = nbTriangles
37 mesures = aMesh.GetMeshInfo()
40 for key, value in mesures.iteritems():
42 for key in ('Entity_Triangle', 'Entity_Edge', 'Entity_Node'):
43 if (d[key] < (1.0 - tolerance)*references[key]) \
44 or (d[key] > (1.0 + tolerance)*references[key]):
46 print key, ": value: ", d[key], " reference: ", references[key]
47 raise ValueError("Bad number of nodes or elements")
49 # -------------------------------------
51 def controlSubMeshStats(aSubMesh, nbItems):
53 Compare number of nodes and elements with a reference,
54 with a precision of 5%.
55 Only for a subMesh, not for a mesh.
58 mesures = aSubMesh.GetMeshInfo()
60 if (nbItems < (1.0 - tolerance)*nbRef) \
61 or (nbItems > (1.0 + tolerance)*nbRef):
62 print aSubMesh.GetName()
63 print "value: ", nbItems, " reference: ", nbRef
64 raise ValueError("Bad number of nodes or elements")
66 # -------------------------------------
68 def controlStatZ(statz,refstatz):
70 Compare min and max of z of regions with a reference,
71 with a precision of 0.05m.
73 tolerance = 0.05 # metres
74 for nomreg, valsref in refstatz.iteritems():
76 if abs(vals[0] - valsref[0]) > tolerance \
77 or abs(vals[1] - valsref[1]) > tolerance:
79 print "value: ", vals, " reference: ", valsref
80 raise ValueError("z interpolation error")