-
Notifications
You must be signed in to change notification settings - Fork 276
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix crash on invalid faces #1541
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #1541 +/- ##
==========================================
+ Coverage 94.48% 94.86% +0.38%
==========================================
Files 28 28
Lines 5780 6228 +448
Branches 1071 1262 +191
==========================================
+ Hits 5461 5908 +447
Misses 193 193
- Partials 126 127 +1 ☔ View full report in Codecov by Sentry. |
@openvmp thanks, what is the background of this fix? How can I reproduce the issue and can a test be added? |
I was trying to use CadQuery to render models for PartCAD.org. Specifically this model: https://partcad.org/repository/assembly/robotics/multimodal/openvmp/robots/don1:robot It was larger than 1GB back then. And CadQuery was crashing on some triangle. It was too much for me to find which one and why. I stopped using CadQuery for that purpose, so it's impossible to investigate any further now. |
Could you share this model as a |
Give me some time to add this export feature and to try reproducing the crash (I operate on much smaller models now). |
@openvmp I think I found a MRE: cq.Face.makePlane(1e-9,1e-9).tessellate(1e-3) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BTW, I get an AttributeError (before the fix).
Traceback (most recent call last):
File "/tmp/test1.py", line 12, in <module>
verts, _ = Face.makePlane(1e-9, 1e-9).tessellate(1e-3)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/lorenzn/devel/cadquery/cadquery/occ_impl/shapes.py", line 1379, in tessellate
poly.Node(i).Transformed(Trsf) for i in range(1, poly.NbNodes() + 1)
^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'NbNodes'
I suppose to detect when Faces are skipped one can compare the count in and out of the function.
Yes, me too. |
@jmwright are you OK with merging this PR? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @openvmp
@adam-urbanczyk +1 to merge |
Thanks @openvmp ! |
No description provided.