Getting group's dimensions

Getting group's dimensions

Postby Sweek » Fri Apr 21, 2017 11:36 pm

Hello,

I'm new here and I need help for my project. I try to get width, height and depth of my selected entities.
For example, this is my project's hierarchy:


Code: Select all
model = Sketchup.active_model
selection = model.selection

selection.each do |entity|
  UI.messagebox(entity.name)
  entity.entities.each do |sub_entity|
    UI.messagebox(sub_entity.name)
  end
end


With this code, if I select A, I get the group A, 1 and 2. Now I'd like to get each group's dimensions. I tried this:

Code: Select all
model = Sketchup.active_model
selection = model.selection

selection.each do |entity|
  bb1 = Geom::BoundingBox.new
  bb1.add(entity.bounds) 
  UI.messagebox("Name: #{entity.name}\nWidth: #{bb1.width}\nHeight: #{bb1.height}\nDepth: #{bb1.depth}")
  entity.entities.each do |sub_entity|
    bb2 = Geom::BoundingBox.new
    bb2.add(sub_entity.bounds) 
    UI.messagebox("Name: #{sub_entity.name}\nWidth: #{bb2.width}\nHeight: #{bb2.height}\nDepth: #{bb2.depth}")
    bb2.clear
  end
  bb1.clear
end


If I select the A group I get the right values for A but not for its subgroups 1 and 2.
If I select the subgroup 1, I get the right values for the subgroup 1.

If you can explain me why I get this, or tell me how to get what i want. I would appreciate.
0

Sweek 
 

Re: Getting group's dimensions

Postby TIG » Sat Apr 22, 2017 11:26 pm

Your code looks workmanlike.
When I create a set of nested groups as you propose I get the results I'd expect ??

What is 'wrong' with your results ?
0
TIG
User avatar
TIG 
Global Moderator
 

Re: Getting group's dimensions

Postby Sweek » Sun Apr 23, 2017 1:38 am

Thanks for your answer. I will try to explain.

I made this:
-group B size is 15*12*6,
-group 3 size is 15*12*3,
-group 4 size is 15*12*3


If my selection is B like this:


I get this results (which are right only for group B):


As you can see, for group 3 and 4 the width is not correct.
But if my selection is 4 for example:


I get right results for group 4:


Usually, how do you get the size of all groups in a model ?
0

Sweek 
 

Re: Getting group's dimensions

Postby sdmitch » Sun Apr 23, 2017 5:00 pm

Just how did you create 3 and 4 inside of B?

If I create 3 and 4, stack them, then group them to create B, your code works as expected.
0
Nothing is worthless, it can always be used as a bad example.

http://sdmitch.blogspot.com/
User avatar
sdmitch 
PluginStore Author
PluginStore Author
 

Re: Getting group's dimensions

Postby Sweek » Sun Apr 23, 2017 7:50 pm

Hi,

Effectively, I tried as you said and it works.
I will ask my internship supervisor how he created his groups.

Do you know if people get group's dimension like I did or if they use another way ?
0

Sweek 
 

Re: Getting group's dimensions

Postby sdmitch » Sun Apr 23, 2017 8:30 pm

Sweek wrote:Do you know if people get group's dimension like I did or if they use another way ?


Be aware that bounds dimensions of the container 'B' can and do change when rotated. The sub_groups, 3 and 4, are unaffected. Creating a new bounding box isn't necessary. It will be the same as the entities bounds. Use .local_bounds for the container, which gives you the initial dimensions, then use the x,y and z scales from the transformation to give you the current size.
Code: Select all
model = Sketchup.active_model
selection = model.selection

selection.each do |entity|
  bb1=entity.local_bounds; tr1=entity.transformation
  UI.messagebox("Name: #{entity.name}\nWidth: #{bb1.width*tr1.xscale}\nHeight: #{bb1.height*tr1.yscale}\nDepth: #{bb1.depth*tr1.zscale}")
  entity.entities.each do |sub_entity|
    bb2=sub_entity.bounds
    UI.messagebox("Name: #{sub_entity.name}\nWidth: #{bb2.width}\nHeight: #{bb2.height}\nDepth: #{bb2.depth}")
  end
end
0
Nothing is worthless, it can always be used as a bad example.

http://sdmitch.blogspot.com/
User avatar
sdmitch 
PluginStore Author
PluginStore Author
 

Re: Getting group's dimensions

Postby Sweek » Sun Apr 23, 2017 8:47 pm

Thank you, I will work on this.
0

Sweek 
 

SketchUcation One-Liner Adverts

by Ad Machine » 5 minutes ago



Ad Machine 
Robot
 



 

Return to Developers' Forum

Who is online

Users browsing this forum: No registered users and 3 guests

Visit our sponsors: