Open up Generate Report to API

I’ve been really diving into Generate Report on a project for three houses for a commercial developer. I am building a Bill of Quantities using it.

I feel like I have started to find the limits of Generate Report. For example:

  • it can’t work out areas
  • it can’t deal with edge lengths (just bounding box lengths)
  • it doesn’t always deal with data nested in components within components (what if you wanted a total volume of a component that has several solid objects in it?)

It also occurs to me that the problems above are not straightforward to solve, and the way one person might want to extract data wouldn’t work for another. The modelling style of the user also will have an impact on how one might want to generate a report.

It occurs to me that it makes sense to open up Generate Report to an API. Specifically, I would want a Ruby API to create custom attributes that can be reported back to generate report.

Basically, how it would work is:

  1. a custom Report attribute is defined by an extension.
  2. if the attribute is queried by Generate Report, the extension runs a script (with the component instance / group it is looking into as a variable), and returns a value.
  3. Generate Report uses that value as it would any other attribute.

Even better, Generate Report could allow users to create custom simple scripts in Ruby without needing to make an extension. Then snippets of code can be shared among these forums.

Examples of what this could do:

  • return the number of bricks required in building a wall (it gets the volume of the solid and divides by the volume of a brick)
  • returns the area of plasterboard (if the plasterboard is modelled with thickness, there is more sophisticated scripting needed)
  • returns the total perimeter of a surface/face (counts edge lengths, but excludes softened / hidden edges)

Any takers?

Generate Report is awesome!!! But i never use it because it can’t report face areas & materials! :smiley:
For a surface-based modeller, this is a glaring oversight.

I havent checked it lately actually, but I don’t think it can report on custom attributes or IFC classes, like if you added a “weight” property to your bricks. Is that still the case?

I agree we need the “area” of an object, eg the face of plasterboard, or the surface area of a paving stone (we dont want the area of all faces, but the area of the top face…it’s often not the same as L*W)

A couple of suggestions for your list:

  • Make the longest dimension in an object = the Length regardless of axis orientation
  • Report any label added to any item or material along with that material.

As a sidenote, a lot of stuff in construction has a counterpart or is part of an Assembly, eg number of Bricks > quantity of Mortar, Rebar , Concrete, or plaster coating. Often we also want calcs for wasteage or delivery quantities (pallete load capacity). So …there’s always a secondary process of taking the report into Excel to add those columns & calcs. I’m not sure if there’s a way of making that easier without embedding Excel into SketchUp :stuck_out_tongue:
The trouble then is that editing stuff (attributes and descriptions) in Excel is great but you can’t use it to update the SketchUp model :P!

1 Like

This has frustrated me ever since the upgrade to V2 of Generate Report. It is probably the most basic functionality in a Design tool in the AEC-industry. Yes, you can rightclick and choose ‘Area’

Then what? copy-paste-and-repeat-for-every-material?

There should be a reporting attribute in GR with accompanying format:

The second most wanted ‘things to know about my design’ is indeed a concept like ‘Perimeter’. Not sure if this requires a whole new setup in programming, but selecting edges by hand and then looking in the entity info panel…

Volume is actually a reporting attribute, and with the right set up of the model, one can get volumes, for instance, grouped by ‘Tag’:

Note: two blocks inside that group are tagged ‘Beam’ and the one on the left is tagged ‘Stud’

But sometimes, you need a little more flexibility, or a way to configure and trigger your default reports, especially when you have to update inside LayOut. (there could be a way to generate included .grt files of the SketchUp model directly)

Anyhow, as with more things, development seems to stop as soon as it is launched (“hé, this works” or “wasn’t there an extension for that, already?”)[/rant]

there is one reporting attribute called classifications type (the main category in classifications):

Attached .skc for NAHB cost codes as a zip, unzip it and import through Model Info > Classifications

NAHB cost (4,1 KB)

BTW, all custom attributes that are created by an extension (Dictionaries) do end up in the data table manager of the 3D Viewer (yeah…Trimble Connect):

and custom dictionaries that you manually enter through Attribute inspector:

Thanks for your contributions, Mike! Clearly there is frustration there, and I can understand.

Ah that is interesting! There is a work around I guess to add what you need if you are an extension developer. However, I don’t think that will work for many people.

Yes, I am aware of this, but I found it annoying how there was no way for a parent object to aggregate all the volumes of its children and inherit that value. So in your case, the “Untagged” group has nested in it solid objects with volume, but itself has no volume. I wanted an option where Untagged would have the total volume of its nested objects.


What is clear is that Generate Report only deals with objects (components and groups) and their attributes. It simply does not deal with geometry like faces and edges.

There is a problem with presenting objects and geometry in the same table, as these entities do not share the same attributes (except “material” and “Tag”). At best, you could have a report for faces, report for edges and report for objects separately. That bloats the interface too much for me, hence my suggestion to allow each object to have custom attributes that queries the geometry within it, and take that as the value.

This is the thing - you need to know when to stop and allow other programs to do their thing.

For a long time, I thought the best thing for SketchUp was to have an API where a model file could be queried like a database by an external application that specialises in it.

I thought airtable might be a good candidate. I have an architect friend who uses Airtable for managing their builds (design and build contractors). They do amazing things with it, linking their specifications with reporting issues on site etc. etc.

It is conceptually possible to link up a SketchUp model to this cloud based database system. So the answer may lie outside SketchUp to generate reports in the future.

Well that’s a matter of the organization of the model.
Old skool SketchUp user’s had to cope with the missing concept of, for instance, ‘families’ in Revit or ‘Assemblies’ in Tekla.
So they found a way to ‘nest’ tags inside a higher level of containers (groups or components)
Mike Brightmans way of nesting goes 4 levels deep and basically only requires 30 layers (tags) as a maximum.

But all other CAD uses the ‘normal’ way of layering.

I doubt there will be such a concept in SketchUp, so if you want to play with existing other aoftware, you need to comply with those rules.

Btw, the Generate report is basically outside of SketchUp, already, why invent the wheel twice if we could just use the data table inside Trimble Connect?
(With a subscription comes a plan to create and organise your data)

There is also an API available for creating extensions in Trimble Connect…