SketchUp RUBY API Wishlist [way of coding wishes, please]
-
Hey guys,
My goal is to check these forums every day to see if I can be of help. I'm one of the "new guys" on the SketchUp team, having been with Google for about a year, now. In my day to day job I mostly work in the Ruby API, so I'm in the same boat as you in regards to its capabilities, and I'm an internal advocate for improvements.
Maybe a moderator could split this into a new topic? I'd love to hear everyone's wish list.
In any case, I will do some research into these posted bugs and confirm that they are in our internal tracking system.
Cheers,
-
Great! A "Ruby API Wish List Followed by SketchUp Team". This could be a sticker, right ?
The most up-to-date "Wish List" in the very first page and good discussions in the sub-sequent pages.
Regards
Marcio -
Scott,
I 've got one, almost a Christmas wish : - can Ruby tell me if I should use UVHelper instead of uv_at when I want to get proper UVs for a face, PLEASE!I other words - can Ruby tell me if the face's texture is photo-matched or not?
Please check this thread. Could it be an additional .materialType result .. say 3?Tomasz
-
Thanks for starting this topic, Scott!
Ok, I split this topic off from the earlier posts and made it sticky. Let the wishing continue...
-
Fix onMButtonDown() api.
-
Here is one (of 1000):
The text and dimension tool are not accessible from Ruby. You can't read or set the text for example.
-
The Sections are hardly accessible from Ruby, only through Selection! You can't read or set it active.
-
This is music to my ears, Scott. Here's another vote for ruby control of dimension objects. CB.
-
Two requests:
Simple methods for retrieving points,angles and distances without using a tool class.(Something as simple as 'getpoint' and getangle in AutoCAD's api. Maybe something like pt=Sketchup.utility.getpoint(prompt) for example)
'Getangle' should offer the use of the protractor tool for input.Then a request for the Sketchup COM api: Include a 'runRubyScript' method that can be called from the api and returns the return value from the script.
-
Hi all !
One great improvment would be to have some control on inferences via ruby... Isolate, stop, start, etc.... -
Move (and rotate) axes from ruby !!! Actually, to be able to access any tool from ruby.
regards!
-
Hi all !
One ruby improvment :- A command autolisp like function !! To have access to all native tools (like said NewOne), and to have possibility to control this tool !
Command autolisp function work like that :
To make a line :
(command "_LINE" "0,0,0" "10,0,0" "") (command " 'International Name of the tool' " " 'first point' " " 'any point you want' " "")
"" stops the command.
One very intersting thing is you can insert pause that let user doing what he wants !(command "_LINE" "0,0,0" PAUSE" "")
PAUSE stops process and let user giving a point, in this example.
Another cool thing is an Autocad variable that show if a command (or tool) is active. And you can use it in the code !(command "_LINE")(while (not (eq (getvar "cmdactive") 0)))(command PAUSE))
(getvar "cmdactive") returns 0 (no active tool) or 1 (one active tool)
- A command autolisp like function !! To have access to all native tools (like said NewOne), and to have possibility to control this tool !
-
Selection display bug to be fixed, please.
-
Something I have been wanting to do is write a suite of general-purpose Observers based on the built-in ones. Most of the Observers are designed to be attached to a specific entity in a model (or to THE model) - the SelectionObserver, for example is attached to a model's selection collection. It just seems inefficient and error-prone for each plugin author who needs one to implement their own SelectionObserver when a single instance can handle all requests.
So, I guess I'm really proposing a simplified API for using Observers.
The way I see this API working is that a plugin would 'require' the observer file, which would create a single Observer instance. Then the plugin would 'register' methods in the form of blocks (or procs?). In my experiments, I used the Ruby Singleton class to ensure there is ever only one instance created.
Here is how I see the API being used (without getting into the details of the implementation):
# My Plugin require 'app_observer' # Global AppObserver instance created def hello(args) puts "Hello #{args}" end # Register hello() to be called for an onNewModel event id = AppObserver.instance.register("onNewModel") {|args| hello(args) } # AppObserver attaches itself when its registry goes from 0 to >0 elements ... AppObserver.instance.unregister(id) # stop calling hello for onNewModel event # AppObserver detaches itself when its registry falls to 0 elements.
It really simplifies using Observers, which in turn could allow authors to create better plugins, with more advanced features, in a shorter time. It may also save on resources by having one and only one instance of most of the Observers (confirm?)
-
Jim,
Nice idea. Also, I'm curious if you mixed in the Singleton module to implement your singletons? I've found that I can't require a library module like Singleton unless I point directly to my Ruby installation directories. I realize that this isn't required to implement singletons, but it seems the most simple and consistent.
-
Welcome to SCF Scott, it's great to see your involvement here!
-
@jim said:
Something I have been wanting to do is write a suite of general-purpose Observers based on the built-in ones.
This is a fantastic idea. Attaching observers reliably to every component instance, for example, is challenging. So a helper script is one approach... another would be to create some uber-observers at the Sketchup level. Obviously, there are potential performance concerns with any of these.
-
A standard for displaying script documentation, besides their description, in the menus:
The ruby filename, creator, version level; basically an "about" display for each script. Optional info could be copyright info, contact (email) link, website link, and display of a help file on a local drive.
=============================================
An easier way to organize scripts in a user defined menu (there are scripts that do this now, but I wouldn't call them user friendly)
-
New method for a texture, very useful for exporters.
texture.alpha_channel? -> (true or false) -
@unknownuser said:
New method for a texture, very useful for exporters.
texture.alpha_channel? -> (true or false)Ooohhh..that reminds me:
How about a method that samples the texture color on a face?
face.color_at(u,v)->returns a SketchUp::Color object.
Could be used for displacement mapping inside SketchUp for example.
Advertisement