tests/subfiles.py

changeset 26
7c263b864371
parent 24
f8080ffceaa9
child 37
e46fa477007b
child 43
d7c015d8c6c0
equal deleted inserted replaced
25:8990ac138cc2 26:7c263b864371
8 8
9 with open(ini_path) as file: 9 with open(ini_path) as file:
10 library_standards.read_file(file) 10 library_standards.read_file(file)
11 11
12 def determinant_test(model): 12 def determinant_test(model):
13 '''
14 Checks all subfile references for matrices with rows or columns all
15 zero.
16 '''
13 yield from ( 17 yield from (
14 error(subfile_reference, 'zero-determinant') 18 error(subfile_reference, 'zero-determinant')
15 for subfile_reference in model.subfile_references 19 for subfile_reference in model.subfile_references
16 if abs(subfile_reference.matrix.determinant() - 0) < 1e-15 20 if abs(subfile_reference.matrix.determinant() - 0) < 1e-15
17 ) 21 )
44 abs(abs(scaling.y) - 1) < 1e-5, 48 abs(abs(scaling.y) - 1) < 1e-5,
45 ]), 49 ]),
46 } 50 }
47 51
48 def scaling_legality_test(model): 52 def scaling_legality_test(model):
53 '''
54 Checks the part against primitive references with bad scaling. Some
55 primitives (e.g. pegs) are not allowed to be scaled in the
56 X or Z directions. Some (e.g. most studs) are not allowed to be scaled
57 in the Y direction either.
58 '''
49 from fnmatch import fnmatch 59 from fnmatch import fnmatch
50 scaling_restrictions = library_standards['scaling restrictions'] 60 scaling_restrictions = library_standards['scaling restrictions']
51 for subfile_reference in model.subfile_references: 61 for subfile_reference in model.subfile_references:
52 primitive = subfile_reference.subfile_path.lower() 62 primitive = subfile_reference.subfile_path.lower()
53 scaling = subfile_reference.matrix.scaling_vector() 63 scaling = subfile_reference.matrix.scaling_vector()

mercurial