Window components
-
Hello,
I'm working on a script to get information about the windows a user placed in his Sketchup model.
To do so, I'v made some window models and placed them into the 'Components' folder.
With a Ruby script, I attach the information about the windows by using attributes. Now, I also want my windows to cut a hole in the wall they are placed into, but this doesn't really work.
I've tried to change the behavior of the componentdefinition of my windows with this code:componentdef = Sketchup.active_model.definitions.load path componentdef.behavior.snapto = SnapTo_Vertical componentdef.behavior.cuts_opening = trueBut when a user now places an instance of the window component in his model, nothing happens, the wall stays intact and no hole is cut out. I think the component isn't really glued to the face because when i ask all the faces in the model whether they have a component glued to with get_glued_instances, nil is returned.
Is my approach to simplistic? Or does anyone know what I am doing wrong?
Thanks a lot for any help -
Behavior.is2d=
http://code.google.com/intl/nb/apis/sketchup/docs/ourdoc/behavior.html#is2d=@unknownuser said:
The is2d= method is used to set the 2D behavior for a component: whether it can be glued or aligned to a face.
-
Hey,
Thanks a lot for your help last time, I've changed my script a bit, but unfortunally, it still doesn't work.
The component doesn't cut a hole in the face it is placed into and it is not placed on the right layer.
I really can't see what is wrong. I am sending you the entire method I wrote to load the window components placed in the components folder into the SU model.def laad_componenten # Define correct path for the csv information file windowcomponents = File.join($components,"Ramen","*.csv") files = Dir.glob(windowcomponents) # String loaded components @loaded_comp = " " # Look for the windows files.each { |file| f = File.open(file,"r") f.each {|line| line.to_s @data = line.split(';').each { |string| string.strip} } name = @data[0].to_s # Define the path of the SU window path = File.join($components,"Ramen", name+".skp") # Load the component into the current model componentdef = Sketchup.active_model.definitions.load path # Attatch csv information to component using attributes componentdef.set_attribute "info", "naam", naam.to_s componentdef.set_attribute "info", "diktes", @data[1] componentdef.set_attribute "info", "U-waarde", @data[2] componentdef.set_attribute "info", "g-waarde", @data[3] componentdef.set_attribute "info", "kostprijs", @data[4] componentdef.visible = true componentdef.behavior.is2d = true componentdef.behavior.cuts_opening = true # Put component on the right layer windowlayer = $model.layers.at("Ramen") componentdef.layer = windowlayer # Name of loade component in string @loaded_comp = @loaded_comp+naam+" ;" f.close } end @loaded_comp.chop! UI.messagebox "All windows components loaded;"+@loaded_comp endHopefully you can help me
thanks -
Did you make the component so it is 'flat' in 3D so that its "up" axis is Y/green ?
OR at least when you 'made' it set its axes thus...
Then it will cut a hole at its Z=0 plane on any face it is glued_to/cuts/is_2d ... -
yes, it works!
I made my windows in the SU components folder in the upright position,
should have done it in the horizontal plane...
thanks a lot tig!!!
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better π
Register LoginAdvertisement