Posts: 3
Threads: 1
Joined: Sep 2019
Sep-13-2019, 06:42 PM
(This post was last modified: Sep-13-2019, 06:43 PM by KaisoArt.)
A script I have has this line:
items = ['1/16"', '1/8"','1/4"','3/8"','1/2"','3/4"','1-1/2"','1/6"','1:1']
This displays as 1/16", 1/8", etc.
I'd like it to display as architectural scales 1/16"=1'-0", 1/8"=1'-0" etc.
What is the correct syntax for that? Nothing I've tried so far works.
Posts: 1,838
Threads: 2
Joined: Apr 2017
I don't understand your notation. How do you translate from one to the other? Show us what you've tried.
Posts: 4,220
Threads: 97
Joined: Sep 2016
You can backslash it: '1/16"=1\'-0"' .
Posts: 1,035
Threads: 16
Joined: Dec 2016
1 2 |
items = [ '1/16"' , '1/8"' , '1/4"' , '3/8"' , '1/2"' , '3/4"' , '1-1/2"' , '1/6"' , '1:1' ]
print ( ', ' .join(items))
|
Posts: 8,169
Threads: 160
Joined: Sep 2016
1 2 3 4 5 |
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"
Posts: 3
Threads: 1
Joined: Sep 2019
Sep-13-2019, 08:44 PM
(This post was last modified: Sep-13-2019, 09:13 PM by KaisoArt.)
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:
1 |
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.
Posts: 3
Threads: 1
Joined: Sep 2019
Apologies for the post mess. I'm now getting the hang of posting here. Mods fix as necessary.
The code for the script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
import Rhino
import rhinoscriptsyntax as rs
import scriptcontext as sc
def setDetailScale():
detail = rs.GetObject( "select detail" , filter = 32768 )
if not detail:
return
detail = rs.coercerhinoobject(detail)
if not detail.DetailGeometry.IsParallelProjection:
return
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"=1\'-0"' :
intScale = 120
elif scale = = '1/8"-1\'-0"' :
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)
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()
|
Posts: 8,169
Threads: 160
Joined: Sep 2016
Sep-14-2019, 05:26 AM
(This post was last modified: Sep-14-2019, 05:26 AM by buran.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
import Rhino
import rhinoscriptsyntax as rs
import scriptcontext as sc
def setDetailScale():
detail = rs.GetObject( "select detail" , filter = 32768 )
if not detail:
return
detail = rs.coercerhinoobject(detail)
if not detail.DetailGeometry.IsParallelProjection:
return
scales = { '1/16"=1\'-0"' : 120 , '1/8"=1\'-0"' : 96 , '1/4"=1\'-0"' : 48 ,
'3/8"=1\'-0"' : 36 , '1/2"=1\'-0"' : 24 , '3/4"=1\'-0"' : 12 ,
'1-1/2"=1\'-0"' : 8 , '1/6"=1\'-0"' : 6 , '1:1=1\'-0"' : 1 }
scale = rs.ListBox(scales.keys(), "Select scale" , "Scale detail" )
if not scale:
return
intScale = scales.get[scale]
detail.DetailGeometry.SetScale(intScale, sc.doc.ModelUnitSystem, 1 , sc.doc.PageUnitSystem)
items = [ "YES" , "NO" ]
lock = rs.ListBox(items, "Lock Detail/s" , "YES" , "NO" )
detail.DetailGeometry.IsProjectionLocked = lock = = 'YES'
detail.CommitChanges()
sc.doc.Views.Redraw()
if __name__ = = '__main__' :
setDetailScale()
|
If not using python3.7+ scales should be collections.OrderedDict
|