fairyfly-core 0.2.12__tar.gz → 0.2.13__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/PKG-INFO +1 -1
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/model.py +38 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly_core.egg-info/PKG-INFO +1 -1
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/CODE_OF_CONDUCT.md +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/CONTRIBUTING.md +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/LICENSE +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/MANIFEST.in +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/README.md +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/dev-requirements.txt +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/__init__.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/__main__.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/_base.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/_lockable.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/boundary.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/checkdup.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/cli/__init__.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/cli/setconfig.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/colorobj.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/config.json +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/config.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/dictutil.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/extensionutil.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/logutil.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/properties.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/search.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/shape.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/typing.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/units.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/writer/__init__.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/writer/boundary.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/writer/model.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly/writer/shape.py +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly_core.egg-info/SOURCES.txt +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly_core.egg-info/dependency_links.txt +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly_core.egg-info/entry_points.txt +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly_core.egg-info/requires.txt +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/fairyfly_core.egg-info/top_level.txt +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/requirements.txt +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/setup.cfg +0 -0
- {fairyfly_core-0.2.12 → fairyfly_core-0.2.13}/setup.py +0 -0
|
@@ -373,6 +373,44 @@ class Model(_Base):
|
|
|
373
373
|
mn, mx = self.min, self.max
|
|
374
374
|
return Point3D((mn.x + mx.x) / 2, (mn.y + mx.y) / 2, (mn.z + mx.z) / 2)
|
|
375
375
|
|
|
376
|
+
@property
|
|
377
|
+
def duplicate_shape_geometry(self):
|
|
378
|
+
"""Get a list of Face3Ds for any duplicate Shape geometry in the model.
|
|
379
|
+
|
|
380
|
+
These may not cause holes or extra regions in the model but they can
|
|
381
|
+
nevertheless cause simulation failures.
|
|
382
|
+
"""
|
|
383
|
+
duplicates = []
|
|
384
|
+
for i, shape_1 in enumerate(self._shapes):
|
|
385
|
+
try:
|
|
386
|
+
for shape_2 in self._shapes[i + 1:]:
|
|
387
|
+
if shape_1.geometry.is_centered_adjacent(
|
|
388
|
+
shape_2.geometry, self.tolerance):
|
|
389
|
+
duplicates.append(shape_2.geometry)
|
|
390
|
+
except IndexError:
|
|
391
|
+
pass # we have reached the end of the list of shapes
|
|
392
|
+
return duplicates
|
|
393
|
+
|
|
394
|
+
@property
|
|
395
|
+
def duplicate_boundary_geometry(self):
|
|
396
|
+
"""Get a list of LineSegment3Ds for any duplicate Boundary geometry in the model.
|
|
397
|
+
"""
|
|
398
|
+
# gather together all line segments across the boundaries
|
|
399
|
+
lines = []
|
|
400
|
+
for bound in self._boundaries:
|
|
401
|
+
lines.extend(bound.geometry)
|
|
402
|
+
# evaluate the line segments for equivalency
|
|
403
|
+
duplicates = []
|
|
404
|
+
for i, line_1 in enumerate(lines):
|
|
405
|
+
try:
|
|
406
|
+
for line_2 in lines[i + 1:]:
|
|
407
|
+
if line_1.distance_to_point(line_2.p1) <= self.tolerance and \
|
|
408
|
+
line_1.distance_to_point(line_2.p2) <= self.tolerance:
|
|
409
|
+
duplicates.append(line_2)
|
|
410
|
+
except IndexError:
|
|
411
|
+
pass # we have reached the end of the list of boundaries
|
|
412
|
+
return duplicates
|
|
413
|
+
|
|
376
414
|
def add_model(self, other_model):
|
|
377
415
|
"""Add another Model object to this model."""
|
|
378
416
|
assert isinstance(other_model, Model), \
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|