• Login
sketchucation logo sketchucation
  • Login
🤑 SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

Can someone create me a rubyscript?

Scheduled Pinned Locked Moved Plugins
5 Posts 2 Posters 219 Views
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.
  • M Offline
    Maxamillionaire
    last edited by Maxamillionaire 19 Mar 2012, 00:21

    hello,
    i was wondering if somebody can create me a ruby script for sketchup?

    for me its impossible but is a massive time saver but i think to someone who knows ruby script this will be basic knowlegde

    all it needs to do is create an modxml file that saves text positions as nodes and in the group name

    here's what i want

    plugins (Menu)
    -Modxml
    --Spline Exporter

    once that is clicked it creates this

    <span class="syntaxdefault"></span><span class="syntaxkeyword"><</span><span class="syntaxdefault">model&nbsp;xmlns</span><span class="syntaxkeyword">=</span><span class="syntaxstring">""</span><span class="syntaxkeyword">>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">system&nbsp;handedness</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"right"&nbsp;</span><span class="syntaxdefault">up</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"z"</span><span class="syntaxkeyword">/>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">spline&nbsp;name</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"(GROUPNAME)"&nbsp;</span><span class="syntaxdefault">cyclic</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0"</span><span class="syntaxkeyword">>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">node</span><span class="syntaxkeyword">>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">position&nbsp;x</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"(X&nbsp;POSITION)"&nbsp;</span><span class="syntaxdefault">y</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"(Y&nbsp;POSITION)"&nbsp;</span><span class="syntaxdefault">z</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"(Z&nbsp;POSITION)"</span><span class="syntaxkeyword">/>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">controlPrev&nbsp;x</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">x</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"(X&nbsp;POSITION)"&nbsp;</span><span class="syntaxdefault">y</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"(Y&nbsp;POSITION)"&nbsp;</span><span class="syntaxdefault">z</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"(Z&nbsp;POSITION)"</span><span class="syntaxkeyword">/>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">controlNext&nbsp;x</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">x</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"(X&nbsp;POSITION)"&nbsp;</span><span class="syntaxdefault">y</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"(Y&nbsp;POSITION)"&nbsp;</span><span class="syntaxdefault">z</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"(Z&nbsp;POSITION)"</span><span class="syntaxkeyword">/>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</</span><span class="syntaxdefault">node</span><span class="syntaxkeyword">>&nbsp;<br /><br />***&nbsp;</span><span class="syntaxdefault">There&nbsp;will&nbsp;be&nbsp;many&nbsp;more&nbsp;nodes&nbsp;but&nbsp;this&nbsp;is&nbsp;the&nbsp;layout&nbsp;</span><span class="syntaxkeyword">for&nbsp;</span><span class="syntaxdefault">one&nbsp;node<br />each&nbsp;extra&nbsp;node&nbsp;will&nbsp;be&nbsp;from&nbsp;</span><span class="syntaxkeyword"><</span><span class="syntaxdefault">node</span><span class="syntaxkeyword">>&nbsp;</span><span class="syntaxdefault">to&nbsp;</span><span class="syntaxkeyword"></</span><span class="syntaxdefault">node</span><span class="syntaxkeyword">><br /><br /></span><span class="syntaxdefault">all&nbsp;text&nbsp;arrows&nbsp;in&nbsp;sketchup&nbsp;will&nbsp;be&nbsp;named&nbsp;node&nbsp;</span><span class="syntaxkeyword">and&nbsp;</span><span class="syntaxdefault">all&nbsp;saved&nbsp;in&nbsp;the&nbsp;same&nbsp;group</span><span class="syntaxkeyword">***<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</</span><span class="syntaxdefault">spline</span><span class="syntaxkeyword">>&nbsp;<br /><br />***&nbsp;</span><span class="syntaxdefault">at&nbsp;this&nbsp;point&nbsp;another&nbsp;group&nbsp;will&nbsp;be&nbsp;exported&nbsp;using&nbsp;the&nbsp;same&nbsp;framework&nbsp;above&nbsp;but&nbsp;with&nbsp;different&nbsp;node&nbsp;positions<br /><br /></span><span class="syntaxkeyword"></</span><span class="syntaxdefault">model</span><span class="syntaxkeyword">>&nbsp;</span><span class="syntaxdefault"></span>
    

    heres is a full example of a simple working file to show how the extra nodes and groups would form the file

    <span class="syntaxdefault"></span><span class="syntaxkeyword"><</span><span class="syntaxdefault">model&nbsp;xmlns</span><span class="syntaxkeyword">=</span><span class="syntaxstring">""</span><span class="syntaxkeyword">>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">system&nbsp;handedness</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"right"&nbsp;</span><span class="syntaxdefault">up</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"z"</span><span class="syntaxkeyword">/>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">spline&nbsp;name</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"right"&nbsp;</span><span class="syntaxdefault">cyclic</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0"</span><span class="syntaxkeyword">>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">node</span><span class="syntaxkeyword">>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">position&nbsp;x</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"-0.5"&nbsp;</span><span class="syntaxdefault">y</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"2.0"&nbsp;</span><span class="syntaxdefault">z</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.75"</span><span class="syntaxkeyword">/>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">controlPrev&nbsp;x</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"-0.5"&nbsp;</span><span class="syntaxdefault">y</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"2.0"&nbsp;</span><span class="syntaxdefault">z</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.75"</span><span class="syntaxkeyword">/>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">controlNext&nbsp;x</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"-0.5"&nbsp;</span><span class="syntaxdefault">y</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"2.0"&nbsp;</span><span class="syntaxdefault">z</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.75"</span><span class="syntaxkeyword">/>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</</span><span class="syntaxdefault">node</span><span class="syntaxkeyword">>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">node</span><span class="syntaxkeyword">>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">position&nbsp;x</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"-0.5"&nbsp;</span><span class="syntaxdefault">y</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"-2.0"&nbsp;</span><span class="syntaxdefault">z</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.75"</span><span class="syntaxkeyword">/>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">controlPrev&nbsp;x</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"-0.5"&nbsp;</span><span class="syntaxdefault">y</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"-2.0"&nbsp;</span><span class="syntaxdefault">z</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.75"</span><span class="syntaxkeyword">/>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">controlNext&nbsp;x</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"-0.5"&nbsp;</span><span class="syntaxdefault">y</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"-2.0"&nbsp;</span><span class="syntaxdefault">z</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.75"</span><span class="syntaxkeyword">/>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</</span><span class="syntaxdefault">node</span><span class="syntaxkeyword">>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</</span><span class="syntaxdefault">spline</span><span class="syntaxkeyword">>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">spline&nbsp;name</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"left"&nbsp;</span><span class="syntaxdefault">cyclic</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0"</span><span class="syntaxkeyword">>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">node</span><span class="syntaxkeyword">>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">position&nbsp;x</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.5"&nbsp;</span><span class="syntaxdefault">y</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"2.0"&nbsp;</span><span class="syntaxdefault">z</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.75"</span><span class="syntaxkeyword">/>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">controlPrev&nbsp;x</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.5"&nbsp;</span><span class="syntaxdefault">y</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"2.0"&nbsp;</span><span class="syntaxdefault">z</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.75"</span><span class="syntaxkeyword">/>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">controlNext&nbsp;x</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.5"&nbsp;</span><span class="syntaxdefault">y</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"2.0"&nbsp;</span><span class="syntaxdefault">z</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.75"</span><span class="syntaxkeyword">/>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</</span><span class="syntaxdefault">node</span><span class="syntaxkeyword">>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">node</span><span class="syntaxkeyword">>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">position&nbsp;x</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.5"&nbsp;</span><span class="syntaxdefault">y</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"-2.0"&nbsp;</span><span class="syntaxdefault">z</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.75"</span><span class="syntaxkeyword">/>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">controlPrev&nbsp;x</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.5"&nbsp;</span><span class="syntaxdefault">y</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"-2.0"&nbsp;</span><span class="syntaxdefault">z</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.75"</span><span class="syntaxkeyword">/>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<</span><span class="syntaxdefault">controlNext&nbsp;x</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.5"&nbsp;</span><span class="syntaxdefault">y</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"-2.0"&nbsp;</span><span class="syntaxdefault">z</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"0.75"</span><span class="syntaxkeyword">/>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</</span><span class="syntaxdefault">node</span><span class="syntaxkeyword">>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</</span><span class="syntaxdefault">spline</span><span class="syntaxkeyword">>&nbsp;<br /></</span><span class="syntaxdefault">model</span><span class="syntaxkeyword">>&nbsp;</span><span class="syntaxdefault"></span>
    

    if anybody could create this that would be amazing and save me ( and a lot of others ) a lot of time

    node model example.jpg

    thankyou for reading this

    1 Reply Last reply Reply Quote 0
    • T Offline
      TIG Moderator
      last edited by 19 Mar 2012, 11:15

      How do 'we' get the nodes [text objects?] ??
      Are they in two 'spline' groups of text named 'left' and 'right' ?
      Do you select these before running the tool ?
      Are the three XYZ values for each <node> always the same ?
      What are the units of XYZ [" or metric?]
      It's relatively straightforward to write once it's clear what is is we get and what it is we write.

      TIG

      1 Reply Last reply Reply Quote 0
      • M Offline
        Maxamillionaire
        last edited by 19 Mar 2012, 12:26

        Apologies for the lack of info, I know nothing about coding ( I wish I did )

        I'm currently on my phone do can't provide script examples ATM

        I modified an exporter plugin which can export the x y z positions of the nodes but in a simple x y z format with no extra data

        When I add
        Out.puts "<model xmlns=""/>"
        This creates an error or unexpected error expecting kend

        My friend has recently told me that I need to swap my " for ' to make it read as a string

        But the next one
        Out.print
        Requires both string and data
        '<position> x=' (x position code) 'y=' (y position code) 'z=' ( z position code)
        I have the x y z position code which exports all three in a single line which I can link later

        If someone can fix the above 2 lines of code then I think I can make the exporter work

        If not here's the info you asked for

        Text objects can be named anything it only requires its position these are exported out as construction points

        There are 2 spline groups which are named in sketchup as there respective group names
        Left and right were examples however this is not important as your reference that name in a separate file later

        All the groups are selected with the nodes inside them and then exported as selected

        The x y z values of each node vary on the position of the text object in sketchup ( at the point you place the arrow to)
        Position, next and previous all carry the same positions per node

        Units are exported as metric metres to a precision of either 0.00 or 0.000

        To explain this scenario to everybody it is a piece of rollercoaster track for the game rollercoaster tycoon 3

        Currently to get the spline data you need to export model to blender then add splines which I hate

        I then found that the position next and previous only adjust the smoothness of the curve to which I thought making them all the same and adding more nodes will also make the curve smooth

        The text objects are as you see in the picture they create the curves left and right side of the track that the game then follows with the wheels of the car

        My
        Best example is belgabors su2ase plugin if you get this and create just one text object highlight it and export it to ase you will see his file structure

        In this structure you will see piece called vertex and after this has the x y z values for that node

        If you add more it exports them all as selected

        I deleted all the info this plugin was writing to only output that vertex code

        I then tried it and it exported all the nodes as I wanted but clearly not in a modxml format as above

        So I thought if I alter his plugin to write the XML code around this data then it would create my full spline modxml file to simply code into the game

        This is because the track could have over 100 nodes if the game allows this many and hand writing x y z for each node per track piece would be ridiculous

        This plugin does that all without any editing needed

        Once this works I will then try to alter the controlpoints plugin I have what adds crosses at each segment of a curve to replace the cross with text objects

        Then I draw the curve with however many edges I want add control points then make it a group and export via the plugin here

        Anymore info I can happily send you the files later I currently experimented on

        Also I asked permission off belgabor to edit these files he agreed as long as he was mentioned and was under the Gpu license

        1 Reply Last reply Reply Quote 0
        • T Offline
          TIG Moderator
          last edited by 19 Mar 2012, 13:34

          First make a long string variable that's formated as desired [use '"' or """ to allow " inside a string...]. Use '\n' to show all newlines as needed...

          str='        <node> 
                      <position x="X" y="Y" z="Z"/> 
                      <controlPrev x="X" y="Y" z="Z"/> 
                      <controlNext x="X" y="Y" z="Z"/> 
                  </node>'
          

          Open a [new] file and start to write [puts] to it, with the standard 'header' lines as needed.
          Note that using a 'puts' adds a '\n' to the end of the added string automatically, so you only need a '\n' to delineate intermediate line-breaks inside any string...
          Add new 'header' lines for the first specific 'group'.
          Now the main part...
          Get a collection of 'texts' to use [probably from a selected group.entities ?].
          Iterate through that list.
          Get each 'text' entity's position.
          pt=text.position x=pt.x.to_m.to_s y=pt.y.to_m.to_s z=pt.z.to_m.to_s
          Now add the x/y/z strings, substituting 'x' for 'X' etc within a copy of 'str'.
          tstr=str.gsub(/X/, #{x}).gsub(/Y/, #{y}).gsub(/Z/, #{z})
          Add [puts] each adjusted 'tstr' string into the file...
          Repeat for each 'text'...
          Add [puts] new 'header' lines for the second specific 'group'.
          Repeat for its texts, as above...
          ...
          Finally add the standard 'footer' lines to the file.
          Close the file.
          Done.

          Test on just a few text-points.
          Check the file's format is as expected - adjust '\n' etc as needed...

          TIG

          1 Reply Last reply Reply Quote 0
          • M Offline
            Maxamillionaire
            last edited by 19 Mar 2012, 13:52

            Thank you for the fast response
            I will try this later using su2ase as a framework

            I'll post my progress later

            Max

            1 Reply Last reply Reply Quote 0
            • 1 / 1
            1 / 1
            • First post
              4/5
              Last post
            Buy SketchPlus
            Buy SUbD
            Buy WrapR
            Buy eBook
            Buy Modelur
            Buy Vertex Tools
            Buy SketchCuisine
            Buy FormFonts

            Advertisement