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

    Text , X , Y , Z import

    Scheduled Pinned Locked Moved Plugins
    23 Posts 4 Posters 1.3k Views 4 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.
    • K Offline
      khallgren
      last edited by

      The unit is in millimeters.

      Regards Kristoffer

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

        Try this... copy/paste code into a file called cptstxt.rb in Plugins.

        =begin
        To run type 'cptstxt' into the Ruby Console...
        =end
        require 'sketchup.rb'
        def cptstxt()
          model=Sketchup.active_model
          ents=model.active_entities
          layers=model.layers
          lay=layers.add("CPTS")
          vec=[1,1,1]## change this to alter text-location/leader-length
          file=UI.openpanel("Select the DAT File...","*.dat")
          return nil if not file
          model.start_operation("cpointstxt")
          text=IO.readlines(file)
          0.upto(text.length-1) do |i|
            line=text[i]
            line.strip! if line
        	line.chomp! if line
            data=line.split(",")
            next if not data[3]
            txt=data[0]
            x=data[1].to_f.mm
            y=data[2].to_f.mm
            z=data[3].to_f.mm
            pt=[x,y,z]
            cp=ents.add_cpoint(pt)
            cp.layer=lay
            tx=ents.add_text(txt,pt,vec)
            tx.layer=lay
          end#do
          model.commit_operation
        end
        ###
        

        TIG

        1 Reply Last reply Reply Quote 0
        • K Offline
          khallgren
          last edited by

          Hi
          I cant get it to work properly , I only get this error message from the ruby console, And I get some errors when starting up SketchUp

          cptstxt
          Error: #<NameError: (eval):894: undefined local variable or method `cptstxt' for main:Object>
          (eval):894

          Your script says " require 'sketchup.rb' "
          Does that mean that I have to copy/paste the file from the "tools" folder and into the "plugin" folder?

          Regards
          Kristoffer

          1 Reply Last reply Reply Quote 0
          • K Offline
            khallgren
            last edited by

            Hi , I managed to fix it
            It was just missing the "#" on the 3 first lines

            The plugin works perfect 😄 Thank you so mutch for your help .

            Best regards'
            Kristoffer

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

              You need to 'select all' and copy/paste it - you must have missed something off ?
              The =begin...=end is the same as putting # at the start of each line - these are 'comments', not read by the Ruby interpreter. As there's only one line of 'comments' I could have omitted the =begin and =end lines completely and put a # at the start of the line of instructions - it'd been simpler! I just made the script from my own template that already has that format in it as multiple lines of comments/notes are often needed...
              Do not move sketchup.rb from the Tools folder. It loads automatically from there.
              It is good practice to add the line require 'sketchup.rb' at the start - most scripts need Sketchup's functions to run and will report an error if they load before it does; the ' require' waits for the specified file to load first... It's an instruction to the Ruby interpreter, not you !
              Glad it's working - did you notice that you can adjust the location of the text and leader length by playing with the vec=[1,1,1] numbers ?
              🤓

              TIG

              1 Reply Last reply Reply Quote 0
              • K Offline
                khallgren
                last edited by

                Hi , Thanks for the Text and Leader tip

                If I want to import Y, X ,Z rather than X,Y,Z

                Can I just switch around the
                x=data[1].to_f.mm
                y=data[2].to_f.mm
                z=data[3].to_f.mm
                pt=[x,y,z]

                To
                y=data[1].to_f.mm
                x=data[2].to_f.mm
                z=data[3].to_f.mm
                pt=[y,x,z]

                Best Regards
                Kristoffer

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

                  Yes.
                  The data[] order is the order typed in each line in the .dat file.
                  The original code assumed the first was the 'text', then x, y and z values, as in the .dat file supplied.
                  You can have the .dat file's entries in any order as long as the code's data[] values are adjusted accordingly - for example if the format were x,y,z,text then the values would all change around to suit with txt=data[3], and then x=data[0], y=data[1] and z=data[2]...
                  The code I gave you was only a basis for .dat file reading - it's very flexible...

                  PS: DON'T swap the point's values around use pt[x,y,z] always, no matter what the order they were read from the file ! 😒

                  TIG

                  1 Reply Last reply Reply Quote 0
                  • K Offline
                    khallgren
                    last edited by

                    Hi again
                    When I try to import a file Negative Co-ordinates I cet an error
                    Is this an easy fix ?

                    See the example file

                    Best Regards
                    Kristoffer


                    Example_negative.txt

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

                      What's the error ? Please post examples...
                      The code x.to_f.mm should take the text 'string' of 'x' and make it into a 'number' [+/-] and then tell SUp it's in 'mm', not the default 'inches'?

                      TIG

                      1 Reply Last reply Reply Quote 0
                      • thomthomT Offline
                        thomthom
                        last edited by

                        @khallgren said:

                        When I try to import a file Negative Co-ordinates I cet an error

                        Exactly what does the error say?

                        Thomas Thomassen — SketchUp Monkey & Coding addict
                        List of my plugins and link to the CookieWare fund

                        1 Reply Last reply Reply Quote 0
                        • K Offline
                          khallgren
                          last edited by

                          Hi , I tried to make my own file for testing and the negative co-ordinates workes fine, so the problem is not the negative co-ordinates. But when I export a file from my calculation program and try it import it I get an error, but the files sceems identical to me?

                          Here is the error i get

                          and the file is attached below

                          Error: #<Errno::ENOENT: C:/Programfiler/Google/Google SketchUp 7/Plugins/cptstxt.rb:14:in `readlines': No such file or directory - C:\Documents and Settings\krh\Skrivebord\BeregnetHøyderfile8.txt>
                          C:/Programfiler/Google/Google SketchUp 7/Plugins/cptstxt.rb:14

                          Best Regards
                          KRistoffer


                          BeregnetHøyderfile8.txt

                          1 Reply Last reply Reply Quote 0
                          • K Offline
                            khallgren
                            last edited by

                            I think I know what the problem is . Its the dicimales.... Its fine importing a file that says:

                            example: text,200.0,200.0,200.0

                            But when the file has a desimale value thats larger than 0 i get an error

                            example: text,200.5,200.5,200.5

                            Best regards
                            Kristoffer

                            1 Reply Last reply Reply Quote 0
                            • thomthomT Offline
                              thomthom
                              last edited by

                              Ah!
                              I know why that is - because you are Norwegian! Sketchup's ruby doesn't read files that has characters which isn't ASCII (A-Z). So our beloved æøå makes SU's file functions go belly up.

                              I struggled for ages with this some time ago. Found no good solution for that. You can work around be renaming your file.

                              Hilsen fra Bartehovedstaden! 😉

                              Thomas Thomassen — SketchUp Monkey & Coding addict
                              List of my plugins and link to the CookieWare fund

                              1 Reply Last reply Reply Quote 0
                              • thomthomT Offline
                                thomthom
                                last edited by

                                @khallgren said:

                                I think I know what the problem is . Its the dicimales.... Its fine importing a file that says:

                                example: text,200.0,200.0,200.0

                                But when the file has a desimale value thats larger than 0 i get an error

                                example: text,200.5,200.5,200.5

                                Best regards
                                Kristoffer

                                ?? With the same file you tried earlier? Or did you create a new test file with just ASCII chars in the file name & path?

                                Thomas Thomassen — SketchUp Monkey & Coding addict
                                List of my plugins and link to the CookieWare fund

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

                                  As Thomthom said -
                                  It's an 'unrelated' error to the code itself... you have 'special characters' in the filepath - this always causes Ruby / Sketchup problems [it can be trapped form but it's a bit complex for this simple example code!].
                                  So please do it without the 'ø' etc in filename 'BeregnetHøyderfile8.txt' >>> 'BeregnetHoyderfile8.txt' ? it should then work !
                                  😒

                                  TIG

                                  1 Reply Last reply Reply Quote 0
                                  • Didier BurD Offline
                                    Didier Bur
                                    last edited by

                                    Hi,
                                    @Khallgren: I'm just about to modify my points cloud script to achieve what you want. Stay tuned....

                                    DB

                                    1 Reply Last reply Reply Quote 0
                                    • K Offline
                                      khallgren
                                      last edited by

                                      Hi , Oppps I missed that issue 😄
                                      Diddler Bur: It would be great if your point cloud importer had a "text" option
                                      Thanks for all your help 😄

                                      Berst regards "fra regn byen"
                                      Kristoffer

                                      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