sketchucation logo sketchucation
    • Login
    šŸ¤‘ SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

    How to copy a hole component inside to another component ?

    Scheduled Pinned Locked Moved Developers' Forum
    1 Posts 1 Posters 27 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • P Offline
      PRBO
      last edited by

      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
      
      

      RubyScriptHoleProblem.PNG](image url)

      1 Reply Last reply Reply Quote 0
      • 1 / 1
      • First post
        Last post
      Buy SketchPlus
      Buy SUbD
      Buy WrapR
      Buy eBook
      Buy Modelur
      Buy Vertex Tools
      Buy SketchCuisine
      Buy FormFonts

      Advertisement