sketchucation logo sketchucation
    • Login
    ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    Script to bring all components from library into SU model

    Scheduled Pinned Locked Moved Developers' Forum
    23 Posts 3 Posters 640 Views 3 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.
    • S Offline
      samyell77
      last edited by

      Hi,
      Wonder if anyone can help me to find or write a script that will allow me to bring all of the components from a component library into an SU file. Ideally I'd like to be able to place them next to each other in a line or on a grid (say 1000mm grid).
      Is this possible to do?
      Thanks
      Sam

      SU Pro 2016
      Dell Precision M4800
      PC Windows 10
      Intel Core i7-4900MQ @ 2.80ghz
      Nvidia Quadro K2100M
      16gb RAM

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

        It's doable.
        Set up some initial references etc
        ` skpfolderpath='C:/temp/my_compos'

        OR wherever the SKPs are...

        model=Sketchup.active_model
        ents=model.active_entities
        defs=model.definitions
        pt=Geom::Point3d.new(0,0,0)You iterate through the contents of that folder and every SKP is loaded in turn thus. skps=[]
        Dir.foreach(skpfolderpath){|f|skps << File.join(skpfolderpath, f) if File.extname(f).downcase==".skp"}then load from the list of SKPs... skps.each{|skp|
        defn=defs.load(skp)
        ###***
        } You have a reference [ defn] to the definition each time... so at ###*** add the code to place an instance after it's loaded thus [checking that 'defn' successfully loaded before trying to pace an instance at ###!]: next if not defn ###!
        tr=Geom::Transformation.new(pt)
        inst=defs.add_instance(defn, tr)and immediately afterwards relocate the point 'pt' thus: pt.x=pt.x+1.m`
        The next instance will then be put 1m to the right, because the transformation 'tr' will use the changed values for 'pt' each time etc etc...

        TIG

        1 Reply Last reply Reply Quote 0
        • S Offline
          samyell77
          last edited by

          Hi TIG,
          Thanks for looking at this - have been busy with other projects so haven't had time to take another look at this until now. Ive run through the first part of your script

          @unknownuser said:

          skpfolderpath='C:/temp/my_compos'

          OR wherever the SKPs are...

          model=Sketchup.active_model
          ents=model.active_entities
          defs=model.definitions
          pt=Geom::Point3d.new(0,0,0)

          and get this message from the console

          @unknownuser said:

          Running the code...Done. Feedback from Ruby: (0mm, 0mm, 0mm)

          Then I iterate through the contents of the folder which loads the components into the models component list.
          Then I pasted the next part of the script into the ruby console

          @unknownuser said:

          skps=[]
          Dir.foreach(skpfolderpath){|f|skps << File.join(skpfolderpath, f) if File.extname(f).downcase==.".skp"}

          and get this message

          @unknownuser said:

          Running the code...Done. Feedback from Ruby: Nil result (no result returned or run failed)

          Not quite sure what is supposed to happen at this point and wonder if you could clarify for me.

          Also on the next part of the script where you refer to definitions Im not sure what I need to put in in place of ###***
          Sorry if this is all totally obvious - ive re-read your post many times over and Im afraid I cant work out what to do next.

          Thanks

          SU Pro 2016
          Dell Precision M4800
          PC Windows 10
          Intel Core i7-4900MQ @ 2.80ghz
          Nvidia Quadro K2100M
          16gb RAM

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

            There was a typo in the code, it should be
            if File.extname(f).downcase==".skp"
            There was a rogue '.' πŸ˜’
            So 'skps' is empty !
            Try with the adjusted version [I edited the post!]
            πŸ˜•
            I assume you are using a MAC because a PC won't accept multiple lines in the Console...

            TIG

            1 Reply Last reply Reply Quote 0
            • S Offline
              samyell77
              last edited by

              Thanks TIG
              Copied and pasted from the edited post and now get this message from the console

              @unknownuser said:

              Running the code...Done. Feedback from Ruby: Run aborted (error has occurred)

              ❓
              Do I need to start over and re-load the components into the model?

              SU Pro 2016
              Dell Precision M4800
              PC Windows 10
              Intel Core i7-4900MQ @ 2.80ghz
              Nvidia Quadro K2100M
              16gb RAM

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

                ` skpfolderpath='C:/temp/my_compos'

                OR wherever the SKPs are...

                model=Sketchup.active_model
                ents=model.active_entities
                defs=model.definitions
                pt=Geom::Point3d.new(0,0,0)
                skps=[]
                Dir.foreach(skpfolderpath){|f|skps << File.join(skpfolderpath, f) if File.extname(f).downcase==".skp"}
                then load from the list of SKPs...
                skps.each{|skp|defn=defs.load(skp);###} This *should* load the defns from the folder. Does it ? If you want to place instances use the extra code on ' defn', inserted into the {} block at ' ###`'

                TIG

                1 Reply Last reply Reply Quote 0
                • S Offline
                  samyell77
                  last edited by

                  Thanks again TIG

                  @unknownuser said:

                  skpfolderpath='C:\Users\sam.morris\Documents\TEST COMPS'

                  OR wherever the SKPs are...

                  model=Sketchup.active_model
                  ents=model.active_entities
                  defs=model.definitions
                  pt=Geom::Point3d.new(0,0,0)
                  skps=[]
                  Dir.foreach(skpfolderpath){|f|skps << File.join(skpfolderpath, f) if File.extname(f).downcase==".skp"}
                  then load from the list of SKPs...
                  skps.each{|skp|defn=defs.load(skp);###}

                  Pasted all this in in one go and still get a Nil result - . Thought I'd try with a small, local component folder so copied some SKPs onto into a folder in my documents folder and pasted the path into your script. Have tried this with '/' and '' separators cos I remember there was an issue with that previously on another script you looked at for me.
                  I had been working through the script in sections previously but this time pasted it all in - is this correct or do I still need to iterate down (manually) through the components in the components library before running

                  @unknownuser said:

                  skps=[]
                  Dir.foreach(skpfolderpath){|f|skps << File.join(skpfolderpath, f) if File.extname(f).downcase==".skp"}
                  then load from the list of SKPs...
                  skps.each{|skp|defn=defs.load(skp);###}

                  Sorry to keep coming back . . . with a nil result 😳
                  Hope this makes sense

                  SU Pro 2016
                  Dell Precision M4800
                  PC Windows 10
                  Intel Core i7-4900MQ @ 2.80ghz
                  Nvidia Quadro K2100M
                  16gb RAM

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

                    Try a simple test first
                    skpfolderpath='C:/Users/sam.morris/Documents/TEST COMPS' Dir.foreach(skpfolderpath){|f|puts f}
                    Do you get a list of the folder's contents printed, include '.', '..' and all files ?
                    If so try this
                    skps=[];Dir.foreach(skpfolderpath){|f|skps << File.join(skpfolderpath, f) if File.extname(f).downcase==".skp"}
                    Do you get a list of just the SKP files when you then type skps?
                    If so we have got the list and just need to 'load' the SKPs...
                    πŸ˜•

                    TIG

                    1 Reply Last reply Reply Quote 0
                    • S Offline
                      samyell77
                      last edited by

                      Hi TIG,
                      Getting somewhere now - Im getting the list! Just to let you know Im using the plugin Ruby Console Editor to run your scripts and am now viewing the results in the (built in) Ruby Console - I hope this isn't causing any of the issues.
                      I ran the first part of your test and got the following

                      @unknownuser said:

                      .
                      ..
                      PLAT Carpet Amber FULL Diagonal A.skp
                      PLAT Carpet Amber FULL Diagonal B.skp
                      PLAT Carpet Amber FULL Diagonal C.skp
                      PLAT Carpet Amber FULL Diagonal D.skp
                      "Nil result (no result returned or run failed)"

                      Then I ran the second part and got

                      @unknownuser said:

                      .
                      ..
                      PLAT Carpet Amber FULL Diagonal A.skp
                      PLAT Carpet Amber FULL Diagonal B.skp
                      PLAT Carpet Amber FULL Diagonal C.skp
                      PLAT Carpet Amber FULL Diagonal D.skp
                      "Nil result (no result returned or run failed)"

                      When I type 'skps' i get this

                      @unknownuser said:

                      .
                      ..
                      PLAT Carpet Amber FULL Diagonal A.skp
                      PLAT Carpet Amber FULL Diagonal B.skp
                      PLAT Carpet Amber FULL Diagonal C.skp
                      PLAT Carpet Amber FULL Diagonal D.skp
                      "C:/Users/sam.morris/Documents/TEST COMPS/PLAT Carpet Amber FULL Diagonal A.skpC:/Users/sam.morris/Documents/TEST COMPS/PLAT Carpet Amber FULL Diagonal B.skpC:/Users/sam.morris/Documents/TEST COMPS/PLAT Carpet Amber FULL Diagonal C.skpC:/Users/sam.morris/Documents/TEST COMPS/PLAT Carpet Amber FULL Diagonal D.skp"

                      So Im getting somewhere - the (plugin) Ruby Console Editor wasn't showing me the list so didn't look like anything was happening.
                      I tried copying and pasting some of your code to load the skps but Im a serious Ruby novice so keep getting syntax error messages! Im guessing what I need to do next is run this piece of code

                      @unknownuser said:

                      skps.each{|skp|defn=defs.load(skp)

                      But couldn't work out whether in needs to be in any kind of container '{}' or '[]'?
                      Once I have loaded the skps, do I need to past the following into the console at ###

                      @unknownuser said:

                      tr=Geom::Transformation.new(pt)
                      inst=defs.add_instance(defn, tr)
                      pt.x=pt.x+1.m

                      Thanks again

                      SU Pro 2016
                      Dell Precision M4800
                      PC Windows 10
                      Intel Core i7-4900MQ @ 2.80ghz
                      Nvidia Quadro K2100M
                      16gb RAM

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

                        skps.each{ |skp|defn=defs.load(skp) ****}****
                        Loads the SKPs into the model.
                        The other part is only if you want to add an instance to the model's entities too...

                        TIG

                        1 Reply Last reply Reply Quote 0
                        • S Offline
                          samyell77
                          last edited by

                          Hi TIG,
                          Managed to have another look at this today - afraid Im falling at the last hurdle tho. Have run the code an managed to get them to load into the components browser but can't seem to get the components to place into the model. Once I have run this part of code;

                          skpfolderpath='C:\Users\sam.morris\Documents\TEST COMPS'
                          model=Sketchup.active_model
                          ents=model.active_entities
                          defs=model.definitions
                          pt=Geom::Point3d.new(0,0,0)
                          skps=[]
                          Dir.foreach(skpfolderpath){|f|skps << File.join(skpfolderpath, f) if File.extname(f).downcase==".skp"}
                          skps.each{|skp|defn=defs.load(skp);}

                          the components load into the component browser. Can I just check that nothing should be loading into the model window at this point. Not sure whether

                          pt=Geom::Point3d.new(0,0,0)

                          should actually put each newly loaded component into the model at 0,0,0?

                          I have tried pasting the next piece of code in so that it reads as follows;

                          skpfolderpath='C:\Users\sam.morris\Documents\TEST COMPS'
                          model=Sketchup.active_model
                          ents=model.active_entities
                          defs=model.definitions
                          pt=Geom::Point3d.new(0,0,0)
                          skps=[]
                          Dir.foreach(skpfolderpath){|f|skps << File.join(skpfolderpath, f) if File.extname(f).downcase==".skp"}
                          skps.each{|skp|defn=defs.load(skp);tr=Geom::Transformation.new
                          (pt)inst=defs.add_instance(defn, tr)pt.x=pt.x+1.m}

                          When I run this in the (plugin) Ruby Code Editor I get the following from the Ruby Console;

                          "Nil result (no result returned or run failed)"
                          Error: #<SyntaxError: (eval):9:in initialize': compile error (eval):9: syntax error, unexpected tIDENTIFIER, expecting '}' (pt)inst=defs.add_instance(defn, tr)pt.x=pt.x+1.m} ^ (eval):9: syntax error, unexpected tIDENTIFIER, expecting '}' (pt)inst=defs.add_instance(defn, tr)pt.x=pt.x+1.m} ^> C:/Program Files (x86)/Google/Google SketchUp 8/Plugins/as_plugins/as_rubyeditor/as_rubyeditor.rb:178:in initialize'
                          C:/Program Files (x86)/Google/Google SketchUp 8/Plugins/as_plugins/as_rubyeditor/as_rubyeditor.rb:199:in eval' C:/Program Files (x86)/Google/Google SketchUp 8/Plugins/as_plugins/as_rubyeditor/as_rubyeditor.rb:178:in initialize'
                          C:/Program Files (x86)/Google/Google SketchUp 8/Plugins/as_plugins/as_rubyeditor/as_rubyeditor.rb:199:in `call'
                          C:/Program Files (x86)/Google/Google SketchUp 8/Plugins/as_plugins/as_rubyeditor/as_rubyeditor.rb:199

                          😞

                          Ive tried moving '}' to various different points and have put various bits of code on new lines but still cant seem to find out why this isn't working. Really sorry to trouble you with this again but Im sooo close to getting this working - any chance you can help me get the last bit sorted? Ive attached a screen grab showing the components in the browser but not in the model and also to show how the code is formatted in the Ruby Code Editor. Just want to get the loaded components from the browser into the model starting at 0,0,0 and spaced at 1m increments along the x plane - and am tantalizingly close!

                          Thanks again for all your help ...

                          Sam


                          ScreenGrab.PNG

                          SU Pro 2016
                          Dell Precision M4800
                          PC Windows 10
                          Intel Core i7-4900MQ @ 2.80ghz
                          Nvidia Quadro K2100M
                          16gb RAM

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

                            Use a simple
                            skps.each{|skp|defs.load(skp)}
                            which loads the skps into the definitions-list.
                            If you want to place instances of the definitions into the model you need to decide where the go.
                            Piling them all at the origin seems a bit silly?
                            How will you decide where they go ?
                            Let's assume they are added in a line from the origin incrementing in the x by 1m...
                            pt = Geom::Point3d.new(0,0,0)
                            You've just added the definitions and we know how many were added (skps.length), therefore we can get the new ones thus:
                            newdefs = defs.to_a[(defs.length - skps.length)..-1]
                            Now we add the instances to the model.
                            newdefs.each{|defn| tr=Geom::Transformation.new(pt) model.entities.add_instance(defn, tr) pt.x=pt.x+1.m }
                            This shifts 'pt' to the right 1m each time...

                            TIG

                            1 Reply Last reply Reply Quote 0
                            • S Offline
                              samyell77
                              last edited by

                              Hi TIG
                              Im still getting a syntax error on this Im afraid. Below is everything that is listed in the console when i copy and paste the lines of code.

                              skpfolderpath='C:\Users\sam.morris\Documents\TEST COMPS'
                              C:\Users\sam.morris\Documents\TEST COMPS
                              model=Sketchup.active_model
                              #Sketchup::Model:0xcec7dfc
                              ents=model.active_entities
                              #Sketchup::Entities:0xecc7c58
                              defs=model.definitions
                              #Sketchup::DefinitionList:0xebaa640
                              skps=[]
                              []
                              Dir.foreach(skpfolderpath){|f|skps << File.join(skpfolderpath, f) if File.extname(f).downcase==".skp"}
                              nil
                              skps.each{|skp|defn=defs.load(skp)}
                              ["C:\Users\sam.morris\Documents\TEST COMPS/PLAT Carpet Amber FULL Diagonal A.skp", "C:\Users\sam.morris\Documents\TEST COMPS/PLAT Carpet Amber FULL Diagonal B.skp", "C:\Users\sam.morris\Documents\TEST COMPS/PLAT Carpet Amber FULL Diagonal C.skp", "C:\Users\sam.morris\Documents\TEST COMPS/PLAT Carpet Amber FULL Diagonal D.skp"]
                              pt = Geom::Point3d.new(0,0,0)
                              Point3d(0, 0, 0)
                              newdefs = defs.to_a[(defs.length - skps.length)..-1]
                              [#Sketchup::ComponentDefinition:0xed92f20, #Sketchup::ComponentDefinition:0xed92e1c, #Sketchup::ComponentDefinition:0xed92dcc, #Sketchup::ComponentDefinition:0xed8aab4]
                              newdefs.each{|defn|tr=Geom::transformation.new(pt)model.entities.add_instance(defn, tr)pt.x=pt.x+1.m}
                              %(#FF0000)[Error: #<SyntaxError: (eval):178: compile error
                              (eval):178: syntax error, unexpected tIDENTIFIER, expecting '}'
                              ...m::transformation.new(pt)model.entities.add_instance(defn, t...
                              ^
                              (eval):178: syntax error, unexpected tIDENTIFIER, expecting '}'
                              ...ities.add_instance(defn, tr)pt.x=pt.x+1.m}
                              ^>
                              (eval):178]

                              Ive copied and pasted every line of code in one by one in the ruby console but keep getting a syntax error when i put this line in

                              newdefs.each{|defn|tr=Geom::transformation.new(pt)model.entities.add_instance(defn, tr)pt.x=pt.x+1.m}

                              All the definitions are have been added, just cant seem to get any instances into the model?
                              Can you shed any light for me - sorry this keeps coming back to you.
                              Thanks
                              Sam

                              SU Pro 2016
                              Dell Precision M4800
                              PC Windows 10
                              Intel Core i7-4900MQ @ 2.80ghz
                              Nvidia Quadro K2100M
                              16gb RAM

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

                                You can't have multi-line blocks in the Ruby Console [expect perhaps on a MAC?].
                                Making it as one line you need ' ;' where the newline would be... so

                                newdefs.each{|defn|tr=Geom;;transformation.new(pt)model.entities.add_instance(defn, tr)pt.x=pt.x+1.m}
                                

                                should become

                                newdefs.each{|defn|tr=Geom;;transformation.new(pt);model.entities.add_instance(defn, tr);pt.x=pt.x+1.m}
                                

                                NOTE this is all in one line but the code-pane 'wraps' it...
                                Then it should work...

                                TIG

                                1 Reply Last reply Reply Quote 0
                                • S Offline
                                  samyell77
                                  last edited by

                                  Hi TIG,

                                  Still no dice Im afraid!

                                  %(#FF0000)[skpfolderpath='C:\Users\sam.morris\Documents\TEST COMPS'
                                  C:\Users\sam.morris\Documents\TEST COMPS
                                  model=Sketchup.active_model
                                  #Sketchup::Model:0xca07ab0
                                  ents=model.active_entities
                                  #Sketchup::Entities:0xe967bbc
                                  defs=model.definitions
                                  #Sketchup::DefinitionList:0xe84a5a4
                                  skps=[]
                                  []
                                  Dir.foreach(skpfolderpath){|f|skps << File.join(skpfolderpath, f) if File.extname(f).downcase==".skp"}
                                  nil
                                  skps.each{|skp|defn=defs.load(skp)}
                                  ["C:\Users\sam.morris\Documents\TEST COMPS/PLAT Carpet Amber FULL Diagonal A.skp", "C:\Users\sam.morris\Documents\TEST COMPS/PLAT Carpet Amber FULL Diagonal B.skp", "C:\Users\sam.morris\Documents\TEST COMPS/PLAT Carpet Amber FULL Diagonal C.skp", "C:\Users\sam.morris\Documents\TEST COMPS/PLAT Carpet Amber FULL Diagonal D.skp"]
                                  pt = Geom::Point3d.new(0,0,0)
                                  Point3d(0, 0, 0)
                                  newdefs = defs.to_a[(defs.length - skps.length)..-1]
                                  [#Sketchup::ComponentDefinition:0xe6e0704, #Sketchup::ComponentDefinition:0xe6e0614, #Sketchup::ComponentDefinition:0xe6e05d8, #Sketchup::ComponentDefinition:0xe6d9634]
                                  newdefs.each{|defn|tr=Geom::transformation.new(pt);model.entities.add_instance(defn, tr)pt.x=pt.x+1.m}
                                  Error: #<SyntaxError: (eval):178: compile error
                                  (eval):178: syntax error, unexpected tIDENTIFIER, expecting '}'
                                  ...ities.add_instance(defn, tr)pt.x=pt.x+1.m}
                                  ^>
                                  (eval):178]

                                  Am I missing a step - am working on PC and am pasting each line into ruby console one at a time... but still get this unexpected tIDENTIFIER error? Im afraid I can't troubleshoot this at all with my very limited ruby knowledge. Any ideas?

                                  SU Pro 2016
                                  Dell Precision M4800
                                  PC Windows 10
                                  Intel Core i7-4900MQ @ 2.80ghz
                                  Nvidia Quadro K2100M
                                  16gb RAM

                                  1 Reply Last reply Reply Quote 0
                                  • S Offline
                                    samyell77
                                    last edited by

                                    [hr]just spotted that I was missing the ';' in this line just before 'pt.x' but have added it in, re-run and am now getting a different error (have highlighted the code in red this time and the result from the ruby console in blue...)

                                    skpfolderpath='C:\Users\sam.morris\Documents\TEST COMPS';model=Sketchup.active_model;ents=model.active_entities;defs=model.definitions;skps=[;Dir.foreach(skpfolderpath){|f|skps << File.join(skpfolderpath, f) if File.extname(f).downcase==".skp"};skps.each{|skp|defn=defs.load(skp)}]
                                    ["C:\Users\sam.morris\Documents\TEST COMPS/PLAT Carpet Amber FULL Diagonal A.skp", "C:\Users\sam.morris\Documents\TEST COMPS/PLAT Carpet Amber FULL Diagonal B.skp", "C:\Users\sam.morris\Documents\TEST COMPS/PLAT Carpet Amber FULL Diagonal C.skp", "C:\Users\sam.morris\Documents\TEST COMPS/PLAT Carpet Amber FULL Diagonal D.skp"]

                                    pt = Geom::Point3d.new(0,0,0)
                                    Point3d(0, 0, 0)

                                    newdefs = defs.to_a[(defs.length - skps.length)..-1]
                                    [#Sketchup::ComponentDefinition:0xeb0e344, #Sketchup::ComponentDefinition:0xeb0e254, #Sketchup::ComponentDefinition:0xeb0e218, #Sketchup::ComponentDefinition:0xeb06270]

                                    newdefs.each{|defn|tr=Geom::transformation.new(pt);model.entities.add_instance(defn, tr);pt.x=pt.x+1.m}
                                    %(#0000BF)[Error: #<NoMethodError: undefined method transformation' for Geom:Module> (eval):181 (eval):181:in each'
                                    (eval):181]

                                    SU Pro 2016
                                    Dell Precision M4800
                                    PC Windows 10
                                    Intel Core i7-4900MQ @ 2.80ghz
                                    Nvidia Quadro K2100M
                                    16gb RAM

                                    1 Reply Last reply Reply Quote 0
                                    • S Offline
                                      samyell77
                                      last edited by

                                      Also added ';' to all the lines of code to make complete blocks so I could paste a whole block in in one go rather than line by line - hope this is ok...

                                      SU Pro 2016
                                      Dell Precision M4800
                                      PC Windows 10
                                      Intel Core i7-4900MQ @ 2.80ghz
                                      Nvidia Quadro K2100M
                                      16gb RAM

                                      1 Reply Last reply Reply Quote 0
                                      • Dan RathbunD Offline
                                        Dan Rathbun
                                        last edited by

                                        Another cap error on the same line:

                                        newdefs.each{|defn|tr=Geom;;transformation.new(pt);model.entities.add_instance(defn, tr);pt.x=pt.x+1.m}
                                        

                                        should be:

                                        newdefs.each{|defn|tr=Geom;;Transformation.new(pt);model.entities.add_instance(defn, tr);pt.x=pt.x+1.m}
                                        

                                        class (and module,) identifiers are actually constants so start with a capital character.

                                        I'm not here much anymore.

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

                                          Thanks Dan, I missed the [tT]ransformation typo in his code I copy/pasted..... πŸ˜’
                                          The error messages are pretty good at telling you what is wrong πŸ˜‰

                                          TIG

                                          1 Reply Last reply Reply Quote 0
                                          • S Offline
                                            samyell77
                                            last edited by

                                            TIG, Dan,
                                            Yee haaa! It works! Thank you both so much - TIG, thanks for being patient with a ruby luddite and Dan, thanks for finding the final missing piece of the puzzle. You have both been a huge help.

                                            SU Pro 2016
                                            Dell Precision M4800
                                            PC Windows 10
                                            Intel Core i7-4900MQ @ 2.80ghz
                                            Nvidia Quadro K2100M
                                            16gb RAM

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

                                            Advertisement