Push/Pull algorithm

Can anyone tell me how the algorithm that underlies the Push/Pull operation works? I ask because it does not always seem consistent when you double click to repeat an operation.

In general, it seems to follow the principle of pushing in the same direction (and distance) relative to a face. So if you push through a wall to form an opening and then double click on other shapes drawn on the same surface, PP reliably pushes them all through. Providing all surfaces are consistently shown with (say) outside faces, it doesn’t matter what orientation the wall is or whether you start your opening on the inside or outside.

Similarly, if you have a length of wall showing outside faces, you can use PP to shorten one end and then repeat the operation on the opposite end. It will shorten it further by the same amount. But if one end has faces reversed, PP lengthens the wall. That is all clear enough.

The problem comes erratically when, despite having all faces showing as external, the operation repeated does not work as expected but as if the second face were an internal face.

Is this just one of those rare inconsistencies that is impossible to understand but that everyone has experienced, or is there a logic to it (I mean, it’s a computer program so there must be logic, right?). Or maybe I’m alone on this?

1 Like

I’ve also noticed oddities in the PushPull double click direction but never investigated it thoroughly. Maybe the camera position also matters? In other places, e.g. volume calculation, SU tries to be forgiving even if you have reverse faces, so it might be looking for other things than face normal direction.

Maybe we should ask someone on the Sketchup Team??

1 Like

I’ve also seen this sometimes and wondered if it had to do with the winding direction of the face’s loop vs the directions of the edges - but never dug deeper.


I guess the point is that it is not totally reliable. If we knew its internal logic, we could maybe make allowances but as things stand, the only option is to delete the operation and redo it another way. Not a big deal but a bit annoying.

Anyway, good to know I am not alone!

One thing is for sure, a peanut buttered sandwich always falls down on the buttered side!
With the new ‘butter side up’ creation of rectangles, surely the developers must have dug into it…

If you strap it to a cats back, which we all know always lands on its feet, it just spins in mid air.


And if you connect it to a generator you have infinite free electricity.


Except for one thing… Apparently, you should expect the sandwich to fall on its face.


I am 1.96 M, my sandwiches always rotate 360 when standing up!

1 Like

Jack, I can believe that if you drop it just before you take your first bite but if it started at table height you’re in the same boat as us shorties (I am 1.7m).

You can tell we’re not getting any closer to an answer, can’t you?

I don’t have the proper mindset to test thoroughly, I used KG_dev select by ID to check if a pulled face from the groundplane is actually the same as the top one.
But I forgot the results…
With the former update, the ‘stretch’ modifier got some attention from the developers, might be only in the statusbar and instructor panel, but I am sure they needed to dive a little deeper in the general workings of the P/P tool.

Each face has a ‘normal’, the (repeated) push/pull action should respond on it the same way in general, I believe.
But I suspect the ‘clockwise’ creation also has impact.
I once read that when developers are trying to solve a problem, they might come up with the same solution independently from each other, so a developer’s response might give some insight…

Don’t really understand what is meant by this.

If you create a wall by drawing a rectangle on the ground and PPing it up to give it height in the Z axis, there is no clock or anti-clock creation AFAIK. Applying a PP operation to any face created will be recreated as anticipated on double click most of the time. But there’s just that odd time when the software seems to be chuckling at you and saying “Thought you knew me? Eat my pants!”

I am reassured to learn that it is not my idiocy and that other much more eminent users have encountered the issue. That is leavened by a worry that even the experts may not know what is going on!

The rectangle is comprised of four edges. The four edges of the rectangle presumably have some ordering within SketchUp’s internal geometric representation. Perhaps the user could influence the order (by rubber-banding the initial rectangle left-to-right vs. right-to-left), but by and large the winding order of the rectangle’s four edges would be determined by the Rectangle tool.

I think I see… but given that you could form the initial rectangle left to right or front to back and then either extrude it upwards or downwards, you would need a heck of a handle on the “winding order”. The 'pooter might understand it but no ordinary mortal would!

I was just responding to the comment that a shape created by the Rectangle tool has no winding order. I have no idea if a polygon’s winding-order factors into the behavior of the Push Pull tool. Personally, I hope it does not. I agree that such a behavior would be very inscrutable for users.

Glad Simon started this conversation. Curious what comments come from the “code wizards” I’ve always figured this occasional weird PushPull behavior was because I wasn’t holding my tongue right ! :crazy_face:

I have always wondered whether front face/back face was actually one and the same with the winding order, but I have no idea. Maybe @slbaumgartner can enlighten on that.

Ive noticed this, too. Haven’t had a problem with the various “multiple push/pull extensions”…they seem to get it right.

it is annoying particularly when raising 2d walls into 3d walls. It’s a process we need speed and efficiency, but the pull push behaviour makes it take 3x longer. ( and it looks a bit sloppy if presenting while live modelling)

The logic about which face is outwards was changed in one of the 2021 updates. Previously a face drawn on the ground was drawn with the back face towards you, on the assumption that you’re about to push pull it into a volume, and so the outer face will be correct. That left some unexpected outcomes, where the face you ended up with would be based on whether you’re on the ground, and also what direction you are looking.

With the update, the outer face is always towards the camera. When you push pull a face on the ground, something special is done to flip the face, to leave you with the desired results, of that face pointing outwards and not inwards.

Similar fixes were done with follow me. We would all be quite rich if we had a dollar for every time that @TheOnlyAaron produced a solid in a live stream, where the faces needed to be reversed. Now it should be that most follow me actions will leave you with the faces outwards.