Greeble Beta (Updated Feb-06-2009)
-
Thanks Thom, I think that is what the problem is. I am getting this error
Error: #<TypeError: reference to deleted Face>
and it happens when I am repeatedly apply greeble to very messy geometry - like faces that have been greebled many times already and are overlapping all over the place. Eventually it just breaks with that error. I'll add a validity check, and hopefully that will clear it up. I don't think I can keep rechecking the model entities though because the script creates so much geometry that I don't want touched. I only want it to work on the faces that exist before I begin the script. But the more intertwined those faces are, the more likely I am te have one of them overlap and delete a face that has not been greebled, thereby breaking the script. So, I'll try the a.valid and see if that does the trick. Thanks Thom!
Chris
-
Definitely test with face.valid?
if face.valid? #do code here end
As for SU6/7 issues, it could be an issue of the model.start_operation(name,true) breaking SU6, since SU6 only takes one argument. I use this:
(Sketchup.version[0,1].to_i<7) ? (view.model.start_operation "name here") ; (view.model.start_operation "name here", true)
obviously changing "name here" to something a bit more descriptive
-
Heyhey! My code is similar, and that makes me happy. I'm using
a = Sketchup.version b = a[0,1].to_i if b > 6 model.start_operation("Greeble", true) else model.start_operation("Greeble") end
I like how your code consolidates it all down to just 2 lines though. I already can see all the extra fluff I have in there, so I'll clean it up.
The reason it was not working before is because I accdidentally had written if b >= 6 and clearly I don't want the equal sign. So I've removed it and tested it on 6 on my XP machine and it works great.
I'll implement the valid check after I'm done being busy with work
Chris
-
chris:
I just d/l'ed the latest greeble here is a pic, from Vista64 using SU6
-
I'm not on my Vistaq machine right now, but that is the same error I was getting on it running SU7. But SU6 and 7 both work on my XP machine here at work right now. So it looks like a Vista issue. I'll see if I can find anything in the code that looks a little shaky ( well, it ALL looks a little shaky honestly). I haven't really heard of plugins that work on XP but not Vista.
Chris
-
Hi Pilou, could you specifiy if that is on XP, Vista, or Mac? Thanks!
Chris
-
@chris fullmer said:
I like how your code consolidates it all down to just 2 lines though. I already can see all the extra fluff I have in there, so I'll clean it up.
If the forum didn't wrap the line, you would see a single line of code. It's called a "ternary expression" since it has three parts (binary is 2 parts, ternary is 3 parts), and it is essentially just a very compact if:then:else statement.
The parts are:
(argument) ? (result_if_true) : (result_if_false)It's best for short tests, but will work for longer ones, and you can nest them:
def guessme(x=10) my_number = rand(x.to_i)+1 while (guess = ((UI.inputbox(["Guess a number between 1 and #{x} inclusive;"]))[0]).to_i) (guess == my_number) ? (UI.messagebox("You're right!");return nil) ; (return nil if UI.messagebox("Too #{(guess>my_number) ? ("high") ; ("low")}. Try again?", MB_YESNO)==7) end end
-
Yikes, I do not fluently read ternary expressions then. I can see sort of what its doing, but there's a lot in there I don't get. Maybe in time Also Rick, I am getting this error:
Error; #<ArgumentError; Cannot create unit vector from zero length vector> C;/Program Files/Google/Google SketchUp 7/Plugins/offset.rb;49;in `parallel?' C;/Program Files/Google/Google SketchUp 7/Plugins/offset.rb;49;in `offset' C;/Program Files/Google/Google SketchUp 7/Plugins/offset.rb;39;in `upto' C;/Program Files/Google/Google SketchUp 7/Plugins/offset.rb;39;in `offset' C;/Program Files/Google/Google SketchUp 7/Plugins/clf_greeble.rb;159;in `greeble' C;/Program Files/Google/Google SketchUp 7/Plugins/clf_greeble.rb;137;in `each' C;/Program Files/Google/Google SketchUp 7/Plugins/clf_greeble.rb;137;in `greeble' C;/Program Files/Google/Google SketchUp 7/Plugins/clf_greeble.rb;200 C;/Program Files/Google/Google SketchUp 7/Plugins/clf_greeble.rb;200;in `call'
I'm sure its because I'm passing bad geometry to your offset script. What do I need to check so as to not pass bad geometry to offset.rb? Thanks!
Chris
-
Seems works fine 6 & 7
Even for the "Tin"
Bravo!
XP on PC
-
@rickw said:
I use this:
(Sketchup.version[0,1].to_i<7) ? (view.model.start_operation "name here") ; (view.model.start_operation "name here", true) >
What happens when SketchUp reaches version 10?
-
-
Haha! Good point. But Google's backwards-compatibility policy is for 3 versions. By that time, there will be no more need for the "true" flag so it will cease to exist after version 9, and then I'm safe until SketchUp 70.0. At that point, my crystal ball gets a bit fuzzy.
But just in case I'm wrong, this is better:
Sketchup.version.split(".")[0].to_i<7
-
@chris fullmer said:
Rick, I am getting this error:
Error; #<ArgumentError; Cannot create unit vector from zero length vector> > C;/Program Files/Google/Google SketchUp 7/Plugins/offset.rb;49;in `parallel?' > C;/Program Files/Google/Google SketchUp 7/Plugins/offset.rb;49;in `offset' > C;/Program Files/Google/Google SketchUp 7/Plugins/offset.rb;39;in `upto' > C;/Program Files/Google/Google SketchUp 7/Plugins/offset.rb;39;in `offset' > C;/Program Files/Google/Google SketchUp 7/Plugins/clf_greeble.rb;159;in `greeble' > C;/Program Files/Google/Google SketchUp 7/Plugins/clf_greeble.rb;137;in `each' > C;/Program Files/Google/Google SketchUp 7/Plugins/clf_greeble.rb;137;in `greeble' > C;/Program Files/Google/Google SketchUp 7/Plugins/clf_greeble.rb;200 > C;/Program Files/Google/Google SketchUp 7/Plugins/clf_greeble.rb;200;in `call'
I'm sure its because I'm passing bad geometry to your offset script. What do I need to check so as to not pass bad geometry to offset.rb? Thanks!
Chris
Can you email me a sample .skp file that's causing the error?
-
@rickw said:
@chris fullmer said:
Rick, I am getting this error:
Error; #<ArgumentError; Cannot create unit vector from zero length vector> > > C;/Program Files/Google/Google SketchUp 7/Plugins/offset.rb;49;in `parallel?' > > C;/Program Files/Google/Google SketchUp 7/Plugins/offset.rb;49;in `offset' > > C;/Program Files/Google/Google SketchUp 7/Plugins/offset.rb;39;in `upto' > > C;/Program Files/Google/Google SketchUp 7/Plugins/offset.rb;39;in `offset' > > C;/Program Files/Google/Google SketchUp 7/Plugins/clf_greeble.rb;159;in `greeble' > > C;/Program Files/Google/Google SketchUp 7/Plugins/clf_greeble.rb;137;in `each' > > C;/Program Files/Google/Google SketchUp 7/Plugins/clf_greeble.rb;137;in `greeble' > > C;/Program Files/Google/Google SketchUp 7/Plugins/clf_greeble.rb;200 > > C;/Program Files/Google/Google SketchUp 7/Plugins/clf_greeble.rb;200;in `call'
I'm sure its because I'm passing bad geometry to your offset script. What do I need to check so as to not pass bad geometry to offset.rb? Thanks!
I had the exact same error on one of my files. when I quit SU7. I was asked if I want to fix the error in that file. Which I did. Since then I don't get that error anymore.
FYI: new SU7 install under Vista64, the only installed plugins are what the greeble script requires. -
@tomot said:
FYI: new SU7 install under Vista64, the only installed plugins are what the greeble script requires.
Do you mean that offset.rb is installed with SU7?
-
@rickw said:
Do you mean that offset.rb is installed with SU7?
Yes, offset.rb is installed with SU7
However my previous post and attached picture still confirms the same greeble problem when used with SU6 operating under Vista64. Mind you there are a significant number of Plugins that maybe contributing to the problem, BTW compospraytool.rb is not installed in that plugins dir.
-
Bummer, there must be another script that is interefering too then. I'm wondering, do you have makefaces installed on the version 6? If not, could you install it and try it? It also uses progressbar.rb. So it should be broken too.
I might just have to releae a version that does not use progressbar I guess.
Chris
-
Your version is always written 0.25
you don't increase number between version? -
I've been updating it, but I tihnk I forgot to on this last update because it was a small update. I tihnk it went up to .0255 I do have .027 ready. It fixes a bug that makes the script stop after you greeble the same geometry a few times. But I fixed that and found there is still another problem that does the same thing. So I'm hoping RickW can shed some light as to how to fix the problem. Then other scripts are messing with progressbar too and causing me grief. So maybe today or tonight I'll do a big update that fixes lots of these little things.
Thanks for the reminder on the version number. i'll make sure I keep it up to date from now on
Chris
-
I am confident progressbar.rb is not broken. It gets used 1000's of times a day.
I remember putting in a diagnostic one time to trap a bad call to a method with a nil value. I overrode the nil class to see who was calling it. Found the error in no time flat.
Advertisement