[Plugin] SurfaceGen (0.9.0b) — 28 April 2012
-
@diggsey said:
@notareal
That's really nice! What's the equation you used?F(x,y,z) = 2-(cos(x+(1+sqrt(5))/2*y)+cos(x-(1+sqrt(5))/2*y)+cos(y+(1+sqrt(5))/2*z)+cos(y-(1+sqrt(5))/2*z)+cos(z-(1+sqrt(5))/2*x)+cos(z+(1+sqrt(5))/2*x))*16/(x*x+y*y+z*z) [x]; -5, 5 [y]; -5, 5 [z]; -5, 5
There is plenty more at the k3dsurf forum.
-
Perhaps you could add some more functionality; like functions min, max and abs. Also allow use of arithmetic operations and pi in axes, like -2*pi.
-
You already have 'pi' [in lowercase] as a function?
-
@diggsey said:
@Pilou
Just re-select the group with the select tool. It seems that the SelectionObserver doesn't fire when the selection is changed in code.The
SelectionObserver
has always been very buggy: http://www.thomthom.net/software/sketchup/observers/ -
Just uploaded a fairly major update to the first post!
@driven
This should fix the issues with macs. It now uses cross-platform methods to locate and load resource, and uses show_modal rather than show on macs with the WebDialog.@notareal
The axes now let you use an expression such as 2*pi@d12dozr
Helpful error message are now shown when an expression is invalid. -
Thanks
Error; #<ArgumentError; Cannot convert argument to Sketchup;;Point3d> C;/Program Files/Google/Google SketchUp 8/Plugins/SURFACEGEN_Dir/surfacegen_tool.rb;270;in `add' C;/Program Files/Google/Google SketchUp 8/Plugins/SURFACEGEN_Dir/surfacegen_tool.rb;270;in `getExtents'
One minor error in
getExtents
insurfacegen_tool.rb
Line #270result.add @p0 if @state >= 0
can raise an error so adjusting it to
return if !@p0 or @p0.class!=Geom::Point3d; result.add @p0 if @state >= 0
might help - you could also add similar validity checks on the other points that are added to the extents ? -
Ah, I knew I'd forgotten something
I've updated the first post. It shouldn't show those errors anymore.
-
Cool.
The 'rand' function is also interesting... -
Just updated again fixing a small bug with the expression parser.
Equation = min(((max(abs(y)-(2sqrt(z+4)) ,(x+0.5abs((abs(y)+4)/3.5)/(1+(((abs(y)+4)/3.5)^2-2)^2)/2 2/(1+(z-2)^2)+abs(y/1.5)^3.5/7 ) )max( max( abs(x+0.15+(y/0.7)^2)+(z-1.3)/1.4,max(z-2.3, max( abs(x+0)/2.4 -1+2abs(1.5y)+(z+0.1)/2 , -z ))) ,x-0.8+z/2)-0.1 )*(abs(x+y^2/3)-0.2+abs(abs(z+1.8)-(0.5-(y/2)^2) )^1.2 )-0.1 ),( (x+1.2+abs(y)/10)^2+(abs(y)-1.1)^2/2.5+(z-2.3)^2/1.8-0.64))
x: -3 to 1
y: -4 to 4
z: -4 to 5.4@TIG
Yes you can use any built in ruby function;)@jim
I can't make the window resizable because it is shown and hidden by resizing it to a fixed value and zero respectively, and there is no API function to get the size of the window to save it. However, you can easily change the height of the window. Open surfacegen.rb in notepad and change the line "WINDOW_HEIGHT = 320" to about "WINDOW_HEIGHT = 350". You can try different values until you get what you want. -
yes,
working on the mac...
I don't know if I downloaded before or after your latest tweak,
is there a version number somewhere on the files?another thing, is it possible to have a 'use last' settings option?
playing around with the box size on the head requires [re]inputting the data each time
cheers
john -
If you need to use the same settings as last time just copy and paste the graph, and then change the settings you need to. All the settings are stored as attributes of the graph so will be copied with it. If you need to change the size you can use the scale tool just as easily as creating a new graph.
-
@tig said:
You already have 'pi' [in lowercase] as a function?
Also now in axes... get improvement with other functions too
-
BTW.. the varying size of content seen by jim is most likely due to your using [ font-size: 8pt; ] as although 1px=0.75pt different browsers treat pt oddly,
with safari, in SU, on my mac 8pt is reading as 8px and everything fits if a bit small.
-
Got some inspiration from http://abdelhamid394.blogspot.com/
-
This is very cool.
Two questions:
Is there any noise available? If not that would be a great addition.
I've tried with rand but that isn't noise.A few links to good sites with functions and equations for surfaces would also help getting up to speed.
-
I've updated the first post with version 0.8.
@Pixero
What exactly do you mean by noise? Surely just adding (rand-0.5) will put noise on the graph? -
Thanks, Diggsey.
Just a minor annoyance. Since the dialog steals the focsus, whenever I select a Surface, my SU shortcuts don't work. For example, select the Surface to move it - press the 'm' shortcut to Move it - can't Move it because the dialog got the keypress.
-
Unfortunately, I don't think there's a way to give focus back to SketchUp from ruby. (Someone correct me if I'm wrong!)
-
I don't think so either, and I realize a small change in workflow is all that's required - but as the saying goes "old habits die hard." No worries.
-
If you pick a surfacegen-entity the surfacegen-dialog appears.
Minimize that surfacegen-dialog.
The focus will then return to the SKP window.
So now you can use shortcuts etc to Move the selected entity etc.
Restore the surfacegen-dialog to change the surfacegen-entity's settings...
Advertisement