This is a script to run in Rhino 3D Ver6. The script works. However, the selection windows comes up as the first pic. I would like it to be as in the second pic. I had found a thread that addressed using quotes by putting them within a mixture of slashes, quotes and apostrophes. I just could not get it to work.
[Image: Scale_opt.jpg]
[Image: Scale_opt_imp.jpg]
(Sep-13-2019, 07:03 PM)buran Wrote: [ -> ]items = ['1/16"', '1/8"','1/4"','3/8"','1/2"','3/4"','1-1/2"','1/6"','1:1'] scales = [f'{item}=1\'-0"' for item in items] print(scales) for scale in scales: print(scale)
Output:
['1/16"=1\'-0"', '1/8"=1\'-0"', '1/4"=1\'-0"', '3/8"=1\'-0"', '1/2"=1\'-0"', '3/4"=1\'-0"', '1-1/2"=1\'-0"', '1/6"=1\'-0"', '1:1=1\'-0"'] 1/16"=1'-0" 1/8"=1'-0" 1/4"=1'-0" 3/8"=1'-0" 1/2"=1'-0" 3/4"=1'-0" 1-1/2"=1'-0" 1/6"=1'-0" 1:1=1'-0"
This is the answer I think. However, I don't know how to incorporate your scales = [f'{item}.... with the scale = rs.ListBox...in the script I'm trying to edit. The full code is below.
[python]
import Rhino
import rhinoscriptsyntax as rs
import scriptcontext as sc
def setDetailScale():
"""
this script changes the scale of a detail to a selected scale from a listbox
version 1.0
www.studiogijs.nl
"""
detail = rs.GetObject("select detail", filter = 32768)
if not detail:
return
detail = rs.coercerhinoobject(detail)
if not detail.DetailGeometry.IsParallelProjection:
return
#modify the scale
items = ['1/16"', '1/8"','1/4"','3/8"','1/2"','3/4"','1-1/2"','1/6"','1:1']
scale = rs.ListBox(items, "Select scale", "Scale detail")
if not scale:
return
if scale == '1/16"':
intScale = 120
elif scale == '1/8"':
intScale = 96
elif scale == '1/4"':
intScale = 48
elif scale == '3/8"':
intScale = 36
elif scale == '1/2"':
intScale = 24
elif scale == '3/4"':
intScale = 12
elif scale == '1-1/2"':
intScale = 8
elif scale == '1/6"':
intScale = 6
elif scale == '1:1':
intScale = 1
detail.DetailGeometry.SetScale(intScale, sc.doc.ModelUnitSystem, 1, sc.doc.PageUnitSystem)
#lock detail
items = ["YES","NO"]
lock = rs.ListBox(items,"Lock Detail/s","YES","NO")
if lock == "YES":
detail.DetailGeometry.IsProjectionLocked = True
elif lock == "NO":
detail.DetailGeometry.IsProjectionLocked = False
detail.CommitChanges()
sc.doc.Views.Redraw()
if __name__ == '__main__':
setDetailScale()
[python]
Obviously I have not mastered posting the code here correctly. This should be a link to the file.
Rhino script.
(Sep-13-2019, 06:52 PM)ichabod801 Wrote: [ -> ]You can backslash it: '1/16"=1\'-0"'
.
I tried this. It worked for the first, 1/16"=1'-0". But when I changed the second the script crashed.