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

      By the way , The file is a Ascii .DAT file

      Ragards
      KRistoffer

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

        And what unit is the data in?

        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

          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