[Plugin] VisMap - Layer/Scene Visibility Map
-
@martinrinehart said:
Bob, I need a sample model.
I took my main model (40MB) and started deleting layers (after I had deleted all but one scene). It initially had 205 layers and 22 scenes. After each set of deletions (about 20 at a time), I updated the scene and saved the model, then tried to "Get Data From Model". [VisMap dated 28 Sep 2009]
I finally had to delete ALL the layers except Layer(0) before VisMap would "Get Data from Model". (See Attached)The really weird thing is that the file is still 13.6MB!!!!!!(See Attached)
I can send you this if you can handle 14MB.This suggested something not right in how SU handles "something". How could a model with nothing in it be 13.6MB
![Shows the "empty" model is still 13.6MB](/uploads/imported_attachments/Qc7T_Screenshot2009-09-28at5.35.12PM.png "Shows the "empty" model is still 13.6MB")
-
@edson said:
it did not work for me on mac.
I tightened that up a lot. That's Ruby catching an error and forwarding it to the WebDialog to show to you. Your model has some sort of internal damage. Try "Purge Unused."
If that doesn't work, make a copy, delete half your layers and try again. If that fixes it, you've deleted a bad layer. If that doesn't work, make another copy and delete the other half of the layers. The remainder should work. Continue, working on quarters, eighths, ... until you find the bad layer.
If you can't isolate a single bad layer, try rebuilding one layer at a time: turn all but one layer off. Select all, copy to clipboard, open fresh model, make a recipient layer, paste from clipboard. Vismap it to be sure it's clean. Repeat.
Good luck.
-
@bob james said:
The really weird thing is that the file is still 13.6MB!
I assume you "Purge Unused"? I don't want a copy. Your model has issues.
Use the technique I suggested to Edson to rebuild. One layer at a time, select all, copy, paste into fresh file/fresh layer. Save. Keep Model Info open to File and watch size carefully. Use Vismap as an integrity check while you rebuild.
Good luck.
-
martin,
purge unused did not help. then i tried (sort of) your technique but by copying groups of five layers at a time to a new file and running vismap after each copy. it worked every time until all the layers had been copied.EDIT: however, the error reported above is happening with every file i open. i do not believe every one of them have problems. purge unused does not help, fix problems returns no problems. i cannot imagine having to move all layers to new files for every model i work on. my conclusion: vismap is still not being able to handle big files with many layers and scenes.
-
@edson said:
it worked every time until all the layers had been copied.
EDIT: however, the error reported above is happening with every file i open.
I'm not certain whether this is a size or a Mac issue. This morning I've been making a movie promoting a club I've designed. Could you try it? If your problem reappears, we'll know it's platform-related.
Try http://www.MartinRinehart.com/download.html
The last of the four downloads, rf.zip, contains "club.skp". Open it, add a couple scenes and VisMap it. (This was my first SketchUp model, so don't judge it too harshly, please.)
-
martin,
i created some scenes and tried it with your file. it worked. your file has 3.8 Mb, mine have all more than 30Mb.
-
@edson said:
i created some scenes and tried it with your file. it worked. your file has 3.8 Mb, mine have all more than 30Mb.
Thanks!
I am not understanding this. The VisMap Ruby code is getting an error. It collects an array of layer names, an array of scene names and a string with one "V" or "I" for each scene/layer intersection. That is a very small amount of data, even for your 30MB+ models. Hmmmm.
# /models/rubies/t.rb require 'sketchup' model = Sketchup.active_model layers = model.layers scenes = model.pages puts puts 'This model has ' + (layers.length).to_s + ' layers and ' + (scenes.count).to_s + ' scenes.' i = 0 scenes.each do |s| puts puts puts 'Processing scene ' + (s.name).to_s if s.layers.length > 0 puts 'Invisible layers in ' + (s.name).to_s + ' are;' s.layers.each do |l| print l.name + ', ' end else puts (s.name).to_s + ' has no invisible layers.' end puts end
Above is a little reporter that lists each scene in a model and the layers within that scene that are invisible. Try it on my small model to make sure it works. Select All here, copy to clipboard, paste into editor, save to any convenient directory as "t.rb". With small model open in SU, open the Ruby Console window. In the white input line enter:
load '/where/you/chose/t.rb'
and press Enter. You should get a report. (Expand the Ruby Console a lot to view it.)
Assuming that works, load one of your models into SU. In Ruby Console, up arrow, then Enter. That will start the report on your model. (Good time here to get a fresh cup of coffee.) It will run successfully, to completion of your last scene, or it will crash. I want it to crash, and I want to see the error message.
If runs to completion, please ZIP up and send me a copy of enough of one of your models to reliably refuse to VisMap. MartinRinehart at gmail dot com. And thanks again.
-
martin,
i followed your instructions but the result was different from what you describe above. there was not a long report nor did sketchup crash. all i got is what you can see below.
-
@edson said:
all i got is what you can see below.
Odd. That error comes when the code says "if foo < bar" but "foo" is nil (doesn't exist). Then it's a traceback showing that the error is in "ldd_remake_labels" which was called by "addObservers" which was called by ... Those numbers are line numbers where the functions are found in the source file.
All of which is to say that you somehow ran some Ruby entirely other than the wee bit in my post.
Did I say SketchUp would crash? Didn't mean it. The little report-writing Ruby would crash as per your example, but with a line number in the 0 to 20 area.
Could you try it again, using some other directory and/or name? Thanks again.
Edit: Another possibility. My line "require 'sketchup'" loads the "sketchup.rb" library. That crash could be coming from deep in that library. Make sure you have a model loaded that VisMaps successfully before you try again.
-
Martin,
the 'true' means your script loaded successfully, twice, but... where did the output go?
ldd_ is LEDAS Driving Dimensions plugin. I'll pm Dmitry and see if he can take a look here and see what is happening.
-
Edson,
Thank you for reporting this problem. Could you please say what else plugins do you use in SketchUp and how often this problem happens?
-
@dmitry ushakov said:
Edson,
Thank you for reporting this problem. Could you please say what else plugins do you use in SketchUp and how often this problem happens?
dmitry,
i use a huge number of plugins. if you want i can make screen shots of my folder. this problem never ocurred before. it only came up when i ran the file martin asked me to. -
@dmitry ushakov said:
Thank you for reporting this problem.
Dmitry,
Edson is unable to run my VisMap Ruby on some large models. I wrote a 20-line reporter that, I hoped, would help find the problem. Edson copied my little bit of code into "t.rb" on his machine and loaded it in the Ruby Console.
At least that was the plan. That's what Edson's screenshot shows. Somehow, your LEDAS Driving Dimensions plugin was triggered, instead of the little reporter. Any idea how LDD could have been triggered?
Martin
-
Edson, Martin,
Thank you for these explanation. The reason of the bug seems to be clear - our plugin tries to update a model, but fails since the model contains some corrupted piece of data (not surprising, since Edson uses "a huge number of plugins"). We are going to fix this behavior in the forthcoming version of our LDD plugin by checking the correctness of our data before updating a model.
However, I have to ask another question: when exactly the problem happens? When you open a model or when you load 't.rb' in the Ruby console?
-
@dmitry ushakov said:
However, I have to ask another question: when exactly the problem happens? When you open a model or when you load 't.rb' in the Ruby console?
only when I load 't.rb' in the Ruby console.
-
Edson, please try the newest version (1.2) of our Driving Dimensions plugin.
Your problem should be fixed, since we have resolved several compatibility issues.
You can download it here. -
-
just tried to run vismap after having updated the driving dimensions plugin. there was an error but it does not seem to be related to DD.
-
@edson said:
just tried to run vismap after having updated the driving dimensions plugin. there was an error but it does not seem to be related to DD.
That is VisMap doing exactly what it is supposed to do: reporting that your model has an error. It is trying to loop through something (the "each" method) that doesn't exist.
Can you send me the model? (Too big? Break into pieces. Send pieces. I'll rebuild.)
Thanks!
-
martin,
i have sent you a model via yousendit. however, it is hard to believe all my models have problems. i tried vismap on more than 10 with the same result. i am inclined to think vismap has difficulties to handle large models.regards,
Advertisement