Yes, inputbox does return false when the user hits the Cancel button.
If the code you posted is what you are using, there is a mistake where you use:
if false ..
where you meant to use:
if results == false ...
Yes, inputbox does return false when the user hits the Cancel button.
If the code you posted is what you are using, there is a mistake where you use:
if false ..
where you meant to use:
if results == false ...
Not natively, but it can be done with a custom Ruby tool.
What file format are you using? What anti-aliasing and compression options are you using? Both of these can slow the export.
Hi Stan.
The selection is a collection of entities. You can index and iterate the selection set similar to an Array.
sel = Sketchup.active_model.selection
puts "#{sel.size} entities selected."
first_ent = sel.first
third = sel[2]
for e in sel
if e.is_a?(Sketchup;;Group)
puts "Found a Group"
end
end
Currently the plugin writes each snippet to a ruby file (in %APPDATA%) and stores the metadata with the plugin's preferences in the registry.
Is the numeric part of the filename unique for each user? If so, that makes it difficult to have a way to share commands.
Network speed is not a limiting issue. Collaboration in SketchUp does not necessarily mean working on the same model file.
My approach would be that each participant would work on their own local files, and then modeling actions would be synchronized to each participant using some text-based protocol.
So the limitation is with SketchUp and the Ruby API not being able to access 100% of modeling actions. I am not sure the API is capable of that with current observers, although improvements were made with 2014.
It may be easier to sync models by creating a replacement set of modeling tools, but that is a big amount of work.
This brings to mind 2 things. Check the scale of the model - it may be very large or very small.
Check the distance the model (and components) are from their origins. Geometry that is very far away from the origin can act strangely.
Do I remember a plugin by thomthom that attempted to fix these issues?
You can insert a newline using \n
txt = "This is line one.\nThis is line two"
UI.messagebox(txt)
Hi Stephen - I've not experienced this myself, and don't know why it is happening.
The dialog is made using thomthom's SKUI framework.
Could it be an IE security setting?
@olishea said:
Have you used this stl exporter instead? Works better for me, not tried installing in 2014 though.
Works better how?
Install SketchUp STL using the Extensions Warehouse instead of su2stl.rb from the Plugins Store. The Extensions Warehouse in under the Window menu in SketchUp.
Your library of custom third-party extensions created to optimize your SketchUp workflow.
(extensions.sketchup.com)
Here is the non-working tool which needs the do_zoom() method filled in.
Entirely possible - I have the code already to make the selection with cross-hairs. Just need help calculating where to move the camera. Ideas, anyone?

i think some dynamic attributes cause instances to become unique - could this be the case here?
Something like..
Dir["myFolder/*.rbs"].each do |filename|
Sketchup.load(filename)
end
I know it has probably already been thought about, but it would be incredible to have a command repository where we can browse, install, and share commands...
Maybe a dvcs repo (github) could be used as the repo. What format would be good for command files - json or yaml maybe?
Same here - no input area for code.
Win 8.1, SU-2014 Pro, IE 11 (never used outside of SketchUp.)

The 1/64 I may have made up, or borrowed from the AutoCAD arbitray axes formula. It is probably not needed. It should work to simply compare the line to the Z_AXIS. If the line is the Z_AXIS, we need to use another axis in the cross product calculation.
Hopfully this is helpful:
model = Sketchup.active_model
line = model.selection[0]
w = 2.0
l = 1.0
pts = [
[-w/2 , -l/2 ] ,
[w/2 , -l/2 ] ,
[w/2 , 0 ] ,
[-w/2 , 0 ]
]
z_axis = line.end.position - line.start.position
l_len = z_axis.length
z_axis.normalize!
if z_axis == Z_AXIS or z_axis == Z_AXIS.reverse
x_axis = z_axis.cross(Y_AXIS).normalize
else
x_axis = z_axis.cross(Z_AXIS).normalize
end
y_axis = x_axis.cross(z_axis).normalize
tr = Geom;;Transformation.axes(line.start.position, x_axis, y_axis, z_axis)
pts.map!{|pt| pt.transform!(tr)}
face = model.entities.add_face(pts)
face.reverse!
face.pushpull(l_len)