[Plugin] Hole Punching Tool
-
Pilou... explain a little more...
I guess you want to have a punched hole that isn't square to the wall's face !
It wouldn't be easy...However, you can easily mimic it...
First make a HolePunch and then draw over an Edge of the inner punched-hole so it forms a Face, now select just that Face and Move that Face to where you want and it [or you can Scale it to change one or more of its Edges] - the reveals' geometry will adjust to suit the inner-hole's new location or shape, then you can Erase just the Face and you have your distorted punched hole/reveals. This geometry will still auto-Select with the punching component-instance and it will move/delete with it etc etc... -
-
The problem is that the instance is exactly the same 'depth' as the wall - see the Ruby Console for its errors - I can probably trap for that easily... watch for updates...
-
@unknownuser said:
I guess you want to have a punched hole that isn't square to the wall's face !
no no, a square (rectangle) at the start and end
At least any form ! In fact that is a push pull inclined (multiple, if you have some components -
Pilou...
Do what I said...
Form a Face over the inner-hole by over-drawing an Edge.
Select just the Face.
Move the Face.
Select the Face and Delete it.
The hole/reveals are now 'sloping' in 3D.To make 'splayed' reveals you can Scale the Face before Deleting it...
-
Following some feedback...
Here's v1.1 http://forums.sketchucation.com/viewtopic.php?p=271170#p271170
Components exactly matching wall-depth glitch fixed.
Zero depth in dialog trapped.
-
Ah yes, seems thas was also a video about this tricky tips
But all that is very "manual"
Automatic is more pleasantIt's was this one
[flash=480,385:344mybyx]http://www.youtube.com/v/_ALbktAE9C8?fs=1&hl[/flash:344mybyx] -
Why don't put by default infinite depth, and just set depth if wanted?
-
So far. . .so good.
Thanks TIG.
D
-
@unknownuser said:
Why don't put by default infinite depth, and just set depth if wanted?
Because if there were no 'inner-face' to the wall how would it know when to stop extruding the reveals ?
You could add say 1000m as the maximum punch depth and this would be remembered in the model... BUT then if there were ever a wall with no inner-face you'll get v_e_r_y deep reveals ! The 20"/500mm default seems a reasonable depth to start off with ? -
Is it only supposed to punch a hole if the punch depth matches the wall thickness exactly? If I put in a depth greater than the wall thickness, I get no punch....is this correct?
BTW - Thanks TIG for finishing this up and publishing!
-
@unknownuser said:
Because if there were no 'inner-face' to the wall how would it know when to stop extruding the reveals ?
Cousin Component Punch punches all the volume without to know the size?
@unknownuser said:
then if there were ever a wall with no inner-face
don't launch the script
-
The way it works is you set the maximum punched depth [the default is 20"/500mm, but you can permanently change it for that model at any time] - just decide on a value knowing that all your various wall thicknesses are probably always less than that.
The holes are them punched to match the actual wall thickness, IF it's =20" or less [the hole's reveals also match the inner-face material/layer] - BUT if you have a one-face wall [or a very thick wall] then the reveal depth is made as the maximum =20" [and the reveals then match the outer-face material/layer].The code that checks for the inner-face is still not perfect - but I am sleeping on it...
Currently a 'ray' is cast internally from the front-face, centered on the cutting-component instance, until it finds a suitable face that's parallel and facing the right way. If there isn't one it then uses the default reveal size... It's currently possible to trip it up if your component also has a face/edge exactly on the center and at the same distance from the front-face as the real candidate for the inner-face - the ray can mistakenly find that instead of the required face and so it misses it and 'defaults the reveal depth... I suspect this is your case ???
It is possible to test in other ways - for let's say faces' planes and points being 'on' them at the correct 'thickness'... so I just need to think up some better coding solutions - maybe tomorrow - I'm tired now........... -
For me, the raytest seems to miss the parallel wall in every case where my depth is greater than the wall thickness. I'm just using generic SU windows to test, but also tried with simple shape components I made myself to be sure there was no line in the direct center. Every time it seems to be punching through to the bounds of the punch depth. No worries though, I typically offset my walls to the same thickness, so I can just math the punch depth with that and all is well. Overall, it's a great solution for an age old ruby puzzler.
-
Adam
I'm making a more robust version now and will post it later today.......
-
Hi! I have hard times trying to copy or simply select the punched components. Could you improve it?
P.S. A science fiction request: Could it punch on multiple feces or at least corner windows (2 faces)?
-
rv1974
You are making life more difficult for yourself than it needs to be...
You components are made exactly the depth of the wall ! This means that the reveals are obscured by the component itself...
Why not make them a simple 2D rectangle cutting-component that you place on the outer-face, and you then let the 'Hole Punching...' make the hole's reveals and the hole in the inner-face etc - that way the wall thickness could vary and the reveals will adjust to suit for the one 2D component - and is then more easily selected too.You CAN select the component-instances using the Outliner as needed...
Please read the tool's notes... you should NOT 'copy' component-instances that are 'punched' [unless you are going to 'unlink the punches' or 'undo the punching' immediately afterwards], because the observers and linking attributes etc will get 'tangled up'. So usually you should only copy un-punched component-instances - but remember that if they are punched you can always use: select them > 'undo punch' > do the copying > re-select them > 'punch' again...
I've only just got this single wall hole-punching working and now you want punched corner windows - aaaargh!
-
Here's v1.2 http://forums.sketchucation.com/viewtopic.php?p=271170#p271170
The finding the inner-face methods have been made more robust - now an inner-face will only be used if it is the correct orientation / side of the wall, AND it is within the specified maximum depth from the outer-face, AND its geometry overlaps at least the center of the component-instance, AND if there are several suitable 'candidate' faces then it is taken as the one 'nearest' to the outer-face.
Also an 'Unlink Punch' option has been added - this will 'unlink' a selected component-instance and its punched-hole geometry.
Please read the Notes...
-
Thanks TIG for the update! It works in every case I've tried now. Flawless thus far.
-
One foreseeable issue. I have a lot of modified components where a glue/cut component is nested inside a larger component.....i.e. a window with shutters and mantle. Is there a way to either search the component for a nested cutting component and make the cut with that, or allow me to perform the cut from within the components edit mode?
Thanks!
(Attached is a component I made for testing.)
Advertisement