How to copy a hole component inside to another component ?
-
I would like to know how to copy a hole-type component (for carpentry work) into an MDF-type component. The basic idea is: I have a hole-type component that, when applied to a surface, makes the cutout correctly. I copy it from the environment and paste it into the MDF component. However, when I do this, it does not cut via script. I have to go inside the MDF component and move the hole so that it makes the cutout. I would like to know if my scripting approach is wrong, if there is another easier way. I would like your help.
# Default code, use or delete... mod = Sketchup.active_model # Open model ent = mod.entities # All entities in model sel = mod.selection # Current selection def find_subentity_by_name(parent_instance, subentity_name) #p parent_instance.definition.name if parent_instance.is_a?(Sketchup::ComponentInstance) p "é uma instância" parent_instance.definition.entities.each do |entity| if entity.is_a?(Sketchup::ComponentInstance) if entity.definition.name == subentity_name return entity end subentity = find_subentity_by_name(entity, subentity_name) return subentity if subentity # Retorna se encontrado. end end end return nil end def copy_component_into(component_instance, target_instance, transformation_array) component_definition = component_instance.definition target_entities = target_instance.definition.entities transformation = Geom::Transformation.new(transformation_array) new_instance = target_entities.add_instance(component_definition, transformation) puts "Component copied successfully into target component." return new_instance end def mm_p(medida) return medida / 25.4 end def findInstanceByName(selecao, nome) selecao.each do |entity| #p entity.definition.name if (entity.definition.name == nome) return entity end end end p sel.to_a destino = findInstanceByName(sel, "p_r_horizontal") p "destino " + destino.definition.name origem = findInstanceByName(sel, "quadradao_v2") p "origem " + origem.definition.name p_r = find_subentity_by_name(destino, "p_r") mdf_r = find_subentity_by_name(p_r, "mdf_r") component_instance = origem target_instance = mdf_r if component_instance.is_a?(Sketchup::ComponentInstance) && target_instance.is_a?(Sketchup::ComponentInstance) transformation_array = [ 1, 0, 0, 50, # Primeira linha (sem rotação, translação em X) 0, 1, 0, -50, # Segunda linha (sem rotação, translação em Y) 0, 0, 1, 0, # Terceira linha (sem rotação, sem translação em Z) 0, 0, 0, 1 # Linha de identidade (para compatibilidade) ] #This transformation its not working newInstance = copy_component_into(component_instance, target_instance, transformation_array) sleep(2) ents = Sketchup.active_model.entities tr = Geom::Transformation.translation [50, -40, 15.mm] ents.transform_entities tr, newInstance newInstance.transform! () else puts "Ensure both selected entities are component instances." end
](image url)
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