Ruby script for selecting color
-
Hi TIG how do I can add glass texture to only one wall of box out of four walls.above method applying whole box. I like to try only one wall glass.thanks
-
Well... you need to work out how to 'find' the face first, then once you have it give it a [preexisting] material - let's assume it's name is 'Glass'...
A face has a 'normal' - which the vector that tells us which way a face is looking...
So let's say the collection of faces [along with edges etc] is in ` - then you need to filter that to find just the faces and then from that exact face with a particular 'normal'...
Let's also assume it is a box so only one matching face.normal will be found...group.entities.grep(Sketchup;;Face).each{|face| if face.normal==Z_AXIS ### == faces 'UP'... BUT you can use any vector to compare face.material='Glass' face.back_material='Glass' break ### stop looking end }
group.entities.grep(Sketchup;;Face).each{|face|
if face.normal==Z_AXIS ### == faces 'UP'... BUT you can use any vector to compare
face.material='Glass'
face.back_material='Glass'
break ### stop looking
end
}[/code:ngl1vctf] -
Hi TIG how do I find preexisting material on my box? is not 'Glass' thx
-
Your materials have names.
I used 'Glass' as an example.
The material must already exist in the model.
[I am skipping explaining how to create a material if it doesn't already exist, change its RGB and opacity etc... that wasn't your original question!]So use any existing material you want - just pass its 'name'...
-
Hi TIG What I am trying to do above creating box one side of box look like see through glass and rest solid coloured any idea???
-
An image of what you expect might help us help you, we are not mind-readers.
I have given you a general framework for code that finds "any face" by its direction and gives it a material.
The example I gave was forface.normal==Z_AXIS
which means it faces directly upwards,
BUT you can compare it to any axis
X_AXIS
Y_AXIS
and for the 'opposite direction'...
X_AXIS.reverse
Y_AXIS.reverse
Z_AXIS.reverseYou need to find and read code examples more....
-
Hi TIG could you recommend any good book specific for sketchup with code example. I have a book called "Automatic Sketchup" by Matthew Scarpino. It's not enough detail for me.
-
@nithi09 said:
Hi TIG could you recommend any good book specific for sketchup with code example. I have a book called "Automatic Sketchup" by Matthew Scarpino. It's not enough detail for me.
That's an excellent start.
Also get examples of others scripts [not too complex to start] and see how others do it... -
Hi TIG It's working thanks.
How do I choose specific one face If I have multiple faces in same direction -
Find something unique about that face - like its bounds.min x/y/z ?
-
The sloping, upward looking face will have a
normal.z>0
BUT ALSOnormal.z<1
, it also has anormal.x<0
- so that finds that kind of face ?
The triangular face hasnormal.x==1
, BUT so does the rectangular one next to it.
You can differentiate them usingface.vertices.length
on each,==3
for the triangle and==4
for the rectangle ?
Or if the difference is that it is below the red axis, testingface.bounds.min.y<0
will find it...Tip on
bb=object.bounds
bb.width
is in X
bb.height
is in Y
bb.depth
is in Z
this is NOT as you might initially assume - 'height' is NOT the Z - the bounds conventions come from the older CAD concept, where width/height are from the screen, when you typically looked at an object in plan, from above; and the 'depth' is the extent it projected 'out-of-the-screen'. 3D modelers likeSketchUp show axes in 3d with Z typically up the screen rather that 'out-of-it'... bb.min
,bb.max
andbb.center
etc should be self-evident ? -
thanks TIG for fast reply I am going to try. I will let you know!!
-
@nithi09: Please use [ code ] ... many lines of Ruby code here ... [ /code ] bbCode tags around large blocks of Ruby code.
-
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 /></span><span class="syntaxkeyword">require </span><span class="syntaxstring">'Sketchup.rb'<br /></span><span class="syntaxkeyword">class </span><span class="syntaxdefault">Testbox<br />def initialize</span><span class="syntaxkeyword">()</span><span class="syntaxcomment">#testbox1 <br /> <br /> </span><span class="syntaxdefault">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 /> #glass = mats.add "Glass"<br /> <br /> #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="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="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 /> list = [[</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">, list, </span><span class="syntaxstring">"Test_Box"<br /> </span><span class="syntaxkeyword">return if </span><span class="syntaxdefault">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 /> if </span><span class="syntaxdefault">w </span><span class="syntaxkeyword">== </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="syntaxstring">"1'"</span><span class="syntaxkeyword">], </span><span class="syntaxstring">"Custom Size"</span><span class="syntaxkeyword">)<br /> return </span><span class="syntaxdefault">nil </span><span class="syntaxkeyword">if </span><span class="syntaxdefault">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 /> </span><span class="syntaxkeyword">else<br /> </span><span class="syntaxdefault">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 /> <br /> </span><span class="syntaxdefault">pts </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">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">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">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">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">]] <br /> </span><span class="syntaxdefault">angle_ptr </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">hei </span><span class="syntaxkeyword">if (</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">0</span><span class="syntaxkeyword">)<br /> <br /> </span><span class="syntaxdefault">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">face</span><span class="syntaxkeyword">|<br /> if </span><span class="syntaxdefault">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 /> <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">"panelskin1.jpg"</span><span class="syntaxkeyword">, </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="syntaxstring">"Magenta"<br /> <br /> </span><span class="syntaxdefault">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="syntaxstring">"Plugins"<br /> </span><span class="syntaxcomment">#mats.color = color<br /> #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 /> #mat1 = face.material<br /> #mat1.alpha =0.5<br /> <br /> #break ### stop looking<br /> </span><span class="syntaxdefault">end<br /> <br /> </span><span class="syntaxkeyword">} <br /> <br /> </span><span class="syntaxdefault">end<br />end<br /><br /><br /></span><span class="syntaxkeyword">if (</span><span class="syntaxdefault">not $Testbox_menu_loaded</span><span class="syntaxkeyword">)<br /> <br /> </span><span class="syntaxdefault">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">Testbox</span><span class="syntaxkeyword">.new } <br /> <br /> </span><span class="syntaxdefault">$Testbox_menu_loaded </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">true<br />end</span>
-
Thanks Thom, It's working fine now. I have a question if I change same code like this (using insted of method if I use class) doesn't happening any thing meaning not working). I am sorry I don't know how to wrap in code.
<span class="syntaxdefault"><br />require </span><span class="syntaxstring">'Sketchup.rb'<br /></span><span class="syntaxdefault">class Testbox<br />def testbox1 <br /> <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">#ss = model.selection<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">#obj = ss[3]<br /></span><span class="syntaxdefault"> 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="syntaxdefault">4.feet</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">2.feet</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">""</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">,[</span><span class="syntaxstring">"Blue|Red|Green"</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 /> x </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 x </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">'Custom'<br /></span><span class="syntaxdefault"> resultsx </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 resultsx<br /> x </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> resultsx</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">to_l<br /> else<br /> x </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> x</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">to_l<br /> end<br /> <br /> wid </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> x<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"> <br /> base </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> ent</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_face pts<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 /> </span><span class="syntaxcomment">#color = nil if color ==''<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 /> </span><span class="syntaxcomment">#base.reverse!<br /></span><span class="syntaxdefault"> base</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">pushpull hei<br /> <br /> <br /> end<br /> <br /> end<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">.new}</span><span class="syntaxdefault"> <br /> <br /> $Testbox_menu_loaded </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> true<br />end<br /></span>
-
Hi TIG thanks it's works. I have different question now about menu I try create user Inputbox.this is my code I want when user select Door only door size & door custom size has to be active rest has to be disabled vice versa when user select window I am attaching picture to
<span class="syntaxdefault"><br /></span><span class="syntaxkeyword">require </span><span class="syntaxstring">'Sketchup.rb'<br /><br /></span><span class="syntaxkeyword">class </span><span class="syntaxdefault">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 /> x </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">1<br /> </span><span class="syntaxkeyword">while </span><span class="syntaxdefault">x </span><span class="syntaxkeyword"><= </span><span class="syntaxdefault">4<br /> prom </span><span class="syntaxkeyword">= [</span><span class="syntaxstring">"A wall unit #{x};"</span><span class="syntaxkeyword">, </span><span class="syntaxstring">"Door size; "</span><span class="syntaxkeyword">, </span><span class="syntaxstring">"Custom Door size;"</span><span class="syntaxkeyword">, </span><span class="syntaxstring">"Window Size; "</span><span class="syntaxkeyword">, </span><span class="syntaxstring">"Custom Window size;" </span><span class="syntaxkeyword">]<br /> </span><span class="syntaxdefault">values </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 /> list = [</span><span class="syntaxstring">"Door|Window"</span><span class="syntaxkeyword">,[</span><span class="syntaxstring">'87"|81"|75"|69"|63"|57"|Custom'</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'</span><span class="syntaxkeyword">],</span><span class="syntaxstring">""</span><span class="syntaxkeyword">]<br /> </span><span class="syntaxdefault">res </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">inputbox prom</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">values</span><span class="syntaxkeyword">, list, </span><span class="syntaxstring">"A wall Door & Window"<br /> </span><span class="syntaxdefault">x </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">x</span><span class="syntaxkeyword">+</span><span class="syntaxdefault">1<br /> end<br /> <br />end<br />end<br /><br /></span><span class="syntaxkeyword">if (</span><span class="syntaxdefault">not $Testmenu_menu_loaded</span><span class="syntaxkeyword">)<br /> <br /> </span><span class="syntaxdefault">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">Testmenu</span><span class="syntaxkeyword">.new } <br /> <br /> </span><span class="syntaxdefault">$Testmenu_menu_loaded </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">true<br />end<br /></span>
-
prom = ["A wall unit #{x}:", "Door size: ", "Custom Door size:", "Window Size: ", "Custom Window size:" ] values = ['Door', "", "", "", ""] list = ["Door|Window", ['87"|81"|75"|69"|63"|57"|Custom'], "", ['87"|81"|75"|69"|63"|57"|51"|45"|39"|33"|Custom'], ""] res = inputbox prom, values, list, "A wall Door & Window"
prom= sets the prompts to the left of each input box line
values= sets the starting values - you only have 'Door' set for the first one, the "" after that say start with NO value. The default needs to be a value in the matching list entry OR a lone default-value.
To use the list's first in each case try:
values = ["Door", "87"", "60"", "87"", "60""]
...notice how I escape the " inside "" using " then each box gets a default value.
I chose 60" as the default for the custom size - that's up to you...list= gives the dropdown lists to choose from, each item in the dropdown is separated by a | any NON-dropdown 'single values' are shown as ""...
Please use () around arguments passed... e.g.
res = inputbox(prom, values, list, "A wall Door & Window")[/ruby]
Un-parenthesized lists my be deprecated in future ruby releases, and using () inside any arguments tat involve clacs etc when the set is un-parenthesized will cause issues now. -
Hi TIG thanks for fast reply
My question is when user select let say window from listbox then door size and door custom size grayout is it possible. I mean dynamicalley. -
Not with the standard inputbox.
You can do it using a complex webdialog...
That's a 'whole new kettle-of-fish'...If you want the user to choose window/Door then why not have a simple item inputbox first and depending on the answer chosen in that open a second inputbox giving different options ?
That's easier than learning webdialog/html/js/css etc - unless you want a bigger challenge than you already have ?? -
Don't put a space between the = sign of the BBCode CODE block.
Advertisement