sketchucation logo sketchucation
    • Login
    Oops, your profile's looking a bit empty! To help us tailor your experience, please fill in key details like your SketchUp version, skill level, operating system, and more. Update and save your info on your profile page today!
    🫛 Lightbeans Update | Metallic and Roughness auto-applied in SketchUp 2025+ Download

    Help with dialog

    Scheduled Pinned Locked Moved Developers' Forum
    6 Posts 2 Posters 7.0k Views 2 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • PixeroP Offline
      Pixero
      last edited by

      I need to make a dialog with three dropdown menus where the user can choose from the scenes materials and one input where the default value would be say 1000 mm.

      I have looked at other scripts and tried to create it but I've messed up somewhere as I haven't done my menus in the exact same way as the examples. Could someone please guide me to a working solution?
      Here is the Dialog part of the script:

      
      	@@first_mat = nil
      	@@second_mat = nil
      	@@third_mat = nil
      	@@distance = nil
      
      	model = Sketchup.active_model  
      	mats = model.materials 
      	ent = model.entities  
      	sel = model.selection  
      	
      	matNames=[]
      	matNstmp=[]
      	mats.each{|m|matNstmp.push(m.display_name)}
      	matNstmp.sort!
      	matNames=matNames+matNstmp
      	matList=matNames.join('|')
      	
      	@@first_mat = matList unless @@first_mat
      	@@second_mat = matList unless @@second_mat
      	@@third_mat = matList unless @@third_mat	  
      	@@distance = 1000.mm unless @@distance	
      	
      	# dialogs
      	info = [matList]
          	prompts = ["Material 1; ", "Material 2; ", "Material 3; ", "Distance; "]
          	results = inputbox(prompts,["", "", "", 1000.mm], [matList, matList, matList, nil],"Settings")
      	results = nil if results and results[0] == ""
      
      
      1 Reply Last reply Reply Quote 0
      • TIGT Offline
        TIG Moderator
        last edited by

        Use this:
        @@first_mat = **matNames**[0] unless @@first_mat @@second_mat = **matNames**[0] unless @@second_mat @@third_mat = **matNames**[0] unless @@third_mat @@distance = 1000.mm unless @@distance

        Then use those in your inputbox's default values etc...
        prompts = ["Material 1: ", "Material 2: ", "Material 3: ", "Distance: "] defaults = [@@first_mat, @@second_mat, @@third_mat, @@distance] pops = [matList, matList, matList, ""] title = "Settings" results = inputbox(prompts, defaults, pops, title)

        After a successful 'result' is returned you need to reset the remembered 'values', thus:
        @@first_mat, @@second_mat, @@third_mat, @@distance = results ###if results

        TIG

        1 Reply Last reply Reply Quote 0
        • PixeroP Offline
          Pixero
          last edited by

          Thank you!

          1 Reply Last reply Reply Quote 0
          • PixeroP Offline
            Pixero
            last edited by

            And another one:

            See how the dropdown menu looks in the attached image.
            I have used drop down menus in scripts before without problem but can't find whats wrong here.

            
            @@axis = "Y" unless @@axis
            prompts = ["Axis; "]
            drops = ["X" '|' "-X" '|' "Y" '|' "-Y" '|' "Z" '|' "-Z"]	
            title = "Settings"
            defaults = @@axis
            results = inputbox(prompts, drops, title, defaults)
            
            

            settings.jpg

            1 Reply Last reply Reply Quote 0
            • TIGT Offline
              TIG Moderator
              last edited by

              It should be
              results = inputbox(prompts, **defaults**, drops, title)
              You have the wrong order... ' defaults' comes second in the list that is passed to the inputbox, AND it must be made as an array - so use defaults = [@@axis] assuming that @@axis is a string- e.g. "X" etc...

              TIG

              1 Reply Last reply Reply Quote 0
              • PixeroP Offline
                Pixero
                last edited by

                Thanks. That worked.

                1 Reply Last reply Reply Quote 0
                • 1 / 1
                • First post
                  Last post
                Buy SketchPlus
                Buy SUbD
                Buy WrapR
                Buy eBook
                Buy Modelur
                Buy Vertex Tools
                Buy SketchCuisine
                Buy FormFonts

                Advertisement