The surfaces I draw for the first time are always drawn in reverse. I always have to reverse it. Are there any settings?
In SketchUps mind they are the correct orientation as it assumes you will push/pull upwards. This âbottomâ face is then the correct way round.
It is true that this has always been like this although it is annoying.
While pushpull would be an explanation, we do not always pushpull faces on the ground plane. Like in proper software design, if pushpull requires a certain face orientation, it should be implemented in the PushPull tool, not in the drawing tools.
I agree with Aerilius
Push pull puts the front side outwards regardless of the orientation of the original face (unless in some rare cases in copy mode when the face connects to other faces).
This has always bugged me too. Iâm thinking that maybe the purpose for this behavior is that it makes the face easier to see, with the original background in SU being white, but I donât know.
I did not understand. Is this just for push / pull? Should not I decide whether to use push / pull? Interesting!
PushPull has two modes: faces will either move (leave a hole) or copy (create a closed prism). I first thought this is influenced by face orientation, but it is not (maybe neighboring geometry or edge loop direction).
Made this script (save it as ruby file in Plugins directory):
=begin
New horizontal faces in SketchUp are often showing the backface.
This script watches for any new faces and orients them upwards whenever reasonable.
License: see http://unlicense.org
=end
module AE
module HorizontalFacesUp
class FaceOrientationObserver < Sketchup::EntitiesObserver
def onElementAdded(entities, entity)
if entity.is_a?(Sketchup::Face)
# Orient all horizontal faces upwards.
# Initial face orientation seems to depend on the octant and neighboring faces (not just upper/lower halfspace).
# All downwards oriented (Attention: can be pushpulled down)
is_downwards = (entity.normal == Z_AXIS.reverse)
if is_downwards
has_only_coplanar_neighbors = entity.edges.all?{ |edge|
edge.faces.length == 1 || # no neighboring face
edge.faces.length == 2 && (edge.faces - [entity]).first.normal.parallel?(entity.normal)
}
if has_only_coplanar_neighbors
entity.model.start_operation("Orient horizontal face upwards", true, false, true)
entity.reverse!
entity.model.commit_operation
end
end
end
end
end
class ModelOpenedObserver < Sketchup::AppObserver
def onModelOpened(model)
observer = FaceOrientationObserver.new
model.entities.add_observer(observer)
end
alias_method(:onNewModel, :onModelOpened)
end
unless defined?(@loaded)
observer = ModelOpenedObserver.new
Sketchup.add_observer(observer)
@loaded = true
end
end # module HorizontalFacesUp
end # module AE
You can also test right away by pasting it into the ruby console, followed by ;Sketchup.active_model.add_observer(AE::HorizontalFacesUp::FaceOrientationObserver.new)
.
For example I keep drawing and I will not use push / pull. When I draw a new surface, I have to make a reverse face again.
I think the surface should be scribed as the front face and the face should be changed automatically when push / pull is used.
Select a face and use Preferences > Shortcuts to assign a key press to Reverse Faces.
This is then a quick way to reverse selected faces - it works en mass if needed.
I also assign key press to Orient tooâŚ
And after having that shortcut key, itâs enough to hover over faces with the Push/Pull tool to âselectâ and reverse faces with that specific key. Very fast workflow.
For drawing on the ground plane you get back faces on top.
For drawing other Z planes (drawing axes moved up or down) and for drawing on vertical planes the orientation seems to depend entirely on the direction of the diagonal when drawing the rectangle. Itâs predictable for stand alone rectangles.
For connected rectangles the orientation depends on adjacent connected faces.
SketchUp (like any other software) canât satisfy everyone. I like it the way it is, predictable.
I like SU too. But he should not decide which tool I should use at my place.
For example, the surface in the direction of the blue axis behaves differently. The same method should be in horizontal drawing.
You have only one groundplane to draw on, but an unlimited number of other horizontal (z unequal to 0) and vertical planes.
Also, the front<>back orientation is for stand alone new faces. Once you reverse a face on the ground the next connected face (should) respect the adjacent face orientation. SketchUp is helpful to you (the user) but it canât predict anyoneâs wishes. They vary.
If the P/P tool would have the option to choose to draw to front or back face results, wouldnât that be a drawback by itself. You would have to tell SU what to do each time.
The face that you draw vertically (xz-plane) is ambiguous because the user will see a backface, if not looking from left to right (as in the gif) then looking from the right to left (negative green axis direction). But for the vertical orientation (of a face in xy-plane), humans have a subjective feeling of what is right. And that is defined by the fact that we are all naturally born âaboveâ the ground, and expect the frontface being on top.
I donât understand where (or if) there is still a problem, are we still searching for solutions?
- we can manually fix individual faces afterwards (selection by hovering PushPull tool + shortcut for Reverse Faces)
- we can patch the default behavior with the plugin
Thank you so much for responding to all of you.
Regards.
I was about to create the exact same plugin myself some years ago but for some reason never completed it .
I thought I would add this note from the Entities add_face documentation:
Note that a special case exists for any face created on the ground plane, in which case the vertex order is ignored and the face is always facing down.
This topic was automatically closed after 91 days. New replies are no longer allowed.