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!
    πŸ›£οΈ Road Profile Builder | Generate roads, curbs and pavements easily Download

    Need help : Code to reload mutiple component

    Scheduled Pinned Locked Moved SketchUp Discussions
    5 Posts 2 Posters 31 Views 2 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.
    • Q Offline
      QUOCANH ELNINO
      last edited by

      Hello, can anyone help me resolve this isssue :

      • I have many simple component in with name : com1, com2, com3...in a file original.
      • I have save all component to file com1.skp, com2.skp, com3.skp... in folder A
      • Then i edit file component com1.skp, com2.skp, com3.skp....in folder A, Now i want to reload all component from folder A (have edited) to file original.
      • It's same action with reload component in sketchup but with mutiple block in one time.
        Thanks for any help guy!
      1 Reply Last reply Reply Quote 0
      • TIGT Offline
        TIG Moderator
        last edited by

        Look at this...
        https://sketchucation.com/forums/viewtopic.php?p=331966#p331966

        TIG

        1 Reply Last reply Reply Quote 0
        • Q Offline
          QUOCANH ELNINO
          last edited by

          @tig said:

          Look at this...
          https://sketchucation.com/forums/viewtopic.php?p=331966#p331966

          @tig said:

          Look at this...
          https://sketchucation.com/forums/viewtopic.php?p=331966#p331966

          Thanks TIG, But when I import all component in folder A to file, all new component imported turn to Com1#1, Com 2#,...And old component in file not change πŸ˜•

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

            So what you need is to load Com1, then if Com1 exists take Com1#1 and add an instance of it into the model using Com1 instance's transformation. Then remove the original Com1 definition, then rename Com1#1 as Com1...

            This is doable but somewhat convoluted !

            I'll look at a snippet...

            TIG

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

              Try this...

              module TIG
                module DefinitionReplacer
                  def self.run()
                    model=Sketchup.active_model
                    defns=model.definitions
                    model.start_operation("DefinitionReplacer", true)
                    counter=0
                    defns.to_a.each{|defn|
                      name=defn.name
                      next if name=~/[#]/
                      defns.to_a.each{|d|
                        n=d.name
                        next unless n=~/[#]/
                        next unless d.instances[0]
                        next unless n.split("#")[0]==name
                        defn.name=name+rand.to_s
                        d.name=name
                        ins=d.instances
                        defn.instances.each{|i|
                          i.definition=d
                        }
                        ins.each{|i|
                          i.erase!
                        }
                        counter+=1
                      }
                      defns.remove(defn)
                    }
                    model.commit_operation
                    puts "Processed #{counter} definitions"
                  end#def
                end #module
              end #module
              TIG;;DefinitionReplacer.run()
              #to use, it assumes you have a number of component definitions [Com1, Com2, etc],
              #and you have already imported a similar set of edited ones into the model [Com1#1, Com2#1 etc].
              #to run it, paste all of this into the Ruby Console, it should auto-run.
              #all instances of the original Com1 become Com1#1, renamed as Com1, 
              #any instances of the previous Com1#1 are erased and its definition removed.
              #it's one step undo-able
              

              TIG

              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