New API doc - typos and questions
-
@tomot said:
what does this mean "If the specified objects (this and arg)"
We've already noted that these terms are confusing. The keyword this is from Javascript, and means the receiver. (It's not a Ruby keyword. It just shows the writer had a brain-fart and his web programming mind spit out the wrong word.)
Whenever you see this in the API docs, you should replace it with the Ruby keyword
self
, which is the current instance object, (the object on the left of the 'dot', in this case a group object.) The argument (nicked named "arg") is also a group object... so to paraphrase:
self_group.split( arg_group )
-
As for the other 3D geometric terms, you'll just have to open another browser to wikipedia, and paste them in.
The API docs are a technical reference, not a tutorial. It might be nice to have definition links, but we'd rather the errors were corrected first.
I'm sure you can find a browser plugin that lets you highlight text, then right-click and have a wiki lookup link on the popup menu.
I'm using Chrome now, and when I hilight "manifold solid" in your post, and right-click, an option appears on the context menu that says: "Search Google for 'manifold solid'"
It's likely I can find a Chrome extension, that will search Wikipedia, also. -
To clarify the issue on
group1.split(group2)
[translated a little] in the Group API notes... there are equally confusing notes for ComponentInstanceinstance1.split(instance2)
[again translated a little]...In fact a manifold ['solid'] group can 'split' with another manifold group OR a manifold component-instance - therefore the notes are plan wrong!
The 'argument' can be a group OR an instance.The result is always three*** new groups - one is the intersected 'volume' and the other two are the remains of the group and the 'argument' [group or instance], the originals all deleted. The intersected volume is named 'Intersection', what's left of the group is named 'Difference1' and the group of what's left or the 'argument' is called 'Difference2'. If successful the method returns an array of these groups, the API says they are listed in that order: HOWEVER, in testing the array is in reverse order! i.e. [Difference2, Difference1, Intersection].
***Somewhat perversely if the group is wholly inside the 'argument' group/instance then the result is exactly the same two volumes you started with, but they are now recast as the new groups called 'Difference1' and 'Difference2', and although there is an 'Intersection' group made and returned in the array it contains no geometry at all [i.e.(group1.split(group2))[2].entities[0]==nil
] - so it might have been better to return 'nil' instead of an array [just as it does if there's a non-manifold object passed] as there was NO real 'split' at all and the originals would then be left unchanged ? If a valid 'Instance' isn't made in code [i.e.not ...entities[0]
] then you could undo the 'split' if you don't want to change the two originals - however, be aware that the undo will change the references to the originals, and these will no longer be valid, so you'll need to dig further back again to re-get the references if you want to reuse them ??
These newly made groups do reuse the two original objects material[s] and apply them logically to the 'Intersection' group as its faces' materials; however, if an original object had default materials to some faces and a material applied to the group/instance itself, then the equivalent new group [like 'Difference1'] will not replicate this; rather, the equivalent faces that had the default material will now have the group.material, the new group will have the default material, and any new 'additional' faces made during the split-operation have the default material too...
These new groups also ignore the two originals' layers, with all three new groups being always on Layer0 - so if the originals are layered and you want to keep this you'll need to get references to those before they are deleted and apply the layer to.
Attributes belonging to the originals are also not replicated in the 'Difference' groups...In a very similar way an instance can 'split' using a group OR other instance, and it returns the equivalent three groups array etc...
Other 'boolean' operations for group/component-instance have equal poor explanations and return relatively complicated results...
-
@dan rathbun said:
self_group.split( arg_group )
Dan you raise an interesting issue:
A good technical doc still needs to have a highlighted or underlined link, if the common English language idiom, or word, used could be taken out of context with respect to a specific computer language interpretation. Your self_group.split( arg_group ) example should qualify for such a link.
-
I don't understand... I am saying it's a typographical eror, and should NOT say "this" at all, it should say "self" instead.
Anyway.. the current API documentation system stinks, and we've complained about it for years. It seems to be a low priority for Google. (Otherwise they would have hired someone who is a API documentation guru to clean up the mess.)
IMHO it is an embarrassment for Google (as a company,) knowing the quality that they can produce for other API documentation (from other Google divisions.)
-
@tomot said:
A good technical doc still needs to have a highlighted or underlined link, if the common English language idiom, or word, used could be taken out of context with respect to a specific computer language interpretation.
OK, maybe I do understand.. it's like what we do here in the forum, when we use a Ruby keyword or classname, we highlight it using the "ruby" button on the edit message toolbar. (Just like I did in the post above, when I highlighted the keyword
self
.Yes I think we agree with that... keyword higlites would make the API much more understandable.
-
Can you please send me Win32API.rb? It is difficult to find a place to download it, believe it or not...
Thanks in advance.
-
Brian
Please learn to use the forum's search function [top right]...
http://forums.sketchucation.com/viewtopic.php?p=380121#p380121
-
Model.save_thumbnail
BUG: SU ver 7.1.6087 win32
Model.save_thumbnail (which only works for the current model,) but has a bug, in that if the model has never been saved, the method writes a blank thumbnail image to the %UserProfile% folder [actually to the current working directory,] instead of the Model folder specified in Preferences>Files>Model folderpath.
If the current model has been saved with a thumbnail, then the thumbnail image is properly saved to the Model path as set in Preferences>Files>Model.
UPDATE - the API should include aModel.refresh_thumbnailmethod, similar to (or perhaps using the same internal code as,) theComponentDefinition.refresh_thumbnailmethod.
_ -
Hi!
Under Quick References --> Method Index it will only load from "Symbol, A, B, C, D to E"... not any further.
I have the same problem in I.E. and Chrome... for more than a week now.
-
All letter links (targets,) work fine for me using Chrome.
Try clearing your browser cache ??
-
Hmm... found a solution.
When I press Methods Index in the menu it opens "https://developers.google.com/sketchup/docs/methods?hl=da"
I tried to delete ?hl=da so it only said: "https://developers.google.com/sketchup/docs/methods"
Then it works.
-
@rvs1977 said:
Hmm... found a solution.
I tried to delete ?hl=da so it only said: "https://developers.google.com/sketchup/docs/methods"
Then it works.
On the Google Developers site.. at the lower right, on the bottom (dark gray) toolbar, is a language change button.
Use it to switch to English ... then bookmark the page.I also posted a API links menu that I exported out of Chrome, ...
Get it here: SUAPI_Links.zip -
"NamedOptions" OptionsProvider bugged?
I am not sure what the intended behavior of the "NamedOptions" OptionsProvider is... so...
I'll just describe the weirdness of it, that I see on the PC:
1) It is within the Model options scope, ie, accessed via:
Sketchup.active_model.options["NamedOptions"]
2) It is saved with the model file.
3) But once this OptionsProvider is used within a session, all attributes remain loaded, regardless of whether the model is closed, another model opened, or just a new model opened.
- An attribute of the same name, from the next file, will overwrite.
- But existing attributes will remain unchanged.
- If you save the second model, whether you add any attributes, or not, ALL the "NamedOptions" attributes are written into ALL subsequent model files saved during that session.
So.. if you happened to open a file, just to view it,... and it had any "NamedOptions" attributes saved,.. and then you started a new model, or re-opened another file for editing... the "NamedOptions" attributes from the "viewed" file, will propagate into your "edit" model (likely without you knowing it.)
It does not seem to be desirable behavior. I think there is a bug, in that Sketchup should clear and reset the "NamedOptions" provider when another file is loaded.
I wonder what the behavior is on the Mac when multiple files are open ??
-
I could not find a send_action value for Display or toggle the Measurement Toolbar. Just VCB hide / unhide with Statusbar.
Is there an undocumented Value? -
There's a massive list of numerical PC only codes that do more than the PC/MAC Sketchup.send_action("text") versions... I've PM'd you it...
-
You refer to the API list? https://developers.google.com/sketchup/docs/ourdoc/sketchup#send_action
There I could not find what I`m looking for. So my question for undocumented numbers. -
@thomthom said:
Animation
http://code.google.com/intl/nb/apis/sketchup/docs/ourdoc/animation.htmlThe first example on that page:
> # This is an example of a simple animation that floats the camera up to > # a z position of 200". The only required method for an animation is > # nextFrame. It is called whenever you need to show the next frame of > # the animation. If nextFrame returns false, the animation will stop. > class FloatUpAnimation > def nextFrame(view) > new_eye = view.camera.eye > new_eye.z = new_eye.z + 1.0 > view.camera.set(new_eye, view.camera.target, view.camera.up) > view.show_frame > return new_eye.z < 500.0 > end > end > > # This adds an item to the Camera menu to activate our custom animation. > UI.menu("Camera").add_item("Run Float Up Animation") { > Sketchup.active_model.active_view.animation = FloatUpAnimation.new > } >
It makes a class named
FloatUpAnimation
, but no mention ofAnimation
. A bit confusing.
Is it like the Observers?
Should it sayclass FloatUpAnimation < Animation
Hi,
Can someone post an example of using the "nextFrame(view)" definition for moving an entity object instead of a camara?
My objective is to create a game in SketchUp similar to the one I am making with ruby and gosu named "Resballiza" ... Here is a link for more info;
http://www.libgosu.org/cgi-bin/mwf/topic_show.pl?tid=815
So far I have studied JS Move Tool by Jan Sandstrom and changed the Keys for my game style but the "Typematic effects" bug in windows is giving me a hard time.
I have also tried to understand the scrip in the "Prince of IO" game but get lost with anything that has to do with Webdialog related scripts. Please any help in demonstrating a simple object animation that is as simple as the FloatUpAnimation scrip for the camera let me know.Thanks
-
The menu item's code
Sketchup.active_model.active_view.animation = FloatUpAnimation.new
runs that class, making a new animation associated with the 'view', the class calls the lone special methodnextFrame(view)
- which affects the view's camera when it resets it with anew_eye
position and usesshow_frame
to update the view...
The '.animation
' is a method applied to a view, no a 'separate' class in it's own right...
Your own class that you pass to theview.animation
can do various things inside thenextFrame(view)
method - changing the camera's eye position is just one example...It is an awkwardly set up method/class - but it will work as the example...
-
Hi,
Thanks TIG for explaining that
I found this topic and it solves animating an object like I wanted to but I can't make a file.rb for leading in the plugins menu. It shows me this error;
Load Errors
Undefined method ‘transform!’ for nil:NilClassError Loading File
jumper.rb
undefined method ‘transform!’ for nil: NilClassIf anyone nows how to solve this let me know
Thanks
Advertisement