Reverse Face Always?


#1

The surfaces I draw for the first time are always drawn in reverse. I always have to reverse it. Are there any settings?


Why some spheres shows reversed faces?
#2

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.


#3

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.


#4

I agree with Aerilius


#5

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.


#6

I did not understand. Is this just for push / pull? Should not I decide whether to use push / pull? Interesting!


#7

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).


#8

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.


#9

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…


#10

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.


#11

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.


#12

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.


#13

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

#14

Thank you so much for responding to all of you.
Regards.


#15

I was about to create the exact same plugin myself some years ago but for some reason never completed it :stuck_out_tongue: .


#16

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.


#17

This topic was automatically closed after 91 days. New replies are no longer allowed.