• Login
sketchucation logo sketchucation
  • Login
⚠️ Libfredo 15.4b | Minor release with bugfixes and improvements Update

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.
  • N Offline
    nithi09
    last edited by 4 Jul 2013, 18:35

    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
    • T Offline
      TIG Moderator
      last edited by 4 Jul 2013, 19:23

      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
      • N Offline
        nithi09
        last edited by 4 Jul 2013, 19:46

        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
        • T Offline
          TIG Moderator
          last edited by 4 Jul 2013, 20:26

          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
          • N Offline
            nithi09
            last edited by 5 Jul 2013, 20:11

            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
            • T Offline
              TIG Moderator
              last edited by 6 Jul 2013, 09:58

              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
              1 / 1
              • First post
                6/6
                Last post
              Buy SketchPlus
              Buy SUbD
              Buy WrapR
              Buy eBook
              Buy Modelur
              Buy Vertex Tools
              Buy SketchCuisine
              Buy FormFonts

              Advertisement