Bottom Page

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
 What is the correct syntax for list items that need to contain a quotation mark, etc?
#1
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.
Quote
#2
I don't understand your notation. How do you translate from one to the other? Show us what you've tried.
Quote
#3
You can backslash it: '1/16"=1\'-0"'.
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures

Quote
#4
items = ['1/16"', '1/8"','1/4"','3/8"','1/2"','3/4"','1-1/2"','1/6"','1:1']
print(', '.join(items))
Quote
#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"
Quote
#6
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.

İmage


İmage


(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
http://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.
Quote
#7
Apologies for the post mess. I'm now getting the hang of posting here. Mods fix as necessary.
The code for the script:


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"=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)
    #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()
Quote
#8
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
    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)
    
    #lock detail
    items = ["YES","NO"]
    lock = rs.ListBox(items,"Lock Detail/s","YES","NO")
    detail.DetailGeometry.IsProjectionLocked = lock == 'YES'
    
    # if lock == "YES":
    #     detail.DetailGeometry.IsProjectionLocked = True
    # elif lock == "NO":
    #     detail.DetailGeometry.IsProjectionLocked = False

    
    detail.CommitChanges()
    sc.doc.Views.Redraw()
 
if __name__ == '__main__':
    setDetailScale()
If not using python3.7+ scales should be collections.OrderedDict
Quote

Top Page

Possibly Related Threads...
Thread Author Replies Views Last Post
  Replace Items in List. mcmxl22 3 119 Oct-07-2019, 05:05 AM
Last Post: Larz60+
  Reverse list items in a stupid way pyth0n123 4 233 Jul-28-2019, 02:52 PM
Last Post: pyth0n123
  syntax error on list.sort() jjordan33 3 203 Jul-10-2019, 04:57 PM
Last Post: jefsummers
  Count the number of items in a nested list iofhua 2 241 Jun-07-2019, 06:47 PM
Last Post: iofhua
  Shifting items in a list? MuntyScruntfundle 3 391 Feb-08-2019, 08:43 AM
Last Post: DeaD_EyE
  Replacing list items dan789 3 339 Feb-01-2019, 02:48 PM
Last Post: perfringo
  converting the items of a list in new lists clarablanes 2 344 Jan-13-2019, 12:54 PM
Last Post: clarablanes
  appending list items to other lists clarablanes 4 420 Dec-08-2018, 02:15 PM
Last Post: clarablanes
  File creating with question mark quffix pythonbabe 2 406 Nov-23-2018, 12:05 PM
Last Post: pythonbabe
  [Outlook] How to delete items from To-Do List? Winfried 1 481 Oct-19-2018, 09:05 PM
Last Post: nilamo

Forum Jump:


Users browsing this thread: 1 Guest(s)