Curic Stretch Documentation

Sources:
Curic’s Short Demo Videos:

https://youtu.be/__gQKixlKWs?si=bJ2BF0Gk_zr_10UG
https://youtu.be/o3ZZYxaLAEo?si=GJCZXXNOCgu20u8C
https://youtu.be/tITx9UaKmeQ?si=dqw2DEr8B7HN8e-A
https://youtu.be/rfTChHfAx1I?si=X2C18Ra2E7r8QFH2
https://youtu.be/To9pWG8ii18?si=pR6_3WVkF6g3Qmhe
https://youtu.be/EQAxFflkmW0?si=B3kRrAM6yosFrxIw

TutorialsUp’s Longer Video:
https://youtu.be/NHWaGkMZNyw?si=-xCaKDeaPcE4BDFt

CURIC STRETCH

It was between doing Curic Stretch and Curic Section next. Section would be a much longer project and I still don’t feel comfortable enough with it to explain it well.

Curic Stretch is a tool that edits geometry by using Move mechanics in a way that disregards the group/component hierarchy. With its options for selection of vertices, edges, faces, or components, combined with it’s ability to work with preselected objects, it can perform hundreds of native move operations in about half a dozen clicks. It also has the option to automatically make unique versions of any objects modified by the operation. I think it’s the first Curic extension that made me really feel like SketchUp had the potential to be a powerful enough tool to use in my workflow.

It’s also fairly simple and predictable to use and understand. Certainly simpler than DIO and Offset/Intersect.

It has 3 tools and 5 toggles:

There are three different types of stretch tools:

Select Tool - select entities to stretch by clicking on them or click dragging a window around them.

Face Bounds Tool - select entities by click selecting a face. There are a lot of quirks with this tool that make it borderline unusable except for simple stretches. More on that later.

Box Bounds Tool - select entities by defining a box based on a precise rectangle and a preset and adjustable depth. Kind of a combination of Select and Face Bounds, but not really. More on that later.

Each of these tools results in a selection of objects including groups/components, faces, edges, and vertices that will be stretched. Information is presented in an overlay on the screen while the Stretch tool is active.

The stretch tool acts differently depending on which of the 5 toggles are set:

Make Unique? - with this toggled off, if there are any non-unique components in the selection set that will be affected by the stretch, the overlay will turn red and display information about them:

With it toggled on, the overlay will be blue like the previous example. Any stretched performed with Make Unique toggled on will automatically generate unique definitions for those components with the new dimensions.

Stretch Group / Component? - with this toggled off any groups and components are filtered out of the selection set for stretching.

Stretch Face? - with this toggled off any faces are filtered out of the selection set for stretching.

Stretch Edge? - with this toggled off any edges are filtered out of the selection set for stretching.

Stretch Vertex? - with this toggled off any vertices are filtered out of the selection set for stretching.

The first Curic video and the TutorialsUp video demonstrate these different selection filters.

Thankfully, unlike many of Curic’s other extensions, there aren’t a lot of sneaky context menus and functions in Stretch. During the tool you can right click and toggle the selection filters. There is a mystery “purge?” toggle, though. I have no idea what this toggle does.

SELECT TOOL

There are two primary ways to use this tool. The first way is by clicking on individual objects to stretch. The second Curic demonstration video shows this. The most basic use case of Stretch is to click an edge or face, then click again to start a stretch operation on it:

Basic stretch.

stretch 0

You can add and remove faces and edges from the selection set by using the CTRL and SHIFT keys respectively prior to starting the stretch operation. These are holds, not toggles.

CTRL and SHIFT modifiers to add to and remove objects from selection.

stretch 1

The other way to use Select is to click and drag a window selection around an area. Unlike the native select tool in SketchUp, this is never a crossing selection. Whether you drag from left to right or right to left, it only selects entities that are completely contained in the window. This method of selection is the most powerful and flexible of the 3 options.

Drag selection. Note that Curic Stretch allows using native inferences and VCB input to determine the stretch distance.
stretch 2

Curic Stretch allows preselection to further filter the entity selection. Just use native Select tool. Then once any Curic Stretch tool is selected, it will place a green dashed boundary around your preselect and exclude any other entities in the model from being selected for stretching.

Preselect.

stretch 6

Preselect can be used with CTRL and SHIFT to make very specific and powerful stretches.

FACE BOUNDS TOOL

It took me a while to figure out how to use this tool. What it appears to want to do is generate a stretch selection box based on a face pick. It has a parameter called Bound Height that can be input after the pick but before the stretch. The Bound Height determines how far in front of, behind, and around the face is chosen for selection.

In other words, if Bound Height is set to 4" and you click a 4" x 4" face, it will select a volume of 16" width x 16" height x 8" depth.

stretch 7

There are quirks with the Face Bounds tool. The normal Stretch Select using click and drag determines whether you have selected an entire instance or only part of it. If the whole instance is selected then it will only move that group or component as a whole. If part of the instance is selected then it will stretch the faces and edges within that instance.

In other words, the logic of Stretch Select is as follows:

  • Only allow selection objects that are part of the preselection, if there was one.
  • Select any faces or edges that are left clicked (using CTRL for more than one object)
  • For window selections, add any instances that are fully encompassed by the window. Ignore the contents of any selected instances, including nested instances. These will be moved by the stretch, not modified.
  • For window selections, add any faces that are fully encompassed by the window. These faces can be loose or part of an instance that wasn’t fully encompassed. This will modify instances.
  • For window selections, add any edges that are fully encompassed by the window. These faces can be loose or part of an instance that wasn’t fully encompassed. This will modify instances.
  • Any partial selection of edges will result in stretching the vertex of that edge (same as the native move tool).

Stretch Select on complex object. Notice how it selects 61 faces and 17 instances.

stretch 8

Attempting the stretch operation with Face Bounds yields unpredictable results. With a Bound Height of 8" we would expect it to grab all of the end faces of the planks and encompass the countertop and corbels. That’s not what happens.

Face Bounds on complex object. Notice how it selects 10 faces and 8 instances.

stretch 9

The logic of the Face Bounds selection is much different:

  • select the chosen face, and all contents of that face’s instance that are within the Bounds (determined by Bound Height). Those entities will be stretched or moved within the instance. This is important.
  • Select any instances that are fully encompassed by those Bounds. Those entities will be moved, not stretched.

So, essentially, while the Select tool works from the top down to suss out the simplest selection set, looking for whole instances at the highest level possible and only modifying instances that are partially selected, the Face Bounds tool does the opposite. It works from the bottom up selecting the faces and edges at the bottom level of the face that was picked and grabbing any fully encompassed objects from levels above that. It also can “double select” an instance. In my example, it moved the raw geometry of the countertop up 12" (off of it’s origin), then moved the component of the countertop itself an additional 12", then the top plates of the framing wall and the corbels up 12" as well. Since it has no ability to select faces outside of the countertop instance, it didn’t know to stretch the planks.

Assuming Curic intended it to work this way, the Face Bounds tool lends itself to some pretty specific use cases. It never wants to fully encompass the selected object. That causes the double move to happen. It’s meant to stretch the raw geometry of that component and move associated objects along with. The obvious example is to move a wall that is part of the same instance as other walls. This example is shown in the demo videos.

I’ll mess with it some more but I consider the Face Bounds tool to be borderline unusable due to how niche it appears to be and also because of some apparent bugs that it has.

BOX BOUNDS TOOL

The Box Bounds tool allows selecting a precise rectangular area and selects all entities within the box created from that Area and the Bound Height. Unlike the Face Bounds tool, it appears to follow similar logic to the normal Stretch Select.

Box Bounds on complex object. Notice how it selects 61 faces and 17 instances, the same as Stretch Select previously did.

stretch 12

While the Face Bounds tool used the Bound Height to set the offset in all directions around the face, the Box Bounds makes a hard selection boundary at that rectangle and only offsets the front and back of the face.

TAB can be used to toggle a rotated rectangle for Box Bounds. The TutorialsUp video demonstrates moving a diamond shaped window opening with it.

That’s about it for Box Bounds. It appears to a surgical version of Select that follows the same exact logic.

I think most people will use Select 95% of the time, Box Bounds 4% of the time, and Face Bounds 1% of the time. There really aren’t any crazy easter eggs with this tool. I still have no idea what the “Purge ?” toggle does.

Notes about VCB input:

  • No VCB is valid during selection.
  • It is allowed during stretch, but not after. In other words you can’t stretch 48", then type 36" after the fact. It accepts no input once the stretch operation is done.
  • It only allows decimal inputs, not fractions.
  • It allows feet and inches inputs.
  • It allows negative inputs for a stretch in reverse.

Other notes:

  • CTRL and SHIFT modifiers are most useful with the normal Stretch Select tool. It is not possible to select multiple Face Bounds or Box Bounds. Face Bounds has no CTRL/SHIFT options associated with it, and Box Bounds only has the option to click individual faces and edges to fine tune the selection.
    -The Bound Height seems to remember the last input and persist between SketchUp sessions.
  • If Make Unique is toggled on, the unique definitions are created as soon as objects are selected. This means that it will make multiple uniques even if they end up being the same size. This results in some extra redundant definitions being made. It is a good idea to keep your model clean by removing these definitions and replacing them with the common component. It may be better to leave Make Unique off for these cases and then fix the objects after the stretch.
  • On the same note, Curic Stretch is not smart enough to understand that it is modifying all of the instances of components that exist in a model. In other words, if you have two instances of a component in the model and make a selection that will result in stretching them both, it will automatically make them unique to one another.
  • I think that Curic Stretch sometimes makes sense to use as a Move tool substitute with Stretch Face/Edge/Vertex turned off. There isn’t really a “Curic Move” extension that works the way DIO does. Generally we still can’t move objects from the top level but Curic Stretch allows for this.

Bugs:

  • There appears to be a bug with the Face Bounds tool where it sometimes doesn’t select anything. I did a lot of experimentation and came up empty here. It seems to not like objects that are deeply nested or have a lot of instances.
  • Make Unique toggle does not work on the operation in progress. After changing it you need to exit the tool and start a new operation for it to take effect. The overlay will indicate in red that you’re changing other instances
  • Curic Stretch is pretty stable in SketchUp 2024. I’ve done some pretty complicated stretches on large models without issue. It doesn’t mind whether you’re working from the top or a few double clicks into a nested model. I had one bug splat using Box Bounds that I couldn’t repeat so it seemed to be a one-off.
3 Likes

A lot to absorb here, so I’ll need more time. Certainly more feature rich than Tak2Hata’s Stretch by Area, which I use a fair amount. Stretch by Area behaves as Curic Stretch with Make Unique toggled on and no other option. I wish there were more options than just red flagging them. I realize it’s a complicated problem that I don’t have an answer to.

1 Like

It seems like if the tool went through the rigor of predicting the results of the stretch before actually doing it, it would be able to handle the uniques in a smarter way. The problem is that it decides to make all the uniques before you even start. It would also be nice if it analyzed the objects left over and merged the ones that had the exact same geometry/tag/material etc.

That having been said, it’s hard to criticize a tool that offers this much modeling leverage despite its flaws.