Hi All,
I have been working on a python 3 script with multiple drop down boxes, I have been assisted by Callum and Curtis and now I have the drop downs working with my dictionary.
As this is not written in my usual format which my poor head can follow I find myself struggling to get a Cancel and Ok button on the form and upon clicking “OK” I want to return each of the four drop down list items selected a= dd1, b=dd2, etc.
I have inserted the script as I cannot download a PY3 file, all help appreciated
#! python3
# Imports
import scriptcontext as sc
import rhinoscriptsyntax as rs
import Rhino
from Rhino.UI import RhinoEtoApp, EtoExtensions
from Eto.Drawing import Padding, Size
from Eto.Forms import Dialog, DropDown, DynamicLayout
import Eto.Forms as forms
from System.Collections.ObjectModel import ObservableCollection
items1 = []
#Geo Pipework dialog class
class GeoPipeworkDialog(forms.Dialog[bool]):
# Dialog box Class initializer
def __init__(dialog):
# call base class initializer
super().__init__()
dialog = Dialog()
dialog.Title = "Geo Pipework"
dialog.Width = 800
dialog.Padding = Padding(10)
# One data source for simplicity. Dictionaries are always good.
data = {
"ASME B 16.5": ['ASME B 16.5 45 Long Radius Elbows', 'ASME B 16.5 90 Long Radius Elbows', 'ASME B 16.5 90 Short Radius Elbows', 'ASME B 16.5 As Built Elbows', 'ASME B 16.5 Blind Flanges', 'ASME B 16.5 Flush Face Weld Neck Flanges', 'ASME B 16.5 Pipe', 'ASME B 16.5 Pulled Bends', 'ASME B 16.5 Raised Face Weld Neck Flanges', 'ASME B 16.5 SS Concentric Reducers', 'ASME B 16.5 SS Eccentric Reducers', 'ASME B 16.5 Slip On Flanges', 'ASME B 16.5 Socket Flanges', 'ASME B 16.5 Weld Neck Raised Face Ring Type Joints'],
'ASME B 16.5 45 Long Radius Elbows': ['1 1/2 D Elbow', '1 D Elbow', '2 D Elbow', '3 D Elbow', '4 D Elbow', '5 D Elbow', '6 D Elbow'],
'ASME B 16.5 90 Long Radius Elbows': ['1 1/2 D Elbow', '1 D Elbow', '2 D Elbow', '3 D Elbow', '4 D Elbow', '5 D Elbow', '6 D Elbow'],
'ASME B 16.5 90 Short Radius Elbows': ['1 1/2 D Elbow', '1 D Elbow', '2 D Elbow', '3 D Elbow', '4 D Elbow', '5 D Elbow', '6 D Elbow'],
'ASME B 16.5 As Built Elbows': ['1 1/2 D Elbow', '1 D Elbow', '2 D Elbow', '3 D Elbow', '4 D Elbow', '5 D Elbow', '6 D Elbow'],
'ASME B 16.5 Blind Flanges': ['150 lb Rating', '300 lb Rating', '400 lb Rating', '600 lb Rating', '900 lb Rating', '1500 lb Rating', '2500 lb Rating'],
'ASME B 16.5 Flush Face Weld Neck Flanges': ['150 lb Rating', '300 lb Rating', '400 lb Rating', '600 lb Rating', '900 lb Rating', '1500 lb Rating', '2500 lb Rating'],
'ASME B 16.5 Pipe': ['150 lb Rating', '300 lb Rating', '400 lb Rating', '600 lb Rating', '900 lb Rating', '1500 lb Rating', '2500 lb Rating'],
'ASME B 16.5 Pulled Bends': ['1 1/2 D Elbow', '1 D Elbow', '2 D Elbow', '3 D Elbow', '4 D Elbow', '5 D Elbow', '6 D Elbow'],
'ASME B 16.5 Raised Face Weld Neck Flanges': ['150 lb Rating', '300 lb Rating', '400 lb Rating', '600 lb Rating', '900 lb Rating', '1500 lb Rating', '2500 lb Rating'],
'ASME B 16.5 SS Concentric Reducers': ['3/4 x 1/2 inch', '3/4 x 3/8 inch', '1 x 3/4 inch', '1 x 1/2 inch', '1 x 3/8 inch', '1 1/4 x 1 inch', '1 1/4 x 3/4 inch', '1 1/4 x 1/2 inch', '1 1/2 x 1 1/4 inch', '1 1/2 x 1 inch', '1 1/2 x 3/4 inch', '1 1/2 x 1/2 inch', '2 x 1 1/2 inch', '2 x 1 1/4 inch', '2 x 1 inch', '2 x 3/4 inch', '2 1/2 x 2 inch', '2 1/2 x 1 1/2 inch', '2 1/2 x 1 1/4 inch', '2 1/2 x 1 inch', '3 x 2 1/2 inch', '3 x 2 inch', '3 x 1 1/2 inch', '3 x 1 1/4 inch', '3 1/2 x 3 inch', '3 1/2 x 2 1/2 inch', '3 1/2 x 2 inch', '3 1/2 x 1 1/2 inch', '3 1/2 x 1 1/4 inch', '4 x 3 1/4 inch', '4 x 3 inch', '4 x 2 1/2 inch', '4 x 2 inch', '4 x 1 1/2 inch', '5 x 4 inch', '5 x 3 1/2 inch', '5 x 3 inch', '5 x 2 1/2 inch', '5 x 2 inch', '6 x 5 inch', '6 x 4 inch', '6 x 3 1/2 inch', '6 x 3 inch', '6 x 2 1/2 inch', '8 x 6 inch', '8 x 5 inch', '8 x 4 inch', '8 x 3 1/2 inch', '10 x 8 inch', '10 x 6 inch', '10 x 5 inch', '10 x 4 inch', '12 x 10 inch', '12 x 8 inch', '12 x 6 inch', '12 x 5 inch', '14 x 12 inch', '14 x 10 inch', '14 x 8 inch', '14 x 6 inch', '16 x 14 inch', '16 x 12 inch', '16 x 10 inch', '16 x 8 inch', '18 x 16 inch', '18 x 14 inch', '18 x 12 inch', '18 x 10 inch', '20 x 18 inch', '20 x 16 inch', '20 x 14 inch', '20 x 12 inch', '22 x 20 inch', '22 x 18 inch', '22 x 16 inch', '22 x 14 inch', '24 x 22 inch', '24 x 20 inch', '24 x 18 inch', '24 x 16 inch'],
'ASME B 16.5 SS Eccentric Reducers': ['3/4 x 1/2 inch', '3/4 x 3/8 inch', '1 x 3/4 inch', '1 x 1/2 inch', '1 x 3/8 inch', '1 1/4 x 1 inch', '1 1/4 x 3/4 inch', '1 1/4 x 1/2 inch', '1 1/2 x 1 1/4 inch', '1 1/2 x 1 inch', '1 1/2 x 3/4 inch', '1 1/2 x 1/2 inch', '2 x 1 1/2 inch', '2 x 1 1/4 inch', '2 x 1 inch', '2 x 3/4 inch', '2 1/2 x 2 inch', '2 1/2 x 1 1/2 inch', '2 1/2 x 1 1/4 inch', '2 1/2 x 1 inch', '3 x 2 1/2 inch', '3 x 2 inch', '3 x 1 1/2 inch', '3 x 1 1/4 inch', '3 1/2 x 3 inch', '3 1/2 x 2 1/2 inch', '3 1/2 x 2 inch', '3 1/2 x 1 1/2 inch', '3 1/2 x 1 1/4 inch', '4 x 3 1/4 inch', '4 x 3 inch', '4 x 2 1/2 inch', '4 x 2 inch', '4 x 1 1/2 inch', '5 x 4 inch', '5 x 3 1/2 inch', '5 x 3 inch', '5 x 2 1/2 inch', '5 x 2 inch', '6 x 5 inch', '6 x 4 inch', '6 x 3 1/2 inch', '6 x 3 inch', '6 x 2 1/2 inch', '8 x 6 inch', '8 x 5 inch', '8 x 4 inch', '8 x 3 1/2 inch', '10 x 8 inch', '10 x 6 inch', '10 x 5 inch', '10 x 4 inch', '12 x 10 inch', '12 x 8 inch', '12 x 6 inch', '12 x 5 inch', '14 x 12 inch', '14 x 10 inch', '14 x 8 inch', '14 x 6 inch', '16 x 14 inch', '16 x 12 inch', '16 x 10 inch', '16 x 8 inch', '18 x 16 inch', '18 x 14 inch', '18 x 12 inch', '18 x 10 inch', '20 x 18 inch', '20 x 16 inch', '20 x 14 inch', '20 x 12 inch', '22 x 20 inch', '22 x 18 inch', '22 x 16 inch', '22 x 14 inch', '24 x 22 inch', '24 x 20 inch', '24 x 18 inch', '24 x 16 inch'],
'ASME B 16.5 Slip On Flanges': ['150 lb Rating', '300 lb Rating', '400 lb Rating', '600 lb Rating', '900 lb Rating', '1500 lb Rating', '2500 lb Rating'],
'ASME B 16.5 Socket Flanges': ['150 lb Rating', '300 lb Rating', '400 lb Rating', '600 lb Rating', '900 lb Rating', '1500 lb Rating', '2500 lb Rating'],
'ASME B 16.5 Weld Neck Raised Face Ring Type Joints': ['150 lb Rating', '300 lb Rating', '400 lb Rating', '600 lb Rating', '900 lb Rating', '1500 lb Rating', '2500 lb Rating'],
"ASME B 16.47": ['ASME B 16.47 Raised Face Weld Neck Flanges'],
'ASME B 16.47 Raised Face Weld Neck Flanges': ['150 lb Rating', '300 lb Rating', '400 lb Rating', '600 lb Rating', '900 lb Rating', '1500 lb Rating', '2500 lb Rating'],
#220: [221, 222, 223],
#230: [231, 232, 233],
300: ['1 1/2 D Elbow', '1 D Elbow', '2 D Elbow', '3 D Elbow', '4 D Elbow', '5 D Elbow', '6 D Elbow'],
'1 1/2 D Elbow': ['1/4 inch', '3/8 inch', '1/2 inch', '3/4 inch', '1 inch', '1 1/4 inch', '1 1/2 inch', '2 inch', '2 1/2 inch', '3 inch', '3 1/2 inch', '4 inch', '5 inch', '6 inch', '8 inch', '10 inch', '12 inch', '14 inch', '16 inch', '18 inch', '20 inch', '22 inch', '24 inch'],
'1 D Elbow': ['1/4 inch', '3/8 inch', '1/2 inch', '3/4 inch', '1 inch', '1 1/4 inch', '1 1/2 inch', '2 inch', '2 1/2 inch', '3 inch', '3 1/2 inch', '4 inch', '5 inch', '6 inch', '8 inch', '10 inch', '12 inch', '14 inch', '16 inch', '18 inch', '20 inch', '22 inch', '24 inch'],
'2 D Elbow': ['1/4 inch', '3/8 inch', '1/2 inch', '3/4 inch', '1 inch', '1 1/4 inch', '1 1/2 inch', '2 inch', '2 1/2 inch', '3 inch', '3 1/2 inch', '4 inch', '5 inch', '6 inch', '8 inch', '10 inch', '12 inch', '14 inch', '16 inch', '18 inch', '20 inch', '22 inch', '24 inch'],
'3 D Elbow': ['1/4 inch', '3/8 inch', '1/2 inch', '3/4 inch', '1 inch', '1 1/4 inch', '1 1/2 inch', '2 inch', '2 1/2 inch', '3 inch', '3 1/2 inch', '4 inch', '5 inch', '6 inch', '8 inch', '10 inch', '12 inch', '14 inch', '16 inch', '18 inch', '20 inch', '22 inch', '24 inch'],
'4 D Elbow': ['1/4 inch', '3/8 inch', '1/2 inch', '3/4 inch', '1 inch', '1 1/4 inch', '1 1/2 inch', '2 inch', '2 1/2 inch', '3 inch', '3 1/2 inch', '4 inch', '5 inch', '6 inch', '8 inch', '10 inch', '12 inch', '14 inch', '16 inch', '18 inch', '20 inch', '22 inch', '24 inch'],
'5 D Elbow': ['1/4 inch', '3/8 inch', '1/2 inch', '3/4 inch', '1 inch', '1 1/4 inch', '1 1/2 inch', '2 inch', '2 1/2 inch', '3 inch', '3 1/2 inch', '4 inch', '5 inch', '6 inch', '8 inch', '10 inch', '12 inch', '14 inch', '16 inch', '18 inch', '20 inch', '22 inch', '24 inch'],
'6 D Elbow': ['1/4 inch', '3/8 inch', '1/2 inch', '3/4 inch', '1 inch', '1 1/4 inch', '1 1/2 inch', '2 inch', '2 1/2 inch', '3 inch', '3 1/2 inch', '4 inch', '5 inch', '6 inch', '8 inch', '10 inch', '12 inch', '14 inch', '16 inch', '18 inch', '20 inch', '22 inch', '24 inch'],
400: ['1/4 inch', '3/8 inch', '1/2 inch', '3/4 inch', '1 inch', '1 1/4 inch', '1 1/2 inch', '2 inch', '2 1/2 inch', '3 inch', '3 1/2 inch', '4 inch', '5 inch', '6 inch', '8 inch', '10 inch', '12 inch', '14 inch', '16 inch', '18 inch', '20 inch', '22 inch', '24 inch'],
'150 lb Rating': ['1/4 inch', '3/8 inch', '1/2 inch', '3/4 inch', '1 inch', '1 1/4 inch', '1 1/2 inch', '2 inch', '2 1/2 inch', '3 inch', '3 1/2 inch', '4 inch', '5 inch', '6 inch', '8 inch', '10 inch', '12 inch', '14 inch', '16 inch', '18 inch', '20 inch', '22 inch', '24 inch'],
'300 lb Rating': ['1/4 inch', '3/8 inch', '1/2 inch', '3/4 inch', '1 inch', '1 1/4 inch', '1 1/2 inch', '2 inch', '2 1/2 inch', '3 inch', '3 1/2 inch', '4 inch', '5 inch', '6 inch', '8 inch', '10 inch', '12 inch', '14 inch', '16 inch', '18 inch', '20 inch', '22 inch', '24 inch'],
'400 lb Rating': ['1/4 inch', '3/8 inch', '1/2 inch', '3/4 inch', '1 inch', '1 1/4 inch', '1 1/2 inch', '2 inch', '2 1/2 inch', '3 inch', '3 1/2 inch', '4 inch', '5 inch', '6 inch', '8 inch', '10 inch', '12 inch', '14 inch', '16 inch', '18 inch', '20 inch', '22 inch', '24 inch'],
'600 lb Rating': ['1/4 inch', '3/8 inch', '1/2 inch', '3/4 inch', '1 inch', '1 1/4 inch', '1 1/2 inch', '2 inch', '2 1/2 inch', '3 inch', '3 1/2 inch', '4 inch', '5 inch', '6 inch', '8 inch', '10 inch', '12 inch', '14 inch', '16 inch', '18 inch', '20 inch', '22 inch', '24 inch'],
'900 lb Rating': ['1/4 inch', '3/8 inch', '1/2 inch', '3/4 inch', '1 inch', '1 1/4 inch', '1 1/2 inch', '2 inch', '2 1/2 inch', '3 inch', '3 1/2 inch', '4 inch', '5 inch', '6 inch', '8 inch', '10 inch', '12 inch', '14 inch', '16 inch', '18 inch', '20 inch', '22 inch', '24 inch'],
'1500 lb Rating': ['1/4 inch', '3/8 inch', '1/2 inch', '3/4 inch', '1 inch', '1 1/4 inch', '1 1/2 inch', '2 inch', '2 1/2 inch', '3 inch', '3 1/2 inch', '4 inch', '5 inch', '6 inch', '8 inch', '10 inch', '12 inch', '14 inch', '16 inch', '18 inch', '20 inch', '22 inch', '24 inch'],
'2500 lb Rating': ['1/4 inch', '3/8 inch', '1/2 inch', '3/4 inch', '1 inch', '1 1/4 inch', '1 1/2 inch', '2 inch', '2 1/2 inch', '3 inch', '3 1/2 inch', '4 inch', '5 inch', '6 inch', '8 inch', '10 inch', '12 inch', '14 inch', '16 inch', '18 inch', '20 inch', '22 inch', '24 inch'],
500: ['3/4 x 1/2 inch', '3/4 x 3/8 inch', '1 x 3/4 inch', '1 x 1/2 inch', '1 x 3/8 inch', '1 1/4 x 1 inch', '1 1/4 x 3/4 inch', '1 1/4 x 1/2 inch', '1 1/2 x 1 1/4 inch', '1 1/2 x 1 inch', '1 1/2 x 3/4 inch', '1 1/2 x 1/2 inch', '2 x 1 1/2 inch', '2 x 1 1/4 inch', '2 x 1 inch', '2 x 3/4 inch', '2 1/2 x 2 inch', '2 1/2 x 1 1/2 inch', '2 1/2 x 1 1/4 inch', '2 1/2 x 1 inch', '3 x 2 1/2 inch', '3 x 2 inch', '3 x 1 1/2 inch', '3 x 1 1/4 inch', '3 1/2 x 3 inch', '3 1/2 x 2 1/2 inch', '3 1/2 x 2 inch', '3 1/2 x 1 1/2 inch', '3 1/2 x 1 1/4 inch', '4 x 3 1/4 inch', '4 x 3 inch', '4 x 2 1/2 inch', '4 x 2 inch', '4 x 1 1/2 inch', '5 x 4 inch', '5 x 3 1/2 inch', '5 x 3 inch', '5 x 2 1/2 inch', '5 x 2 inch', '6 x 5 inch', '6 x 4 inch', '6 x 3 1/2 inch', '6 x 3 inch', '6 x 2 1/2 inch', '8 x 6 inch', '8 x 5 inch', '8 x 4 inch', '8 x 3 1/2 inch', '10 x 8 inch', '10 x 6 inch', '10 x 5 inch', '10 x 4 inch', '12 x 10 inch', '12 x 8 inch', '12 x 6 inch', '12 x 5 inch', '14 x 12 inch', '14 x 10 inch', '14 x 8 inch', '14 x 6 inch', '16 x 14 inch', '16 x 12 inch', '16 x 10 inch', '16 x 8 inch', '18 x 16 inch', '18 x 14 inch', '18 x 12 inch', '18 x 10 inch', '20 x 18 inch', '20 x 16 inch', '20 x 14 inch', '20 x 12 inch', '22 x 20 inch', '22 x 18 inch', '22 x 16 inch', '22 x 14 inch', '24 x 22 inch', '24 x 20 inch', '24 x 18 inch', '24 x 16 inch'],
'3/4 x 1/2 inch': ['N\A'],
'3/4 x 3/8 inch': ['N\A'],
'1 x 3/4 inch': ['N\A'],
'1 x 1/2 inch': ['N\A'],
'1 x 3/8 inch': ['N\A'],
'1 1/4 x 1 inch' : ['N\A'],
'1 1/4 x 3/4 inch' : ['N\A'],
'1 1/4 x 1/2 inch' : ['N\A'],
'1 1/2 x 1 1/4 inch' : ['N\A'],
'1 1/2 x 1 1/4 inch': ['N\A'],
'1 1/2 x 1 inch': ['N\A'],
'1 1/2 x 3/4 inch': ['N\A'],
'1 1/2 x 1/2 inch': ['N\A'],
'2 x 1 1/2 inch': ['N\A'],
'2 x 1 1/4 inch': ['N\A'],
'2 x 1 inch': ['N\A'],
'2 x 3/4 inch': ['N\A'],
'2 1/2 x 2 inch': ['N\A'],
'2 1/2 x 1 1/2 inch': ['N\A'],
'2 1/2 x 1 1/4 inch': ['N\A'],
'2 1/2 x 1 inch': ['N\A'],
'3 x 2 1/2 inch': ['N\A'],
'3 x 2 inch': ['N\A'],
'3 x 1 1/2 inch': ['N\A'],
'3 x 1 1/4 inch': ['N\A'],
'3 1/2 x 3 inch': ['N\A'],
'3 1/2 x 2 1/2 inch': ['N\A'],
'3 1/2 x 2 inch': ['N\A'],
'3 1/2 x 1 1/2 inch': ['N\A'],
'3 1/2 x 1 1/4 inch': ['N\A'],
'4 x 3 1/4 inch': ['N\A'],
'4 x 3 inch': ['N\A'],
'4 x 2 1/2 inch': ['N\A'],
'4 x 2 inch': ['N\A'],
'4 x 1 1/2 inch': ['N\A'],
'5 x 4 inch': ['N\A'],
'5 x 3 1/2 inch': ['N\A'],
'5 x 3 inch': ['N\A'],
'5 x 2 1/2 inch': ['N\A'],
'5 x 2 inch': ['N\A'],
'6 x 5 inch': ['N\A'],
'6 x 4 inch': ['N\A'],
'6 x 3 1/2 inch': ['N\A'],
'6 x 3 inch': ['N\A'],
'6 x 2 1/2 inch': ['N\A'],
'8 x 6 inch': ['N\A'],
'8 x 5 inch': ['N\A'],
'8 x 4 inch': ['N\A'],
'8 x 3 1/2 inch': ['N\A'],
'10 x 8 inch': ['N\A'],
'10 x 6 inch': ['N\A'],
'10 x 5 inch': ['N\A'],
'10 x 4 inch': ['N\A'],
'12 x 10 inch': ['N\A'],
'12 x 8 inch': ['N\A'],
'12 x 6 inch': ['N\A'],
'12 x 5 inch': ['N\A'],
'14 x 12 inch': ['N\A'],
'14 x 10 inch': ['N\A'],
'14 x 8 inch': ['N\A'],
'14 x 6 inch': ['N\A'],
'16 x 14 inch': ['N\A'],
'16 x 12 inch': ['N\A'],
'16 x 10 inch': ['N\A'],
'16 x 8 inch': ['N\A'],
'18 x 16 inch': ['N\A'],
'18 x 14 inch': ['N\A'],
'18 x 12 inch': ['N\A'],
'18 x 10 inch': ['N\A'],
'20 x 18 inch': ['N\A'],
'20 x 16 inch': ['N\A'],
'20 x 14 inch': ['N\A'],
'20 x 12 inch': ['N\A'],
'22 x 20 inch': ['N\A'],
'22 x 18 inch': ['N\A'],
'22 x 16 inch': ['N\A'],
'22 x 14 inch': ['N\A'],
'24 x 22 inch': ['N\A'],
'24 x 20 inch': ['N\A'],
'24 x 18 inch': ['N\A'],
'24 x 16 inch': ['N\A'],
}
# ObservableCollection will notify the UI of changes for us
dd1_data = ObservableCollection[object]()
dd1_data.Add("ASME B 16.5")
dd1_data.Add("ASME B 16.47")
#dd1_data.Add(300)
#dd1_data.Add(400)
dd2_data = ObservableCollection[object]()
dd3_data = ObservableCollection[object]()
dd4_data = ObservableCollection[object]()
dd1 = DropDown()
dd1.DataStore = dd1_data
dd2 = DropDown()
dd2.DataStore = dd2_data
dd3 = DropDown()
dd3.DataStore = dd3_data
dd4 = DropDown()
dd4.DataStore = dd4_data
# Cache indexes to avoid unnecessary state updates which can be a bit crashy
dialog.dd1_index = -1
dialog.dd2_index = -1
dialog.dd3_index = -1 #RD
dialog.dd4_index = -1 #RD
dialog.busy = False
def update_state(sender, args):
# Super safe busy check, prevents recursion!
if (dialog.busy):
return
dialog.busy = True
# Prevents crashing if there is no data, we should do this more, but I'm lazy
if dd1.SelectedIndex == -1:
return
if (dd1.SelectedIndex != dialog.dd1_index):
items1 = data[dd1.SelectedValue]
# Note we don't set a NEW value, we use the same collection
dd2_data.Clear()
for i in items1:
dd2_data.Add(i)
dd2.SelectedIndex = 0
dd3.SelectedIndex = 0
dd4.SelectedIndex = 0
dialog.dd2_index = 0
# This should run on 1 or 2 changing index
if (dd2.SelectedIndex != dialog.dd2_index or
dd1.SelectedIndex != dialog.dd1_index):
items2 = data[dd2.SelectedValue]
# Note we don't set a NEW value, we use the same collection
dd3_data.Clear()
for i in items2:
dd3_data.Add(i)
dd3.SelectedIndex = 0
if (dd3.SelectedIndex != dialog.dd3_index or
dd2.SelectedIndex != dialog.dd2_index or
dd1.SelectedIndex != dialog.dd1_index):
dd4_data.Clear()
if dd3.SelectedValue in data.keys():
items3 = data[dd3.SelectedValue]
# Note we don't set a NEW value, we use the same collection
for i in items3:
dd4_data.Add(i)
dd4.SelectedIndex = 0
dialog.dd3_index = dd3.SelectedIndex
dialog.dd2_index = dd2.SelectedIndex
dialog.dd1_index = dd1.SelectedIndex
# We are no longer busy!
dialog.busy = False
dd1.SelectedIndexChanged += update_state
dd2.SelectedIndexChanged += update_state
dd3.SelectedIndexChanged += update_state
dd1.SelectedIndex = 0
# Nice way to set up a UI with equal spacing
dynamic = DynamicLayout()
dynamic.Spacing = Size(4, 4) # Bit cramped otherwise
dynamic.BeginHorizontal()
dynamic.Add(dd1, True)
dynamic.Add(dd2, True)
dynamic.Add(dd3, True)
dynamic.Add(dd4, True)
dynamic.EndHorizontal()
dialog.Content = dynamic
parent = RhinoEtoApp.MainWindowForDocument(sc.doc)
dialog.ShowModal(parent)
# The script that will be using the dialog.
def Pipework():
#rs.CurrentDimStyle("Default")
#Utility function to show the dialog box
dialog = GeoPipeworkDialog();
#Open the dialogue
rc = dialog.ShowModal(Rhino.UI.RhinoEtoApp.MainWindow)
if not rc: return
print ("End of Geo Pipework")
# Check to see if this file is being executed as the "main" python
# script instead of being used as a module by some other python script
# This allows us to use the module which ever way we want.
if __name__ == "__main__":
rc = Pipework()