Looking for a plugin to break apart all components from wooden structure and place them side by side

View parts looked promising, but it opened every single part in a new tab. What I really want is to actually have a plugin the places lots of parts side by side so that they can easily be seen and then labelled for cutting without using something like cutlist.

I’m sorry to bring this object back to the forums, I have left it several months because it wasn’t practical to think about during the winter.

Like this example (but for everything):

image

Surely there is a plugin capable of placing every component on one plane side by side with a certain distance between them?

1 Like

You might try the layout function of the CutList extension. It lays out the parts of a model onto a collection of sheets or boards that you specify. To get exactly what you show you would have to edit the output a bit, but at least all the boards are laid out flat on the x,y plane and organized by material and thickness.

I have tried cutlist before and tried again to demonstrate:

The trouble is, it does not show the posts which have specific cuts in them and the sheet metal, which needs to be cut a specific way. Nor does it show the shape of the boards which are a specific shape.

You are right. CutList deals only with the bounding boxes of the boards. Sorry, I knew that but forgot to mention it.

If there is no realistic way to do this in bulk (UGH), is there an easy way to set a specific distance between highlighted components on the horizontal plane and also twist so that their side is shown rather than their top?

All the tutorials I searched through deal with spacing only of new copies of an object, please tell me that there is a way to do this with a selection of existing objects.

Also, how can multiple objects be rotated 180 degrees to show another face? If I tried to do this now, I would have to rotate by 180 degrees but then they would all be stacked, not shown as they are in the example.

It looks so easy in Lumion: - YouTube

I hope somone can help.

Check this extension as well:

https://extensions.sketchup.com/en/content/vbo-component-layout

Maybe it can be altered to do it for all components in the file…

Thanks for your reply. I installed it and as far as I can tell, there is no way to make it function as described.

These seem like they should be VERY simple tasks!

maybe
Slickmoves?

https://extensions.sketchup.com/en/content/2dxy-smoves

1 Like

Thanks for the suggestion. It definitely does the spacing thing as I described. I haven’t been able to get it to rotate the selection on the plane I want though, it keeps spinning them around long ways.

Also, shame it’s not free.

I know, all these plugins add up, but it depends on your level of frustration when a $25 plugin can make life a lot easier.

do you work for free?

john

2 Likes

Consider it part of the cost of doing business.

As with the exploded views, I don’t find this a difficult thing to do with native tools. The Move tool will do most of it easily enough.

1 Like

I use this software for my own projects, not for business. There are a lot of tools out there which are free but people have put a lot of time and thought into, I don’t see what makes this extension so special compared to the others, which in many cases, provide suites of tools far more powerful.

How would you move the objects previously pictured so that they are evenly spaced (remembering that we are talking about spacing existing components, not new/copy arrays)?

Also, can you think of a way of rotating multiple components so that they turn to a different face rather than end up stacking?

I don’t mean to sound this way, but you have what, sixteen components in this model?

In the time you’ve spent posting back and forth, you could have easily done this as Dave R said with the native tools.

Unless you are looking for a solution for a future project with hundreds of parts, I don’t see your problem.

In the past, I’ve used another program called “Cutlist” (not the one germane to SU), and it took hours to punch in all the parts. It required you to enter all the sheet goods and dimensional lumber you had in stock, orient the way you wanted things cut, set the waste, the kerf size…

What you wish to do is easy.

Hello Ryan,

What you see is one part of the construction which involves very many parts overall (as mostly seen in my first post):

You will see that within this thread cutlist has been discussed and demonstrated not to work as required.

I would really appreciate Dave’s input on the best way to approach this because he always gives good instructions/advice.

1 Like

If you had read my post correctly, you might have noticed I wasn’t referring to the SketchUp extension “Cut List”.

DaveR gives great advice. You ought to heed it.

Post you skp.file, I’ll bet someone could give you what you want fairly quickly and explain how they did it.

If anyone is happy to do that so that I can learn in the long run, I would be extremely grateful.

I have cleaned it up to minimise the filesize, I hope that this does not cause any problems.

Thanks for your suggestion, here’s the file:
Wood Store X.skp (2.0 MB)

Here is some quick and dirty code that will do most of the work. Some of the longer pieces get flipped the wrong way but you should be able to clean that up easily.

mod = Sketchup.active_model
ent = mod.active_entities
sel = mod.selection
SKETCHUP_CONSOLE.clear
org = Geom::Point3d.new()
cis = ent.grep(Sketchup::ComponentInstance).each{|ci|
  ci.transform! ci.transformation.inverse
  vec = org-ci.transformation.origin; #p vec
  ci.transform! Geom::Transformation.new(vec) if vec.length>0
  if ci.bounds.width>ci.bounds.height
    vec = org-ci.bounds.corner(2)
    ci.transform! Geom::Transformation.new(vec)
    ci.transform! Geom::Transformation.rotation(org,Z_AXIS,90.degrees)
  end
  if ci.bounds.depth>ci.bounds.width && ci.bounds.depth>ci.bounds.height
    ci.transform! Geom::Transformation.rotation(org,X_AXIS,90.degrees)
  end
  org.offset!([ci.bounds.width+1,0,0])
}

5 Likes

Wow, this looks epic. I haven’t been able to try it yet and just wanted to say thanks in the mean time.

Just a thought, if you can code to meet the basic requirements, are you able to tweak the code to add a specific gap between parts? Like 10cm or something?

Answer:

mod = Sketchup.active_model
ent = mod.active_entities
sel = mod.selection
SKETCHUP_CONSOLE.clear
org = Geom::Point3d.new()
cis = ent.grep(Sketchup::ComponentInstance).each{|ci|
  ci.transform! ci.transformation.inverse
  vec = org-ci.transformation.origin; #p vec
  ci.transform! Geom::Transformation.new(vec) if vec.length>0
  if ci.bounds.width>ci.bounds.height
    vec = org-ci.bounds.corner(2)
    ci.transform! Geom::Transformation.new(vec)
    ci.transform! Geom::Transformation.rotation(org,Z_AXIS,90.degrees)
  end
  if ci.bounds.depth>ci.bounds.width && ci.bounds.depth>ci.bounds.height
    ci.transform! Geom::Transformation.rotation(org,X_AXIS,90.degrees)
  end
  org.offset!([ci.bounds.width+10.cm,0,0])
}

Revision by mitch (more comprehensive approach):

mod = Sketchup.active_model
ent = mod.active_entities
sel = mod.selection
SKETCHUP_CONSOLE.clear
org = Geom::Point3d.new(); spc = 10.cm
cdn = ent.grep(Sketchup::ComponentInstance).map{|ci|ci.definition.name}.uniq.sort
cdn.each{|n|
  cis = ent.grep(Sketchup::ComponentInstance).each{|ci|
next unless ci.definition.name==n
ci.transform! ci.transformation.inverse
ci.transform! Geom::Transformation.translation(org-ci.transformation.origin)

if ci.bounds.width>ci.bounds.height
  ci.transform! Geom::Transformation.translation(org-ci.bounds.corner(2))
  ci.transform! Geom::Transformation.rotation(org,Z_AXIS,90.degrees)
end

if ci.bounds.depth>ci.bounds.width && ci.bounds.depth>ci.bounds.height
  ci.transform! Geom::Transformation.rotation(org,X_AXIS,90.degrees)
end

if ci.bounds.min.y < org.y
  ci.transform! Geom::Transformation.rotation(org,X_AXIS,180.degrees)
  ci.transform! Geom::Transformation.translation(org-ci.bounds.corner(0))
end
org.offset!([ci.bounds.width+spc,0,0])
  }
}