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

    Loading csv giving error

    Scheduled Pinned Locked Moved Developers' Forum
    6 Posts 2 Posters 338 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.
    • nithi09N Offline
      nithi09
      last edited by

      hi guys I am trying to compare some data so I create one file name called "Price_lookup" in notepad then saved in plugin folder "Price_lookup.csv".
      Price_lookup.csv contain like below

      "PARTNO", "PRICE"
      600157,402.20
      600163,424.16
      600169,445.00
      600175,468.96
      600181,492.01
      600187,516.69

      then I wrote small ruby script for testing. when I start the sketchup It's gives an error as follows "Error Loading File CSV_Test.rb no such file to load -- csv". any idea what I am doing wrong here???? thank you

      here is my code.

      <span class="syntaxdefault"> <br />require </span><span class="syntaxstring">'sketchup.rb'<br /></span><span class="syntaxdefault">require </span><span class="syntaxstring">'csv'<br /><br /></span><span class="syntaxdefault">def csv_Test<br /> <br />        model </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model<br />        ent </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_entities<br />        <br />        csv_text </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">read</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'Price_lookup.csv'</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">        csv </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> CSV</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">parse</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">csv_text</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">;</span><span class="syntaxdefault">headers </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> true</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">        csv</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each do </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">row</span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault">        result </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> csv</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">find </span><span class="syntaxkeyword">{|</span><span class="syntaxdefault">row</span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> row</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'PARTNO'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">'600181'</span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> <br />        UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">messagebox </span><span class="syntaxstring">"You Output #{result}"<br /></span><span class="syntaxdefault">        end<br />end<br /><br />if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">not $csv_Test_menu_loaded</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">  <br />  UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">menu</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Tools"</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">add_item</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"CSV_TEST"</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> csv_Test </span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> <br />  <br />  $csv_Test_menu_loaded </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> true<br />end<br /></span>
      
      1 Reply Last reply Reply Quote 0
      • TIGT Offline
        TIG Moderator
        last edited by

        Miss out the require 'csv' it does nothing and just causes an error... You have no file called 'csv' 😒

        TIG

        1 Reply Last reply Reply Quote 0
        • nithi09N Offline
          nithi09
          last edited by

          When I took out require 'csv'nothing happening on sketchup. suppose to diplay message You output 492.01 but when I open ruby console I got error It says like this
          Error: #<Errno::ENOENT: No such file or directory - Price_lookup.csv>
          C:/Program Files/Google/Google SketchUp 8/Plugins/CSV_Test.rb:9:in read' C:/Program Files/Google/Google SketchUp 8/Plugins/CSV_Test.rb:9:in csv_Test'
          C:/Program Files/Google/Google SketchUp 8/Plugins/CSV_Test.rb:20

          but I have Price_lookup.csv file in plugin folder what could be problem here???

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

            You can NOT just assume it'll find the file. 😒
            Typing Dir.pwd in the Ruby Console will return the current working directory.
            IF by good luck it is Plugins then the csv file will be found... but IF it is NOT then it won't be found !
            So either use Dir.chdir(path_to_plugins) OR specify the full path to the csv file in the code rather than just giving its name...

            To find the folder that the current script has loaded from use:
            folder=File.dirname(__FILE__)

            Then to set the csv file use:
            csvfile=File.join(folder, 'Price_lookup.csv')

            Do some tests in the Ruby Console with snippets before trying the whole code block, that way you'll move forward is small steps, rather than rushing into a multiple pile-up...

            TIG

            1 Reply Last reply Reply Quote 0
            • nithi09N Offline
              nithi09
              last edited by

              Thank you so much TIG for you response. I tried the way you said but It gives an error on ruby console like this

              Error: #<Errno::ENOENT: No such file or directory - Price_lookup.csv>
              C:/Program Files/Google/Google SketchUp 8/Plugins/CSV_Test.rb:24:in read' C:/Program Files/Google/Google SketchUp 8/Plugins/CSV_Test.rb:24:in csv_Test'
              C:/Program Files/Google/Google SketchUp 8/Plugins/CSV_Test.rb:35

              here is the code help me please.

              <span class="syntaxdefault"><br />  require </span><span class="syntaxstring">'sketchup.rb'<br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment">#  require 'csv'<br /><br /></span><span class="syntaxdefault">    def csv_Test<br />     <br />            model </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model<br />            ent </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_entities<br />            folder</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">dirname</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">__FILE__</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">            csvfile</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">join</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">folder</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'Price_lookup.csv'</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">            csv_text </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">read</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'Price_lookup.csv'</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">            csv </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> CSV</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">parse</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">csv_text</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">;</span><span class="syntaxdefault">headers </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> true</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">            csv</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each do </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">row</span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault">            result </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> csv</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">find </span><span class="syntaxkeyword">{|</span><span class="syntaxdefault">row</span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> row</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'PARTNO'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">'600181'</span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">     <br />            UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">messagebox </span><span class="syntaxstring">"You Output #{result}"<br /></span><span class="syntaxdefault">            end<br />    end<br /><br />    if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">not $csv_Test_menu_loaded</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">      <br />      UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">menu</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Tools"</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">add_item</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"CSV_TEST"</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> csv_Test </span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> <br />      <br />      $csv_Test_menu_loaded </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> true<br />    end<br /></span>
              
              1 Reply Last reply Reply Quote 0
              • TIGT Offline
                TIG Moderator
                last edited by

                The FILE works if you run the code from the .rb file loading.
                The way you have it set should work if the file 'Price_lookup.csv' is in the same folder as the .rb...
                You code has an error:
                csv_text = File.read('Price_lookup.csv')
                should be say
                csv_text = IO.read(csvfile)
                giving you an array of the lines.

                I'm not sure about how you are parsing the file data you read in...
                BUT once you successfully get the data in, then temporarily 'output' it to the opened Ruby Console to check it's as you expect, with:
                puts csv_text
                and showing hidden characters like \n etc
                p csv_text
                added in after the data is read-in...

                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