Attributes - Export / Create More / Linking with Database ?
-
I'm getting your files now - in C:\Program Files\Render Plus Systems\RpTools
RpTools reports go to the same directory. Their files are named test_report.txt (and csv).
No error messages appear in the Ruby console.
I did not get a closing saying the files were written - even the first time I successfully tried it here. I had opened the files in Excel to see how they look (had to move over the column a bit) then closed Excel.
I ran your script a second time and still did not get the closing message. The only message I get is one saying it will save the files to the RpTools directory.
XP Pro, SP2.
-
@gata said:
I'm getting your files now - in C:\Program Files\Render Plus Systems\RpTools
RpTools reports go to the same directory. Their files are named test_report.txt (and csv).
No error messages appear in the Ruby console.
I did not get a closing saying the files were written - even the first time I successfully tried it here. I had opened the files in Excel to see how they look (had to move over the column a bit) then closed Excel.
I ran your script a second time and still did not get the closing message. The only message I get is one saying it will save the files to the RpTools directory.
XP Pro, SP2.
The older/simpler ComponentReporter.rb made a csv [comma] and a txt [tab] file, BUT that went into the model's folder and were named as the ModelName-ComponentReport.XXX
The new version only makes the csv file and has a '+' sign after Component in the file name. Clearly what you are running isn't my script. I don't have the RpTools so I don't know what they do. If there is 'Class' clash it might cause my menu item to run something in their script...
To test this make a backup copy of my ComponentReporter+.rb script, open the original in Notepad [or another plain text editor BUT NOT a word-processor !]. Find and replace Reporter (which is the Class) with say ReporterPlus for every instance thus:
...
class Reporter >>> class ReporterPlus
...
def Reporter::components_plus >>> def ReporterPlus::components_plus
...
def Reporter::miner(ents) >>> def ReporterPlus::miner(ents)
...
xlist=Reporter.miner(elist) >>> xlist=ReporterPlus.miner(elist)
...
full_list=Reporter.miner(all_list) >>> full_list=ReporterPlus.miner(all_list)
...
UI.menu("Plugins").add_item("Component+ Report"){Reporter.components_plus} >>> UI.menu("Plugins").add_item("Component+ Report [TIG]"){ReporterPlus.components_plus}
...
Note when you scroll to near the end and find the menu string - you should add something onto the text like [TIG]. Save the file and re-run.
You should now get an item in the Plugins menu with the [TIG] in itthat runs my script alone... -
TIG, I made all your edits and still get your csv files in RpTools directory.
I used to have the old ComponentReporter.rb, but renamed it with TXT then removed it from the Plugin directory altogether.
And I forgot, RpTools Model Report does produce an announcement message after its file is created whereas your plugin only announces where the file will go.
-
TIG / Jim,
Thanks very much for all your hard work and time spent on writing these scripts.
They are both very useful
...
TIG,
ComponentReporter+V 1.1
I'm finding that this runs no problem. (but no mining ability).V 1.2
I'm not sure what the V1.2 error message refers to either, as I did not have any existing *.csv file open when I ran the script - that was actually the first thing I checked.
...
V 1.3
I'm finding that this runs OK. NO error messages.
I'm finding that it mines down into the Model - 1 Level of nesting.
...
The ultimate version of this script would mine down to drag out all components from the whole model - however deep they are nested inside groups / other components. Is this possible ??? - it would be brilliant if you could implement this.
...
I'm using the V 1.1 of the script until then as the model I'm working on has been exploded down somewhat and the script runs really well.
...
Thanks once again to both of you.
Regards
Howard Leslie -
@gata said:
TIG, I made all your edits and still get your csv files in RpTools directory.
I used to have the old ComponentReporter.rb, but renamed it with TXT then removed it from the Plugin directory altogether.
And I forgot, RpTools Model Report does produce an announcement message after its file is created whereas your plugin only announces where the file will go.
Seems like RpTools is screwing up the model's folder-path which is what my script uses so as to know where to save the model's reports. It's clear from you screen-shot that your model 'gata' isn't in the RpTools reports folder.
Please copy and paste the following into the Ruby Console and publish what is given.
First:
Sketchup.active_model.title
This should given the model name without the .skp extension - e.g. 'gata'Second:
mpath=Dir::pwd
This is your working directory, and should normally be the model's folder - I suspect that RpTools is changing this to suit itself.Third:
Sketchup.active_model.path
Check that RpTools doesn't mess with this...
This is the model's folder - I will change my script to use this by default. -
Rptools does a Dir.chdir before loading a Ruby Extension DLL. (This causes the DLL to search for other DLL's is uses in its own path.)
It should have changed the folder back after loading the DLL, but somehow the line:
Dir.chdir(scur_folder)
got lost.
I will put it back for future versions of RpTools.
However, there may be other Ruby scripts, or other activities which change the current folder. So it might be a good idea to have ComponentReporter.rb specify a specific folder to save the file into.
- You could grab a copy of the current directory when ComponentReporter.rb first loads with: (ComponentsReporter.rb will load before RpTools_loader.rb because it comes first alphabetically)
$srpc_cur_folder = Dir.getwd
and then reset the folder before saving the file with
Dir.chdir($srpc_cur_folder)
or add the folder name to the .CSV file name before saving it.
- You should be able to get the Windows My Documents folder with code along the lines of:
require "Win32API" # you would have to put Win32API into the SketchUp Tools folder SHGetSpecialFolderPath = Win32API.new('shell32', 'SHGetSpecialFolderPath', 'LPLL','L') my_docs_folder = " "*512 # build buffer for file name CSIDL_MYDOCUMENTS = 0x000c SHGetSpecialFolderPath.call(0, my_docs_folder, CSIDL_MYDOCUMENTS, 0)
But I wasn't quite able to get this to work. I wound up writing a ruby DLL to fetch the path of the current folder.
-
Ruby console results.
This file contains my kitty and other creatures. Nesting of groups and components is necessary in part to avoid inadvertently selecting and working on the wrong geometry and parts. Day job typically involves all milwork/woodwork for homes with 20' ceilings and 12 air conditioners. Some elements do get hand sculpting.
This deep mining accounting stuff could be useful to help manage stuff.
-
I've rewritten the Component+Reporter to get the model's directory another way, which then avoids any such problems.
Miner now goes all the way...
Also took the chance to trap for commas in the names into ';' otherwise = messed up .csv files. Although it allowed, it's still best to avoid commas in Component, Group and Layer names.
Also made a 3rd report on 'parentage' a la Outliner...
Also sorted out the File Already Open Error...
v1.4 is here: http://www.sketchucation.com/forums/scf/viewtopic.php?p=6687#p6687
-
TIG, Your files go to the right directory now No message that the files were completed though - if you still coded for that.
It might be more useful if your three files were three pages in one Excel document.
I noticed that you cannot save adjusted column widths in the csv format. Interesting. I suppose such limitations disallows pages in csv too.
Also, area doesn't have units listed.
-
@gata said:
TIG, Your files go to the right directory now No message that the files were completed though - if you still coded for that.
It might be more useful if your three files were three pages in one Excel document.
I noticed that you cannot save adjusted column widths in the csv format. Interesting. I suppose such limitations disallows pages in csv too.
Also, area doesn't have units listed.
You should always get a dialog at the end telling you where the three files went ?
It is difficult to make multi-page csv's - that's why you get three !
The easy way to use a .csv file with formatting is to make a separate full blown Excel .xls file - using the same name seems logical (XXX-Component+Report.csv and XXX-Component+Report.xls). Then open the cvs and xls. We need to link them so that the xls keeps its formatting while the csv can be rewritten and the data reflected in the linked xls without loss of formatting [There's Excel help on this too]. Here's how..Open both files.
Have the csv at the front.
Select the cells in the csv that you want to link into the xls.
Ctrl+C to copy.
Switch to xls window.
Menu > Edit > Paste Special...
In the dialog click the bottom 'As Link' button.
Now the csv is linked into the xls.
Format the xls as you wish.
Whenever the csv changes the xls will too when it next opens.
You'll need to edit the blank fields that come mover as '0' and if the csv rows increase you'll need to re-link the csv into the xls...
See Excel Help for more details...Areas. The XYZ dims are in current units BUT the areas report in the system default 'sq inches'. I'll adjust it to come in current units - look out for an update...
-
Here's v1.5
http://www.sketchucation.com/forums/scf/viewtopic.php?p=6688#p6688
Areas are now in current units... however there is guidance on how to set areas to sq m if you work in mm etc... -
Due to the excitement of the moment I thought the written to announcement showed up at the beginning - not the end. All is well.
TIG, looks like you, Al, and vendmr are giving me a reason to delve into Excel. The ability to make custom, update-able XLS could indeed be very useful.
Recent we made a bunch of custom doors and jams. On the most part the rough opening measures and count recorded in an Excel file where correct. But somehow the people fabricating everything were often given drawings with incorrect sizes and hinge side location.
Some of my current projects includes domed ceilings and adding faux beams to a groin vault. If thing were originally laid out in SU, I wouldn't have to fudge things to fit now.
-
TIG,
ComponentReporter+ V 1.5
Outstanding script.
The parentage / outliner type report - very useful addition also.
...
The deep mining ability seems to work well after an initial (tough) trial:42 MB Model (this includes 2 x Xref'd models)
Layers 30
Component Definitions 921
Component Instances 7650
Groups 3410
...
V 1.5 went to work - 30 seconds in total to produce all reports (ie very quick).
So far the script looks really good and appears to be working well.
...
A Massive Thank You for all your hard work in producing this script.
...
Regards
Howard Leslie -
Modelhead,
You asked about what you can do with this script.
...
Increasingly clients ask for information and data related to a model - not just a pretty picture of the actually geometry / 3D views etc.
Producing a model is really just the start, not the end point in many instances.
...
Currently SU is very limited in what attributes you can attach to elements (groups / components) in a model:
Layer,Definition Name,Instance Name,Material
...
In SU you could give a Steelwork Member for example the following attributes:
Layer = 7F (7th Floor)
Definition = RSJ_10x4x25 (Component Name for Steel Beam for Example)
Instance = 1234 (Beam ID No.)
Material = Steelwork
...
Draw entire model using all your pre-drawn Steelwork Components
...
Run TIGs Script
...
Now you can query the CSV (XLS) Table in many ways eg
Filter by Floor Level - All Steelwork will be listed out (used to calc floor loadings)
How many Beams / Columns of a particular size does a building have ???
etc etc
You can now also run calcs and statistics on the components as you have a count of quantities.
TIGs script allows you to select and report by area so you can restrict the report to a given area / floor level etc.
...
Equally valid for working out quantities for regular domestic buildings / constructions
(depending upon how you draw / set your model up).
...
Material field can also be used to define contents eg pipeline contents:
water (green)
crude oil (grey)
steam (blue)
(ie not really material at all)
etc
etc
...
What would be extremely useful for SU V7 and would be top of my personal wish list (although I'm probably in a minority):
Ability to View Outliner as a Table.
Ability to Link a Field in this Outliner Table (ie an ID number of a component) to an external Database / Table and Run Querys back to the Model.
MASSIVE POTENTIAL.
(I'd definitely put this above rendering ability - but its a purely personal view).
...
Currently, unless you purchase expensive GIS software its not possible to do this with SU models.
...
Hope this gives you something to think about / answers your question.
Regards
Howard L' -
I think I found another timely use for this script - ammunition.
As I have mentioned above, there have been many expensive mistakes, mostly by the draftsmen/project managers. Myself and another person have been moved up to 'office' positions because we know how to make things. Today a 'CAD specialist' consultant was brought in to help fix the flow of information.
I described things I did and the 'specialist' thought Inventor and Solid Works would be good: but expensive and with a long learning curve. He did not know SU but he doubted the usefulness of something free. I tried to correct his perception. I found his Inventor nonsense a bit funny since I rejected Inventor 3 years ago in favor of SU.
So tonight I'm pulling together stuff to showcase this program - like how easy it is to layout a beamed, groin vault. And now this script adds a shinny, new weapon to my arsenal. So again, I thank you, very much.
-
...AND don't forget that my script only lists what is the basic built-in info within any SUP model. IF you were to give components (or any lesser or higher geometry a parts) 'attributes' then these are list-able too... Theoretically every single bit of a model could have a wealth of extra information attached to it via attributes - on a one by one basis - that could then be extracted for later use, or used in the way it interacts withother entities or the user.
Examples of using attributes are the examples of Parametric shapes, or RickW's Windowizer - in which windowized faces 'know' they are windowized and generate an appropriate context-menu entry... OR my Xref Manager that has attributes inserted into Xref skp components (or even dwf/dwg inserts) and checks to see if they are still valid or have been changed since the last insertion. It also has a method (for PC only at present since Macs vary in the way the Ruby runs at startup - but that should be fixed), whereby an attribute is attached to the whole model which then tells Xref Manager on startup if it's to check if Xrefs need updating IF you have set it to do so previously in a simple dialog...
This approach could be the basis of of full BIM BUT it needs a lot of work...
-
Here's v1.6.
It sorts out file/folder paths slightly differently, which might avoid the Mac crash. It also corrects the typo in a dialog reported by Didier...
http://www.sketchucation.com/forums/scf/viewtopic.php?p=6692#p6692
-
@chris fullmer said:
Sorry for the merciless posting, but I keep finding more ane more info. here are some more posts that might help:
http://groups.google.com/group/Sketchup-Pro/browse_thread/thread/9242c9429d3dc3a0/754c90c334e8b166?
maybe its just best to see his list of "recent" posts (almost all more than 1 year ago):
again, hope it helps.
Chris
integrating Google Spreadsheets with Google SketchUp
http://forum.sketchup.com/showthread.php?p=499535#post499535 -
But the links seems to be dead
-
Advertisement