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.
    • 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