[Plugin] Superglue
-
hey thom thom just tried this ruby and works great. thanx alot
-
Sean!
Long time no see. How are you?
What have you been up to? Are you completely Max person now? Got some new work to show off? -
Im good, you? and nope, i speak max and sketchup sketchups just too easy to completely throw out of ones workflow.
check out the company blog http://www.constructmedia.co.uk/news will post some new stuff soon
-
i dont understand how to use it, can anyone help explain to me?
-
Hi Ellen,
Here is a short video with captions:
YouTube - Superglue Plugin for SketchUp by ThomThom
[flash=480,385:22ve9z34]http://www.youtube.com/v/VS8-tjYTPXM?fs=1&hl=hu_HU[/flash:22ve9z34] -
It seems to not work for me
I made a component that makes a hole in a face, when I take the component from Components window, it cuts hole, if I copy it from model ( + Ctrl), it doesn't cut hole. I used Superglue on it, it doesn't cut hole. Am I misusing the plugin? Why that components don't cut hole when I copy them?
-
@unknownuser said:
It seems to not work for me
I made a component that makes a hole in a face, when I take the component from Components window, it cuts hole, if I copy it from model ( + Ctrl), it doesn't cut hole. I used Superglue on it, it doesn't cut hole. Am I misusing the plugin? Why that components don't cut hole when I copy them?
Can you post sample model?
-
can't explain myself. I saved the model as new file, it worked there. In the original one doesn't want. I copied the model in a new sketchup window, it doesn't work.
It looks like is a sketchup glitch, rather than model-related. -
Are you trying to clue the component onto a face directly, or is the face wrapped in a group/component?
-
When you place a component from the Component-Browser it is put onto your cursor at that component's origin, this is necessary because the origin [axes] must be put down snapped onto a face so that the instance will be assigned that face which it can then 'glue' and 'cut'.
If you copy an already placed instance using Move+Ctrl you need to pick a point on the face that the instance is glued to [or a corner of the instance that is on that face]; then when you pick a new face the component will again find a face to glue/cut. BUT if you pick a point that's off the original's glued face then you won't be able to snap the copy onto another face because it'll always be placed non-planar to a face.
Similarly, if your cutting component has geometry [like a frame/surround or a projecting-sill] that projects in front of the plane of the wall face [and therefore the cut hole] when you use Edit>Copy and then Edit>Paste the cursor that's locked on to the copy is placed NOT always at the copy's 'origin' BUT sometimes at its bounding-box minimum extents, which isn't then going to be the component's 'origin' [especially if the source instance is itself not glued to a face] - so when you snap it onto a face it will not find any face that is coincident with its origin, so there's no gluing and therefore no cut. I suspect that SuperGlue - like other '[re]gluing' tools - looks for a face below the instance's origin and if it can't then find one then there's no gluing and therefore no cutting. A component that's located with its origin a few mm away a face is just as 'unconnected' to that face as if it were placed meters away in empty space.
Conversely, if you have a 'flush' cutting component with no projections in front of the wall face it will Copy/Paste quite satisfactorily, as in this case the cursor will be in the same plane as the component's origin [even if it's perhaps not on the origin itself] and so subsequent snapping of it onto a face will this time find that face coincident with the origin, and which it can then use to glue/cut...
Hence you can get seemingly odd behavior across different types of gluing/cutting components when they are copied, IF you fail to appreciate what is happening with the object's geometry and the cursor...
To see it in action try making a completely flush cutting component and also another version with very large projecting sill [500mm!], use the Component-Browser to place instances of both into a wall and then watch where the cursor is located during subsequent copy/paste operations and the success/failure to glue/cut for the copies, and copies of copies, or copies of non-glued instances etc -
My last thought is that in original model was some small deviation from "coplanar" ... because as i said before, I wrapped everything in a component, I saved as new file, then opened and it cut hole by copying and by placing from Component Browser.
In original model it did not cut hole by copying, just by placing new component from Component Browser. When I copied I was on face with the cursor. I tested that by exploding the component and it merged with the face. -
If the component has non-coplanar parts you might get the cursor no longer being in the face when the copy is snapped.
Can you save_as the component and post it so we can have a better idea of what's going on... -
Great little plugin!
Found it thanks to the new Extention Warehouse, should have seen this years ago!It would be great if you could add a "glue" option to the context menu(below the standard "unglue" option).
Cheers!
Jan -
@brewsky said:
It would be great if you could add a "glue" option to the context menu(below the standard "unglue" option).
Good idea!
-
Though... not quite sure how to work out what face to glue it to...
-
The re-glue tool in my HolePunch tool works out the instance.transformation and gets the .origin and .zaxis and looks for a face in the instance.parent.entities that shares the same normal as the .zaxis and also that has a good classify_point result for the .origin ... So it is possible...
-
@thomthom said:
Though... not quite sure how to work out what face to glue it to...
Checking every face in the active collection for a common plane with the component could probably get slow...
http://www.sketchup.com/intl/en/developer/docs/ourdoc/geom.php#intersect_plane_plane
If that's too slow, maybe only check if a cutting component AND a face are selected? -
@tig said:
a good classify_point result for the .origin ...
Didn't think of that, you are right, you need a classify_point otherwise it could glue to a face on the same plane a mile off!
-
Wonder what performance that has. ..but I guess it doesn't need to be fast...
-
You don't need to iterate every face in the array from:
faces=instance.parent.entities.grep(SketchUp::Face)
The loop canbreak
when a face with a matchingnormal
&&classify_point
match is found and you do the re-glue.
That means on average you only need to look at ~50% of the faces to get a re-glue.
On a bad day you need to look through all of the faces, only to find it's the last one == slowest possible re-glue; or there are no suitable faces at all == a "no-glue" !
On your lucky day you might look at the first face and find it's a match == instant re-glue...
Advertisement