Ruby script for selecting color
-
Hi TIG could you look at it my code I want to collect when user enter values in side the loop.but I get last value. How do I get all values if user choose 3 units? I mean Total projection
here is my code<span class="syntaxdefault"><br />require </span><span class="syntaxstring">'Sketchup.rb'<br /><br /></span><span class="syntaxdefault">class Testmenu<br /><br />def initialize</span><span class="syntaxkeyword">()<br /><br /></span><span class="syntaxdefault"> ents </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities<br /> group </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> ents</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_group<br /> ents </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> group</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities<br /> <br /> prompt </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"Enter frontwall height; "</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Front wall custom height; "</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Enter backwall height; "</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"How many units on A wall; "</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> default </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"81\""</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"108\""</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"4"</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> list </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[[</span><span class="syntaxstring">"81\"|91\"|96 3/8\"|Custom height"</span><span class="syntaxkeyword">],</span><span class="syntaxstring">""</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> result </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> inputbox </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">prompt</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> default</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> list</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"A wall of Sunroom"</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> <br /> return if not result<br /> <br /> custom </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> <br /> if custom </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Custom height"<br /></span><span class="syntaxdefault"> <br /> front_height </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> back_height </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> num_unit </span><span class="syntaxkeyword">=</span><span class="syntaxdefault">result</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_i<br /> <br /> else<br /> front_height </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> back_height </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> num_unit </span><span class="syntaxkeyword">=</span><span class="syntaxdefault">result</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_i<br /> end<br /> </span><span class="syntaxcomment">#if (back_height - front_hieght) < <br /></span><span class="syntaxdefault"> show_unit_number </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 1<br /> <br /> while num_unit </span><span class="syntaxkeyword">></span><span class="syntaxdefault"> 0<br /> prom </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"A wall unit #{show_unit_number};"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Door size; "</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Custom Door size;"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Window Size; "</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Custom Window size;"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> values </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"Door"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> list </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"Door|Window"</span><span class="syntaxkeyword">,[</span><span class="syntaxstring">"87\"|81\"|75\"|69\"|63\"|57\"|Custom Door"</span><span class="syntaxkeyword">],</span><span class="syntaxstring">""</span><span class="syntaxkeyword">,[</span><span class="syntaxstring">"87\"|81\"|75\"|69\"|63\"|57\"|51\"|45\"|39\"|33\"|Custom Window"</span><span class="syntaxkeyword">],</span><span class="syntaxstring">""</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> result_2 </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> inputbox </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">prom</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> values</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> list</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"A wall Door & Window"</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> return nil if not result_2<br /> if result_2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Door"<br /></span><span class="syntaxdefault"> custom_door </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result_2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> if custom_door </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Custom Door"<br /></span><span class="syntaxdefault"> door_width </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result_2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> window_width </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0<br /> else<br /> door_width </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result_2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> window_width </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0<br /> end<br /> <br /> elsif result_2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Window"<br /></span><span class="syntaxdefault"> custom_window </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result_2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> if custom_window </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Custom Window"<br /></span><span class="syntaxdefault"> window_width </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result_2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">4</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> door_width </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0<br /> else<br /> window_width </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result_2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> door_width </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0<br /> end<br /> <br /> end<br /> <br /> num_unit </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> num_unit </span><span class="syntaxkeyword">-</span><span class="syntaxdefault"> 1<br /> show_unit_number </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> show_unit_number </span><span class="syntaxkeyword">+</span><span class="syntaxdefault">1<br /> projection </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> door_width </span><span class="syntaxkeyword">+</span><span class="syntaxdefault"> window_width<br /> end<br /> </span><span class="syntaxcomment">#total_projection = num_unit * projection<br /></span><span class="syntaxdefault"> <br /> <br /> UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">messagebox </span><span class="syntaxstring">"Your room projection; #{projection}"<br /></span><span class="syntaxdefault"> <br />end<br />end<br /><br />if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">not $Testmenu_menu_loaded</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> <br /> UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">menu</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Tools"</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">add_item</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"TEST_MENU"</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> Testmenu</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">new </span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> <br /> <br /> $Testmenu_menu_loaded </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> true<br />end<br /></span>
-
The
results = inputbox(...)
returns an array representing the answers current in the inputbox's boxes when OK is pressed.
So use that the extract the various values you want ??
v0,v1,v2,v3 = results ?
Lets those 4 variables to be the results... -
I don't get it, let say user enter 3 units so the loop going to be three times going to be prompt? first unit1 up to user Door size or Window size so then unit2 and unit3
for me to find out Total width = unit1 + unit2 + unit3 according to the user input. let me know I always get last input not from first to last I mean total -
You are looping through various inputboxes and setting the same variables to the results each time !
why not do something like this after the first results:allresults=[]
### set up an empty array before we start...
...loop
allresults << results
...end loopNow you have an array containing several arrays, each of those arrays contains the results from each inputbox.
So if you want the results from the second inputbox they are in the array that is allresults[1] etc.......
-
It does not work. after first prompt nothing happening
-
@nithi09 said:
It does not work. after first prompt nothing happening
Without some clues how might I know what you have done ?
After the first input where the user choses 'type' the while loop is where the inputboxes' results are added to the 'allresults' array.
If you don't get something from the initial results then how do you expect later steps to happen ? -
It's works I did it different way because I need width only here my code thanks for your help
<span class="syntaxdefault"><br />require </span><span class="syntaxstring">'Sketchup.rb'<br /><br /></span><span class="syntaxdefault">class Testmenu<br /><br />def initialize</span><span class="syntaxkeyword">()<br /><br /></span><span class="syntaxdefault"> ents </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities<br /> group </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> ents</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_group<br /> ents </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> group</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities<br /> <br /> prompt </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"Enter frontwall height; "</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Front wall custom height; "</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Enter backwall height; "</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"How many units on A wall; "</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> default </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"81\""</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"108\""</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"4"</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> list </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[[</span><span class="syntaxstring">"81\"|91\"|96 3/8\"|Custom height"</span><span class="syntaxkeyword">],</span><span class="syntaxstring">""</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> result </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> inputbox </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">prompt</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> default</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> list</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"A wall of Sunroom"</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> <br /> return if not result<br /> <br /> custom </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> <br /> if custom </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Custom height"<br /></span><span class="syntaxdefault"> <br /> front_height </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> back_height </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> num_unit </span><span class="syntaxkeyword">=</span><span class="syntaxdefault">result</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_i<br /> <br /> else<br /> front_height </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> back_height </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> num_unit </span><span class="syntaxkeyword">=</span><span class="syntaxdefault">result</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_i<br /> end<br /> <br /> <br /> <br /> show_unit_number </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 1<br /> total_projection </span><span class="syntaxkeyword">=</span><span class="syntaxdefault">0<br /> <br /> while num_unit </span><span class="syntaxkeyword">></span><span class="syntaxdefault"> 0<br /> prom </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"A wall unit #{show_unit_number};"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Door size; "</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Custom Door size;"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Window Size; "</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Custom Window size;"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> values </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"Door"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> list </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"Door|Window"</span><span class="syntaxkeyword">,[</span><span class="syntaxstring">"87\"|81\"|75\"|69\"|63\"|57\"|Custom Door"</span><span class="syntaxkeyword">],</span><span class="syntaxstring">""</span><span class="syntaxkeyword">,[</span><span class="syntaxstring">"87\"|81\"|75\"|69\"|63\"|57\"|51\"|45\"|39\"|33\"|Custom Window"</span><span class="syntaxkeyword">],</span><span class="syntaxstring">""</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> result_2 </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> inputbox </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">prom</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> values</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> list</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"A wall Door & Window"</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> return nil if not result_2<br /> if result_2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Door"<br /></span><span class="syntaxdefault"> custom_door </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result_2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> if custom_door </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Custom Door"<br /></span><span class="syntaxdefault"> door_width </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result_2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> window_width </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0<br /> else<br /> door_width </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result_2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> window_width </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0<br /> end<br /> <br /> elsif result_2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Window"<br /></span><span class="syntaxdefault"> custom_window </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result_2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> if custom_window </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Custom Window"<br /></span><span class="syntaxdefault"> window_width </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result_2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">4</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> door_width </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0<br /> else<br /> window_width </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> result_2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> door_width </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0<br /> end<br /> <br /> end<br /> <br /> num_unit </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> num_unit </span><span class="syntaxkeyword">-</span><span class="syntaxdefault"> 1<br /> show_unit_number </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> show_unit_number </span><span class="syntaxkeyword">+</span><span class="syntaxdefault">1<br /> <br /> projection </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> door_width </span><span class="syntaxkeyword">+</span><span class="syntaxdefault"> window_width <br /> total_projection </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> projection </span><span class="syntaxkeyword">+</span><span class="syntaxdefault">total_projection<br /> end<br /> UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">messagebox </span><span class="syntaxstring">"Your room projection; #{total_projection}"<br /></span><span class="syntaxdefault"> <br /> if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">back_height </span><span class="syntaxkeyword">-</span><span class="syntaxdefault"> front_height</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword"><</span><span class="syntaxdefault"> total_projection</span><span class="syntaxkeyword">/</span><span class="syntaxdefault">12<br /> UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">messagebox </span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Minimum Roof pitch is 1/12 please increase back wall height"</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> return Testmenu</span><span class="syntaxkeyword">.new<br /></span><span class="syntaxdefault"> end <br /><br /> <br />end<br />end<br /><br />if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">not $Testmenu_menu_loaded</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> <br /> UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">menu</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Tools"</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">add_item</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"TEST_MENU"</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> Testmenu</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">new </span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> <br /> <br /> $Testmenu_menu_loaded </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> true<br />end<br /></span>
-
Hi TIG above code first messagebox if I use
UI.messagebox "Your room projection: #{total_projection}", MB_OKCANCEL then if user press CANCEL button I need to start over again. I tried like this
%(#FF0000)[if MB_OKCANCEL == 2
return Testmenu.new
end]but didn't work any Idea?? -
You need to get a grasp of how references work...
` ok = UI.messagebox("Your room projection: #{total_projection}", MB_OKCANCEL)
if ok == 2 ### pressed Cancel
Testmenu.new()
return
end#ifpressed OK`
-
Hi TIG
How do I change font size and bold on sketchup default messagebox
thanks -
@nithi09 said:
How do I change font size and bold on sketchup default messagebox
You cannot. The API does not give this level of control.
You can make a WebDialog that looks like a messagebox, and use CSS to control fontsize and bold, etc.
-
Ok thanks Dan
-
Hi TIG if I want to add custom attribute to my door like partnumber how do I do in ruby
thanks -
To set it
door.set_attribute('dynamic_attributes', 'partnumber', 1234)
To get it
door.get_attribute('dynamic_attributes', 'partnumber', nil)
If it's 'nil' then it has not been set... -
Don't you have to make a call to the DC system to make the component update according to the new attribute?
-
@thomthom said:
Don't you have to make a call to the DC system to make the component update according to the new attribute?
Yes.
But that wasn't the question...
At the end of the process call the redraw thus - the other examples around can fail...
dc_redraw(ent, true, false)
Where 'ent' is the reference to the 'door' dc...def dc_redraw(ent, pbar_visible=true, undo=false) ldc=$dc_observers.get_latest_class() if undo ldc.method(;redraw_with_undo).call(ent, pbar_visible) else ldc.determine_movetool_behaviors(ent) DCProgressBar;;clear() ldc.method(;redraw).call(ent, pbar_visible) DCProgressBar;;clear() ldc.refresh_dialogs() end Sketchup.active_model.active_view.refresh rescue TypeError => e # suppress nil to float conversion error that happens # when redraw is called directly with true 2nd arg ? end#def
-
Hi TIG if I want to create component definition inside the group in this example component name like Triangle and Cube, Then area for Triangle and volume for Cube How do I do
thanks@nithi09 said:
Hi TIG I didn't understand boundingbox method here is my code look at it. Also I attaching image of this
<span class="syntaxdefault"><br />require </span><span class="syntaxstring">'Sketchup.rb'<br /></span><span class="syntaxdefault">class Testbox<br />def initialize</span><span class="syntaxkeyword">()</span><span class="syntaxcomment">#testbox1 <br /></span><span class="syntaxdefault"> <br /> model </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model<br /> ent </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities <br /> </span><span class="syntaxcomment">#mats = model.materials<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">#glass = mats.add "Glass"<br /></span><span class="syntaxdefault"> <br /> </span><span class="syntaxcomment">#ent = Sketchup.active_model.entites<br /></span><span class="syntaxdefault"> ent </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_entities<br /> group </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> ent</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_group<br /> ent </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> group</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities<br /> <br /> <br /> prompts </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"Width"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">"Depth"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">"Height"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">"Colour"</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> defaults </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"6'"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">"4'"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">"5'"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">'Red'</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> list </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[[</span><span class="syntaxstring">"6'|8'|10'|Custom"</span><span class="syntaxkeyword">],[</span><span class="syntaxstring">"2'|4'|1\""</span><span class="syntaxkeyword">],[</span><span class="syntaxstring">"5'|7'|9'"</span><span class="syntaxkeyword">],[</span><span class="syntaxstring">"Blue|Red|Green|White"</span><span class="syntaxkeyword">]]<br /></span><span class="syntaxdefault"> results </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> inputbox prompts</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> defaults</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> list</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Test_Box"<br /></span><span class="syntaxdefault"> return if not results<br /> <br /> w </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> results</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> if w </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Custom"<br /></span><span class="syntaxdefault"> results_w </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> inputbox </span><span class="syntaxkeyword">([</span><span class="syntaxstring">"Enter Width;"</span><span class="syntaxkeyword">],</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"1'"</span><span class="syntaxkeyword">],</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Custom Size"</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> return nil if not results_w<br /> w </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> results_w</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> else<br /> w </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> w</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">to_l<br /> end<br /> <br /> wid </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> w<br /> dep </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> results</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> hei </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> results</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> color </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> results</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault"> <br /> pts </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">],</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxdefault">wid</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">],</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxdefault">wid</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">dep</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">],</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">dep</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]]<br /></span><span class="syntaxdefault"> back_wall </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[[-</span><span class="syntaxdefault">5</span><span class="syntaxkeyword">,-</span><span class="syntaxdefault">36</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">],[-</span><span class="syntaxdefault">5</span><span class="syntaxkeyword">,-</span><span class="syntaxdefault">36</span><span class="syntaxkeyword">,(</span><span class="syntaxdefault">hei</span><span class="syntaxkeyword">+</span><span class="syntaxdefault">36</span><span class="syntaxkeyword">)],[-</span><span class="syntaxdefault">5</span><span class="syntaxkeyword">,(</span><span class="syntaxdefault">dep</span><span class="syntaxkeyword">+</span><span class="syntaxdefault">36</span><span class="syntaxkeyword">),(</span><span class="syntaxdefault">hei</span><span class="syntaxkeyword">+</span><span class="syntaxdefault">36</span><span class="syntaxkeyword">)],[-</span><span class="syntaxdefault">5</span><span class="syntaxkeyword">,(</span><span class="syntaxdefault">dep</span><span class="syntaxkeyword">+</span><span class="syntaxdefault">36</span><span class="syntaxkeyword">),</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]]</span><span class="syntaxdefault"> <br /> angle_ptr </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">],[</span><span class="syntaxdefault"> 0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,(</span><span class="syntaxdefault">hei</span><span class="syntaxkeyword">/</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">)],[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,-(</span><span class="syntaxdefault">dep</span><span class="syntaxkeyword">/</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">)]]<br /></span><span class="syntaxdefault"> triangle </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> ent</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_face angle_ptr<br /> base </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> ent</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_face pts<br /> backwall </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> ent</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_face back_wall<br /> <br /> hei </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">-</span><span class="syntaxdefault">hei if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">base</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">normal</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">dot</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">Z_AXIS</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword"><</span><span class="syntaxdefault"> 0</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> <br /> base</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">back_material </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> color <br /> base</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">material </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> color<br /> <br /> mat </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> base</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">material<br /> mat</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">alpha </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0.5<br /> <br /> base</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">reverse</span><span class="syntaxkeyword">!<br /></span><span class="syntaxdefault"> base</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">pushpull </span><span class="syntaxkeyword">-</span><span class="syntaxdefault">hei<br /> triangle</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">pushpull wid<br /> group</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">grep</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Face</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">each</span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">face</span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault"> if face</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">normal</span><span class="syntaxkeyword">==</span><span class="syntaxdefault">X_AXIS </span><span class="syntaxcomment">##&& face.normal==X_AXIS.reverse### == faces 'UP'... BUT you can use any vector to compare<br /></span><span class="syntaxdefault"> <br /> mats</span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">materials</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add </span><span class="syntaxstring">"Color_Texture"<br /></span><span class="syntaxdefault"> mats</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">texture </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">find_support_file </span><span class="syntaxstring">"panelskin1.jpg"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Plugins"<br /></span><span class="syntaxdefault"> mats</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">color </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> color<br /> face</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">material</span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mats </span><span class="syntaxcomment">#"Magenta"<br /></span><span class="syntaxdefault"> face</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">back_material</span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Magenta"<br /></span><span class="syntaxdefault"> <br /> mat1 </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> face</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">material<br /> mat1</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">alpha </span><span class="syntaxkeyword">=</span><span class="syntaxdefault">5<br /> <br /> elsif<br /> face</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">normal</span><span class="syntaxkeyword">==</span><span class="syntaxdefault">X_AXIS</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">reverse<br /> </span><span class="syntaxcomment">#face.material= #"Magenta"<br /></span><span class="syntaxdefault"> mats</span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">materials</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add </span><span class="syntaxstring">"Color_Texture"<br /></span><span class="syntaxdefault"> mats</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">texture </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">find_support_file </span><span class="syntaxstring">"brick.jpg"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Plugins"<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">#mats.color = color<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">#face.material= mats<br /></span><span class="syntaxdefault"> face</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">back_material</span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> mats </span><span class="syntaxcomment">#"Magenta"<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">#mat1 = face.material<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">#mat1.alpha =0.5<br /></span><span class="syntaxdefault"> <br /> </span><span class="syntaxcomment">#break ### stop looking<br /></span><span class="syntaxdefault"> end<br /> <br /> </span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> <br /> <br /> end<br />end<br /><br /><br />if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">not $Testbox_menu_loaded</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> <br /> UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">menu</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Tools"</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">add_item</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"TEST_BOX"</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> Testbox</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">new </span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> <br /> <br /> $Testbox_menu_loaded </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> true<br />end</span>
-
Iterate the definition's entities, collecting faces and their areas.
You then have the area of all faces inside it, it's always in sq".
Provided that you know the instance/its-container is not 'scaled' then that's it: otherwise you might need to get the scaling[s] and apply it to the area value ? -
Hi TIG I think my question is wrong way I asked. basically I want above code three group like "Triangle group", "cube group",and two together group call "sample group" each one has name, part number and so on.like when you click on lady in the model entity info definition name and clik on component attribute it gives lots of info name susan, description,color,and material.when I try do like this group.name = "somthing" and group.set_attribute('dynamic_attribute','volume',widdephei)it doesnot work. I look at group, component api is confusing me.could you explain me with sample code.
Thanks -
OK.
I think your question is, "How do I add an 'area' or 'volume' function to the DC code ?"
There are already some threads about adding custom functions, so they can be used in formulas...
There is an example of one for 'volume' already - here http://sketchucation.com/forums/viewtopic.php?p=464446#p464446You can add any 'attribute' to anything.
The dictionary DC is "dynamic_attributes" [with a final S] - otherwise you are making a new dictionary with a slightly different name that the DC code ignores...
Advertisement