I’m wondering if there’s a way to scale print width settings for layers while maintaining proportions?
e.g., layer 1 set to 0.5mm, layer 2 set to 1mm. Can I modify it such that these layer attributes scale relative to each other? E.g., 2x multiplier for layer 1 and 2 becomes 1mm and 2mm respectively.
I am aware that one can scale the output within the printing module as a different solution.
You can try this small script. Scales layer print widths chosen from a layer list. Any layers with print width “Default” are not scaled. Remembers last used scale value.
ScaleLayerPrintWidth.py (682 Bytes)
Helvetosaur, thank you so much <3
That’s exactly what I was looking for. This will help a lot.
I hope to learn to be able to code my own scripts one day… any recommendations on a reasonably quick way to learn?
Hi Helvetosaur, I apologise for reviving the thread, but it’s directly related to its content.
The ScaleLayerPrintWidth script as well as Layers to Objs, and Objs to Layers have become invaluable to my workflow when refining print widths for output. It saves significant time.
I am wondering if it is difficult to make it such, that these 3 script can automatically run on the selected layers, instead of having to manually select the layers from the drop down?
This would mean, that I can select objects, select layers of selected objects, then run the script. I always have the option to select all layers if I want a universal change.
I’m not sure exactly how you would like me to combine these. You select some objects - they already are on some layers. You press the button to run the script - what should happen? I assume it should ask you for a scale factor, but what else? What operations exactly should be performed on the objects/layers?
I’ll try to explain the situations better.
When running each of these scripts, the above menu comes up where I can manually select a bunch of layers, or the single layer of the ‘select’(ed) object through the button at the bottom.
I can think of a couple of ideal solutions.
- add a button at the bottom of that menu which says something like “Currently Selected Layers”
- omit the menu alltogether, and the script runs only on the selected layers immediately then asking for the scale factor. If these scripts were incorporated within Rhino, perhaps a sub option ‘All’ would be quick to apply to all layers.
I’ll give an example of how these scripts have been so helpful
In the image below; our school asked for a linework perspective (typical to MSD)
For this image, I ran the geometry through a GH definition which gave farther geometry thinner print widths.
Let’s say I wanted to maintain those fading relationships; but make the people thicker. I use the script “ScaleObjectPrintWidth” which gives a factor (so helpful).
But from here, I want to now do an Isometric, where the geometry does not recede, so I set the objects to print by layer.
Now, I want to maintain the relationships between the print widths of certain layers.
I do a test print, view it in acrobat, and check line thicknesses.
Back to Rhino, select objects whose layers I want to change, and call for ScaleLayerPrintWidth. This is where it would be handy to just scale those layers of the selected objects.
Hope this helps,
I found somewhat of a workabout solution.
Once the layers are selected, one can go to filter>selected layers. From there, when choose layer menu comes up, one can select all the layers to affect and it only shows the filtered layers.