What is the correct syntax for list items that need to contain a quotation mark, etc? - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: What is the correct syntax for list items that need to contain a quotation mark, etc? (/thread-21102.html) |
What is the correct syntax for list items that need to contain a quotation mark, etc? - KaisoArt - Sep-13-2019 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. RE: What is the correct syntax for list items that need to contain a quotation mark, etc? - ndc85430 - Sep-13-2019 I don't understand your notation. How do you translate from one to the other? Show us what you've tried. RE: What is the correct syntax for list items that need to contain a quotation mark, etc? - ichabod801 - Sep-13-2019 You can backslash it: '1/16"=1\'-0"' .
RE: What is the correct syntax for list items that need to contain a quotation mark, etc? - Axel_Erfurt - Sep-13-2019 items = ['1/16"', '1/8"','1/4"','3/8"','1/2"','3/4"','1-1/2"','1/6"','1:1'] print(', '.join(items)) RE: What is the correct syntax for list items that need to contain a quotation mark, etc? - buran - Sep-13-2019 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)
RE: What is the correct syntax for list items that need to contain a quotation mark, etc? - KaisoArt - Sep-13-2019 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) 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: I tried this. It worked for the first, 1/16"=1'-0". But when I changed the second the script crashed. RE: What is the correct syntax for list items that need to contain a quotation mark, etc? - KaisoArt - Sep-13-2019 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() RE: What is the correct syntax for list items that need to contain a quotation mark, etc? - buran - Sep-14-2019 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
|