Face with 0.0 area
-
anyone encountered a 0.0 area face on a rectangle ? and each edge has the same face attached twice and find_faces fails on the edges
> Sketchup.active_model.entities.map{|x| x.faces if x.is_a? Sketchup;;Edge} [nil, [#<Sketchup;;Face;0x1a563988>, #<Sketchup;;Face;0x1a563988>], [#<Sketchup;;Face;0x1a563988>, #<Sketchup;;Face;0x1a563988>], [#<Sketchup;;Face;0x1a563988>, #<Sketchup;;Face;0x1a563988>], [#<Sketchup;;Face;0x1a563988>, #<Sketchup;;Face;0x1a563988>]]
-
Would the rectangle tool still create a face if the start and end points were the same ??
Seems like the code should prevent that (make a nasty sound, display "You cannot make 0 zero area rectangles!" on the statusbar,.. or whatever.)Hmm.. tried it. The rectangle tool does not seem to allow that. So that's good.
-
How did you get this face?
I played with the file a bit. In addition to each edge having the face listed twice, for the zero area face (face):
face.edges.length = 8, in truth there are 4 unique edges, each listed twice.
Also:
If you select only the face in the model (do this by selecting everything in the model and then unselecting the 4 edges), and then move the face, all 4 edges shown move as if they bound a normal face.
If you draw over one of the edges, the void in the center does not fill in as a face. Therefore, I think that this is what happened:
If you look at the order of the edges returned by face.edges, it seems that the edges go clockwise and then counter clockwise (or vis-versa). So I think that somehow, the face is zero area because the four edges define the outer loop, plus an inner loop with a hole in it of the same size and dimension.
--
Karen -
@unknownuser said:
anyone encountered a 0.0 area face on a rectangle ?
Not sure if it was a rectangle, but I had problems with a tiny face once. When I fed its vertices to on_plane? it'd say they where no co-planar.
I got a face like that when flattening and intersecting a DWG imported site plan.
http://forums.sketchucation.com/viewtopic.php?f=180&t=34479#p303817
-
Doh! That makes sense.
-
yeah, the same damn DWG import. a quick workaround to create the faces is to erase all faces with
.area==0
before.find_faces
-
@unknownuser said:
yeah, the same damn DWG import. a quick workaround to create the faces is to erase all faces with
.area==0
before.find_faces
Or even less than a given minimum. Faces aren't really usable when they get below a certain size. In my plan tool I filter all tiny faces as they'd just clutter the model.
-
Does "Model Info" > "Fix Problems" correct this?
-
-
speaking of
.find_faces
- how do you create the inner face (via ruby or normal SU tools) ?
-
Just a reminder about topology..
There are a good and bad zero-area faces.
Generally, Zero area faces are a Good Thing(tm) to ensure fully stitched surfaces with no cracks. So a triangle having zero area between 3 points acts as a valid way of ensuring continuity and tools that process geometry must ensure they propagate these.
Degenerate faces are also zero area but are not so good. (There are reasons to have them but its outside the scope of this). Here you have a face with repeated vertices. These should usually be culled during topology operations.
-
I recall that thomthom and i had a discussion about something like this - infinitesimally short edges...
Find the veeeery small faces - look at their consecutive vertices, if they are veeery close together transform one of them so it is in the same position as the nearest - that edge disappears [should] and the associated face [possibly] goes with it ? -
TIG,
Thats what I'm warning about. You really don't want to be finding valid but small faces and removing them because you've introduced a topological 'hole' in your geometry which will scintillate when rendered AND leak light.
You can merge small faces together and remove internal edges, but you should not be deleting outer edges "because they're really small and I can hardly see them".
A very common zero-area triangle is one that is generated to stitch a "T-junction". You must never remove these as your model will exhibit all sorts of cracking and lighting anomalies (because of poor normal interpolation).
So you actually want a triangle ABC here because no rendering hardware or software can interpolate the edge AC and get the same results as AB,BC
Adam
-
I wasn't suggesting you remove a small face just merge its vertices so it vanishes...
Advertisement