sketchucation logo sketchucation
    • Login
    Oops, your profile's looking a bit empty! To help us tailor your experience, please fill in key details like your SketchUp version, skill level, operating system, and more. Update and save your info on your profile page today!
    đź«› Lightbeans Update | Metallic and Roughness auto-applied in SketchUp 2025+ Download

    [Plugin] ReGlue

    Scheduled Pinned Locked Moved Plugins
    35 Posts 11 Posters 12.2k Views 11 Watching
    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.
    • R Offline
      rv1974
      last edited by

      Does this API the Great and Powerful, allows to select all the components glued to a preselected face? If yes, maybe the script could take one face, select all the glued and reglue; then go to another face, repeat reglueing, and so on?

      1 Reply Last reply Reply Quote 0
      • PixeroP Offline
        Pixero
        last edited by

        Maybe Fredotools Move along could be helpful?

        1 Reply Last reply Reply Quote 0
        • TIGT Offline
          TIG Moderator
          last edited by

          @rv1974 said:

          Does this API the Great and Powerful, allows to select all the components glued to a preselected face? If yes, maybe the script could take one face, select all the glued and reglue; then go to another face, repeat reglueing, and so on?
          ToomyK's version a few posts back does that.
          Just replace the text in the RB file with his alternative and save it.
          Use a plain-text editor like Notepad++ to do the editing.

          TIG

          1 Reply Last reply Reply Quote 0
          • TIGT Offline
            TIG Moderator
            last edited by

            How is the code to determine which of the selected components gets glued to which selected face ?
            Please outline the 'logic'...

            TIG

            1 Reply Last reply Reply Quote 0
            • R Offline
              rv1974
              last edited by

              @tig said:

              @rv1974 said:

              Does this API the Great and Powerful, allows to select all the components glued to a preselected face? If yes, maybe the script could take one face, select all the glued and reglue; then go to another face, repeat reglueing, and so on?
              ToomyK's version a few posts back does that.
              Just replace the text in the RB file with his alternative and save it.
              Use a plain-text editor like Notepad++ to do the editing.

              No, TommyK's code works only with one face.
              @Pixero, the connection between MoveAlong and reglueing slips away from me.

              1 Reply Last reply Reply Quote 0
              • R Offline
                rv1974
                last edited by

                @tig said:

                How is the code to determine which of the selected components gets glued to which selected face ?
                Please outline the 'logic'...

                Thats what I tried to ask you earlier- Whether API allows to detect the components glued to a preselected face. IF the answer is YES, then MAYBE the script could(?) progressevly take face by face and reglue corresponding components.

                1 Reply Last reply Reply Quote 0
                • hdpvH Offline
                  hdpv
                  last edited by

                  @rv1974
                  I did this but it’s small script. Select face and components for reglue.

                  Suforyou
                  http://www.sketchupforyou.com

                  1 Reply Last reply Reply Quote 0
                  • R Offline
                    rv1974
                    last edited by

                    @hdpv said:

                    @rv1974
                    I did this but it’s small script. Select face and components for reglue.

                    and components? or face only?

                    1 Reply Last reply Reply Quote 0
                    • TIGT Offline
                      TIG Moderator
                      last edited by

                      There is a method:
                      glued = face.get_glued_instances
                      And it'd be easy to grep then iterate all of the faces and their glued components etc...
                      BUT there's no API ' .could_be_glued_instances' method...

                      BUT here's some possible [pretty much untested] code which might just do it...

                      
                      ctr=0
                      model=Sketchup.active_model
                      faces=model.active_entities.grep(Sketchup;;Face)
                      comps=model.active_entities.grep(Sketchup;;ComponentInstance).find_all{|e|
                        e.definition.behavior.is2d? && ! e.glued_to
                      }
                      ### collect if comp can glue, but not glued !
                      cct=comps.length
                      faces.each{|f|
                        plane=f.plane
                        norm =f.normal
                        comps.dup.each{|e|
                          pt=e.transformation.origin
                          nm=e.transformation.zaxis
                          if pt.distance_to_plane(plane)==0 && norm==nm
                            ### glue-able
                            cp=f.classify_point(pt)
                            if cp==Sketchup;;Face;;PointInside || cp==Sketchup;;Face;;PointOnEdge || cp==Sketchup;;Face;;PointOnVertex
                              ### on face so can glue
                              e.glued_to=f
                              comps.delete(e)
                              ctr+=1
                              ### reduce tested comps collection for speed
                            end
                          end
                        }
                      }
                      puts "\n\nReglued #{ctr} of #{cct}" ### print how many reglued
                      
                      

                      TIG

                      1 Reply Last reply Reply Quote 0
                      • R Offline
                        rv1974
                        last edited by rv1974

                        @TIG This plugin reglues multiple components in SU 2022. In v2023 and newer it reglues only one component.
                        What is the reason for this degradation? Thanks
                        Screenshot 2024-05-08 112951.png

                        TIGT 1 Reply Last reply Reply Quote 0
                        • TIGT Offline
                          TIG Moderator @rv1974
                          last edited by

                          @rv1974

                          This plugin is over a decade old !
                          As far as I recall, and tell from the code and version, it has always needed a selection of one face and one component to work. for 19 years.
                          Although I do see from my posts do speaks of one or more components being processed...

                          As far as I can see this old code is very simplistic... e.g.

                          It does not check for gluing properties, or face-normal, or Z-axis, or position on the face.plane, or transformation.origin point on the face at all.

                          If it checked for several components being on the face and sharing the face.normal as their Z-axis etc, then it would be possible the get it to process several gluing components. However, this would require a complete rewrite...

                          I'll back check...

                          TIG

                          1 Reply Last reply Reply Quote 0
                          • TIGT Offline
                            TIG Moderator
                            last edited by TIG

                            Here's v2.0 in the PluginStore...
                            https://sketchucation.com/pluginstore?pln=Re_Glue
                            It now allows multiple pre selected component-instances, but still only one preselected face.
                            These are glued to the face [is possible], any errors or unsuitable instances are reported in the Ruby Console...

                            TIG

                            R 1 Reply Last reply Reply Quote 1
                            • R Offline
                              rv1974 @TIG
                              last edited by

                              @TIG Many thanks!

                              designerbursaD 1 Reply Last reply Reply Quote 0
                              • designerbursaD Offline
                                designerbursa @rv1974
                                last edited by Rich O Brien

                                @rv1974

                                def self.glue_components_to_faces
                                  model = Sketchup.active_model
                                  selection = model.selection
                                
                                  return UI.messagebox("Error: No selection!") if selection.empty?
                                
                                  faces = selection.grep(Sketchup::Face)
                                  components = selection.grep(Sketchup::ComponentInstance)
                                
                                  return UI.messagebox("Error: Select faces and components!") if faces.empty? || components.empty?
                                  
                                  model.start_operation("Glue Components to Faces", true)
                                
                                  begin
                                    components.each do |component|
                                      closest_face = find_closest_aligned_face(component, faces)
                                      component.glued_to = closest_face if closest_face
                                    end
                                  ensure
                                    model.commit_operation
                                  end
                                end
                                
                                def self.find_closest_aligned_face(component, faces)
                                
                                  component_normal = component.transformation.zaxis
                                  closest_face = faces.min_by { |face| face.normal.angle_between(component_normal) }
                                  closest_face
                                
                                end
                                
                                R 1 Reply Last reply Reply Quote 0
                                • R Offline
                                  rv1974 @designerbursa
                                  last edited by

                                  @designerbursa what do you mean?

                                  designerbursaD 1 Reply Last reply Reply Quote 0
                                  • designerbursaD Offline
                                    designerbursa @rv1974
                                    last edited by

                                    @rv1974 I developed the code for pasting on all selected surfaces at once, it would be useful for everyone if it is updated in this way.

                                    R 1 Reply Last reply Reply Quote 0
                                    • R Offline
                                      rv1974 @designerbursa
                                      last edited by

                                      @designerbursa
                                      I might be missing something but currently I can do it without any plugin

                                      designerbursaD 1 Reply Last reply Reply Quote 0
                                      • designerbursaD Offline
                                        designerbursa @rv1974
                                        last edited by designerbursa

                                        @rv1974 If you can paste without extensions, I really congratulate you...

                                        R 1 Reply Last reply Reply Quote 0
                                        • R Offline
                                          rv1974 @designerbursa
                                          last edited by

                                          @designerbursa
                                          ?
                                          85dfe1a8-ee4c-4834-b2ed-f896caf03ad8-SketchUp_ozyex36IzG.gif

                                          designerbursaD 1 Reply Last reply Reply Quote 0
                                          • designerbursaD Offline
                                            designerbursa @rv1974
                                            last edited by

                                            @rv1974 I am using Sketchup 2021 version
                                            Kayıt 2024-06-10 000123.gif

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

                                            Advertisement