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

    Writing a config or temp file in Plugins folder

    Scheduled Pinned Locked Moved Developers' Forum
    20 Posts 7 Posters 937 Views 7 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.
    • thomthomT Offline
      thomthom
      last edited by

      You'd have to make a Win32 API call to get the correct path.

      What about OSX, any restriction there?

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

      1 Reply Last reply Reply Quote 0
      • jeff hammondJ Offline
        jeff hammond
        last edited by

        @thomthom said:

        What about OSX, any restriction there?

        yeah, there are restrictions there.
        for instance, using fredoscale as an example (which has the default parameter file), i can only change those defaults from my admin account.. if i try doing it from a user acct then the changes don't stick.
        i can however, as an admin, give the user acct. read/write permissions to the entire plugin folder or specific files in which case a user can make changes to fredoscale's parameters which will affect both the user's sketchup and the admin's sketchup.

        [and if i remember correctly, there were some problems with the fredoscale.def file being created in the first place when someone was trying to install from a non-admin acct.. ie- it didn't work]

        dotdotdot

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

          Why does it have to be a file made in the ../Plugins/ folder ?
          There are many places that a user will have access rights - e.g. C:\Temp ?
          You can also get the User's very own 'TEMP' folder using ENV["TEMP"] for PC or ENV["TMPDIR"] for MAC - e.g. C:\Users\TIG\AppData\Local\Temp

          πŸ€“

          TIG

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

            The temp folder doesn't work well when you want to store persistent config files.

            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

              What we need in the API is a method that will return the path to where one can store application data on each OS.

              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

                On Win7 I see this key:
                LOCALAPPDATA - C:\Users\Thomas\AppData\Local

                Is there something on OSX?

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

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

                  My ENV example combined with a simple OS test lets you find the User's own TEMP file...
                  The PC's ENV["LOCALAPPDATA"] would allow you to then make a specific sub-folder to contain the config file - on a MAC what is it ?

                  BUT you can save config info in other ways...

                  To save them
                  If it's entity specific use entity.set_attributes(dict,key,value)
                  If it's model specific use model.set_attributes(dict,key,value)
                  If it's Sketchup specific use Sketchup.write_default(section,variable,value)
                  [if it's a file-path with '' you'll need to use tr("\\","/") before writing it]

                  To retrieve them use
                  entity.get_attributes(dict,key,default)
                  model.get_attributes(dict,key,default)
                  Sketchup.read_default(section,variable,value)
                  [if it's a file-path you'll need to use tr("/","\\") after reading it and before using it]
                  πŸ€“

                  TIG

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

                    @tig said:

                    [if it's a file-path with '' you'll need to use tr("\","/") before writing it]

                    Or use File.expand_path

                    @unknownuser said:

                    I have to try if once again. If my memory doesn't deceive me I haven't had good results with it in the past.

                    I use it quite frequently. But beware that it doesn't handle Length objects well - so convert them into floats first. (I made a wrapper to handle conversion of Length and Symbol for write/read_default)

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

                    1 Reply Last reply Reply Quote 0
                    • T Offline
                      tomasz
                      last edited by

                      @tig said:

                      Why does it have to be a file made in the ../Plugins/ folder ?

                      It doesn't have to be. If I would have just a chance to write a path to the config file then it would be ok...
                      I have forgotten about Sketchup.write_default. Thanks Thomas!
                      I have to try it once again. If my memory doesn't deceive me I haven't had good results with it in the past.

                      Author of [Thea Render for SketchUp](http://www.thearender.com/sketchup)

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

                        Note that read/write_defaults is best with Strings - convert then from/to Float [or whatever] afterwards... πŸ˜‰

                        TIG

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

                          works fine with floats, integers, even arrays in my experience...

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

                          1 Reply Last reply Reply Quote 0
                          • N Offline
                            notareal
                            last edited by

                            For windows %appdata% ?

                            Welcome to try [Thea Render](http://www.thearender.com/), Thea support | [kerkythea.net](http://www.kerkythea.net/) -team member

                            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