# 1D-Scale by % or +/- cm to extend and contract

**URL:** <https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962>\
**Category:** Rhino\
**Tags:** windows\
**Created:** [March 23, 2023, 2:28pm UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962 "2023-03-23T14:28:51Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![hannesgrebinwork](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/hannesgrebinwork/32/444703_2.png) [@hannesgrebinwork](https://discourse.mcneel.com/u/hannesgrebinwork)\
**Post date:** [March 23, 2023, 2:28pm UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/1 "2023-03-23T14:28:51Z")

</div>

Dear all,  
Is there an option to do exactly that, I would like to scale objects and add or subtract length.

Thought I could type it in the command line as it would normally allow calculations.

Thank you

[https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/a/0/a/a0a5184971384b48f4a715f491dc1dea3c8ce28f.mp4](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/a/0/a/a0a5184971384b48f4a715f491dc1dea3c8ce28f.mp4)

---

<div class="post-metadata">

**Author:** ![maje90](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/maje90/32/762888_2.png) [@maje90](https://discourse.mcneel.com/u/maje90)\
**Post date:** [March 23, 2023, 2:46pm UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/2 "2023-03-23T14:46:20Z")

</div>

![2023-03-23 15_43_18-Window](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/2/3/1/231a58edab132257976514c12c9e66f1294b683c.png)  
To do % scaling, use the “factor”.  
Pick a base point for the center of the scale, then don’t input another point, but input a number instead.  
A 1.30 factor, for example, is like adding 30%.  
0.85 is like subtracting 25%… etc.

–

To “scale” by an +/- amount, you should look in the “stretch” concept. Or by turning on control points (Or solid control points “\_SolidPtOn”) and move the points.

---

<div class="post-metadata">

**Author:** ![hannesgrebinwork](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/hannesgrebinwork/32/444703_2.png) [@hannesgrebinwork](https://discourse.mcneel.com/u/hannesgrebinwork)\
**Post date:** [March 23, 2023, 5:27pm UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/3 "2023-03-23T17:27:46Z")

</div>

@maje90 Would this be a nice feature request? Because this -/+ units and % would be very handy with many commands.

Thank you!

---

<div class="post-metadata">

**Author:** ![martinsiegrist](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/martinsiegrist/32/498369_2.png) [@martinsiegrist](https://discourse.mcneel.com/u/martinsiegrist)\
**Post date:** [March 23, 2023, 6:52pm UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/4 "2023-03-23T18:52:55Z")

</div>

> [@maje90](#):
>
> move the points

Nudge is also quite useful for incremental transformations.

---

<div class="post-metadata">

**Author:** ![MattE](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/matte/32/664526_2.png) [@MattE](https://discourse.mcneel.com/u/MattE)\
**Post date:** [March 24, 2023, 1:04am UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/5 "2023-03-24T01:04:33Z")

</div>

Haven’t we been here before? 😄

> [@Workaround: how to type that something should scale 0.5mm smaller when 1Dscale?](https://discourse.mcneel.com/t/workaround-how-to-type-that-something-should-scale-0-5mm-smaller-when-1dscale/16851/19):
>
> YEEEW! ok thought this would run instantly by dragging as all other scripts like MinBoundingBox which I run via Aliases. Never thought this would install as a regular command. Is there any idea behind which would install and which script is only running one time only? Thanks soo much Matt for helping along.

I know it’s an old script. Don’t know if it’ll work in V8 (or V7 for that matter).

---

<div class="post-metadata">

**Author:** ![hannesgrebinwork](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/hannesgrebinwork/32/444703_2.png) [@hannesgrebinwork](https://discourse.mcneel.com/u/hannesgrebinwork)\
**Post date:** [March 24, 2023, 10:01am UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/6 "2023-03-24T10:01:10Z")

</div>

@MattE HAHA

You are a start, remembered, Time to always look into my activity first. Put me a set me a shortcut in Chrome for that - time to set it also up for my personal account 🙂

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/f/1/5/f155de7394b9f2fde5217da7d053a3815315990b.png)

Thanks mate - this was a very useful script as I remember.

Do you know whether there is a function to favorite any post on discourse/forum?

H

---

<div class="post-metadata">

**Author:** ![MattE](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/matte/32/664526_2.png) [@MattE](https://discourse.mcneel.com/u/MattE)\
**Post date:** [March 24, 2023, 10:21am UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/7 "2023-03-24T10:21:12Z")

</div>

I usually bookmark the threads I may want to go back to. Not perfect, but it narrows down the search a lot.

As for the scripts - I always save them to my plugins and scripts folders for future use. The main problem I have is remebering what they are supposed to do when I finally get around to using them 😅

---

<div class="post-metadata">

**Author:** ![hannesgrebinwork](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/hannesgrebinwork/32/444703_2.png) [@hannesgrebinwork](https://discourse.mcneel.com/u/hannesgrebinwork)\
**Post date:** [March 24, 2023, 10:26am UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/8 "2023-03-24T10:26:07Z")

</div>

I not frequently use pocket for this. Also not optimal but you can tag saves.

Besides pascals script ressource, is there a more profound platform where I could find scripts and their explanation/summary?

---

<div class="post-metadata">

**Author:** ![benedict](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/benedict/32/535424_2.png) [@benedict](https://discourse.mcneel.com/u/benedict)\
**Post date:** [March 24, 2023, 11:22am UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/9 "2023-03-24T11:22:57Z")

</div>

I often go with gumball, where you can also type calculations. if your thing is like 10 long and you want it at 12, you can ximply type 12/10 in gumball. depending on where you’ve got the pivot, it makes exactly what you are looking for.

---

<div class="post-metadata">

**Author:** ![hannesgrebinwork](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/hannesgrebinwork/32/444703_2.png) [@hannesgrebinwork](https://discourse.mcneel.com/u/hannesgrebinwork)\
**Post date:** [March 24, 2023, 11:26am UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/10 "2023-03-24T11:26:58Z")

</div>

But these are all workarounds, command line calculations feature request dates back to 2014 as far as I know and it is not working.

Should be a game changer: “+/- digit - unit” and “%” working

---

<div class="post-metadata">

**Author:** ![benedict](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/benedict/32/535424_2.png) [@benedict](https://discourse.mcneel.com/u/benedict)\
**Post date:** [March 24, 2023, 11:57am UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/11 "2023-03-24T11:57:16Z")

</div>

I’d call it different workflow, not necessarily a workaround. I understand you have very precise ideas on how Rhino should work for your workflow. Finally it will take you some time to adjust everything for needs, but the nice thing is that Rhino is capable with the help of macros, rhinoScript and py c# and vb.  
I’m pretty sure you’ll end up learning py or c#.

Have a good one 🙂

---

<div class="post-metadata">

**Author:** ![hannesgrebinwork](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/hannesgrebinwork/32/444703_2.png) [@hannesgrebinwork](https://discourse.mcneel.com/u/hannesgrebinwork)\
**Post date:** [March 24, 2023, 12:12pm UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/12 "2023-03-24T12:12:29Z")

</div>

I will make some space to think about your ideas on the weekend. Sounds promising!

---

<div class="post-metadata">

**Author:** ![EricM](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/ericm/32/478994_2.png) [@EricM](https://discourse.mcneel.com/u/EricM)\
**Post date:** [March 24, 2023, 12:33pm UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/13 "2023-03-24T12:33:34Z")

</div>

I do this all day, changing something that is 1.5mm into something that is 1.7mm.

It’s easy to remember how to turn something from units into a percent scale:

> the size you want it to be / the size that it is now.  
> to / from

I keep BoxEdit open so I can reference the current size when scaling. Say something is 1.5 and I want it to be 1.7, the to / from = 1.7 / 1.5:

![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/0/f/d/0fd3cfe7fb0ebc4b2b915ebe9064bf9b15629869.png)

Then when it’s 1.7 and you need it to be 1.5 again, then the to / from = 1.5 / 1.7:

![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/e/7/e/e7ebf0b4352cbd016bbe1caf994dd373669bc1d1.png)

---

<div class="post-metadata">

**Author:** ![pascal](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/pascal/32/479395_2.png) [@pascal](https://discourse.mcneel.com/u/pascal)\
**Post date:** [March 24, 2023, 3:07pm UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/14 "2023-03-24T15:07:48Z")

</div>

Hi Hannes - see how this works:

[ScaleByIncrement.py](https://discourse.mcneel.com/uploads/short-url/ppQorDhE1ORrnUldkQVB2NrbFiT.py) (3.7 KB)

To use the Python script use `RunPythonScript`, or a macro:

`_-RunPythonScript "Full path to py file inside double-quotes"`

-Pascal

---

<div class="post-metadata">

**Author:** ![hannesgrebinwork](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/hannesgrebinwork/32/444703_2.png) [@hannesgrebinwork](https://discourse.mcneel.com/u/hannesgrebinwork)\
**Post date:** [March 24, 2023, 7:14pm UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/15 "2023-03-24T19:14:30Z")

</div>

YeSSS

Thank you @pascal!

---

<div class="post-metadata">

**Author:** ![hannesgrebin](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/hannesgrebin/32/500820_2.png) [@hannesgrebin](https://discourse.mcneel.com/u/hannesgrebin)\
**Post date:** [March 31, 2023, 11:48pm UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/16 "2023-03-31T23:48:20Z")

</div>

@pascal thank you again for making this happen.

It works very good.

I would suggest to even simplify this script for peace of mind as we have all scale tools available:

Just ideas:

1. Maybe get rid of ScaleMode as I want to have it work by increment (it’s the name of the script)

2. get rid of ScaleDimension as we have other scale tools that work better for the purpose.

3. Also Set scale direction, the cursor is freefloating, and this feels not good - sure I can use object snaps to the end of an object, but I feel it would be much better, if there is a direction constraint into 1D same behavior as 1D scale

I still wonder, why it is so difficult to include simple numerical calculation into the command line.

As I suggested I just would type+2cm or +2 when using 1D Scale or percent numbers or would use results/sums of calculations.

Would be way easier and intuitive.

What do you think?

Hannes

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/c/5/d/c5dd236173abb22043e730f35ba4412a319beec3.png)

---

<div class="post-metadata">

**Author:** ![pascal](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/pascal/32/479395_2.png) [@pascal](https://discourse.mcneel.com/u/pascal)\
**Post date:** [April 1, 2023, 2:51am UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/17 "2023-04-01T02:51:50Z")

</div>

Hi Hannes - I fixed a couple of bugs, script up dated above, and added the line drawing from the base point, which indeed I’d forgotten, and made Increment the defauklt mode

So, compared to Scale\* this does things a little differently - all you give it is a base point and a direction and it figures out how big the object is in that direction and makes it the size you ask in that same direction - any arbitrary direction - there is no reference point as in Scale\* commands, so you do not need to find a snap point at each end of the scale to set the base distance - this might be hard or impossible on some (say blobby ) objects.  
It would be easy enough I think to allow say selection of existing objects, or dimension objects as the source of the desired incrment or absolute size in that direction.

-Pascal

---

<div class="post-metadata">

**Author:** ![hannesgrebin](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/hannesgrebin/32/500820_2.png) [@hannesgrebin](https://discourse.mcneel.com/u/hannesgrebin)\
**Post date:** [April 4, 2023, 12:28pm UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/18 "2023-04-04T12:28:17Z")

</div>

@pascal I am working with it. Just asking, is it difficult to change the code to have a 1D-scale like behaviour just with the added setting of increment? Would be very cool as I do not like the free floating option to set the direction point. Want to have it precise and because of object snaps etc there is a potential risk of fucking up precision while modelling as you might not notice wrong snaps.

Thank you

PS: just the 1D-Scale command with increment option would be exactly what I was looking for.

Here you see the error if you won’t properly constrain direction by pressing SHIFT

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/a/6/0/a60f49114a718c4be12f4ad986bf040f8b5dd0e2.png)

---

<div class="post-metadata">

**Author:** ![pascal](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/pascal/32/479395_2.png) [@pascal](https://discourse.mcneel.com/u/pascal)\
**Post date:** [April 4, 2023, 2:20pm UTC](https://discourse.mcneel.com/t/1d-scale-by-or-cm-to-extend-and-contract/156962/19 "2023-04-04T14:20:13Z")

</div>

Hi Hannes - what I posted (updated a day or two ago) should work with osnaps and ortho and draw the expected line. I do understand what you are asking, I’ll try to get to it - this was all piled onto an existing script.

-Pascal
