| 904 | |
| 905 | @utils.trace |
| 906 | def evaluate_st(self, data): |
| 907 | def inner(): |
| 908 | for i, (elem, ps) in enumerate(data.convex_halfspace_trees): |
| 909 | print("Evaluating", elem) |
| 910 | solids = [p.solid() for p in ps] |
| 911 | # @todo use union() |
| 912 | |
| 913 | if len(solids) == 0: |
| 914 | continue |
| 915 | elif len(solids) == 1: |
| 916 | v = solids[0] |
| 917 | else: |
| 918 | v = ifcopenshell.ifcopenshell_wrapper.nary_union(solids) |
| 919 | |
| 920 | if self.settings.debug: |
| 921 | self.write_obj(f"{elem.GlobalId}_{i}.obj", item=v) |
| 922 | |
| 923 | yield elem, v |
| 924 | |
| 925 | return list(inner()) |
| 926 | |
| 927 | def evaluate_mt(self, data): |
| 928 | def ev(i_elem_ps): |