New API doc - typos and questions
-
Model.export
http://code.google.com/apis/sketchup/docs/ourdoc/model.html#export@unknownuser said:
options_hash______ A hash containing the COLLADA (.dae) export options.
The options listed in the hash example is missing the option for hidden geometry.
The Registry Attribute Name is "ExportHiddenGeometry", but what is the options hash key?- hiddengeometry ?* hidden_geometry ?
_
- hiddengeometry ?* hidden_geometry ?
-
Set class
http://code.google.com/apis/sketchup/docs/ourdoc/set.htmlThis class is defined in the Objectspace and should be listed under "Core Ruby Classes" (along with Array, Length, Numeric and String.)
Instead it's buried under "App Level Classes" and listed with all those classes that are defined inside the Sketchup module.
_ -
OptionsProviderObserver.onOptionsProviderChanged
http://code.google.com/apis/sketchup/docs/ourdoc/optionsproviderobserver.html#onOptionsProviderChanged@unknownuser said:
The onOptionsProviderChanged method is invoked when an element is added to an Pages object.
Should read, "The onOptionsProviderChanged method is invoked when an option is changed for an OptionsProvider object."
_ -
Entities.add_curve
http://code.google.com/intl/nb/apis/sketchup/docs/ourdoc/entities.html#add_curveReturns an array of edges - not a
Curve
object. -
@thomthom said:
Entities.add_curve
http://code.google.com/intl/nb/apis/sketchup/docs/ourdoc/entities.html#add_curveReturns an array of edges - not a
Curve
object.Ita's the same as
add_circle
which returns an array od edges and to find the just made curves curve you useedges=entities.add_curve(array_of_points) curve=edges[0].curve
But strangely not withadd_arc
which returns anArcCurve
?It would be unadvisable to change what the API does with these
add_
methods - rather it we should keep it as is and fix the API's Guide to reflect it properly - too many scripts already get the curve from the edges array and would fail if it were updated to return the curve not the curve's edges... -
-
-
Sketchup.write_default
Sketchup.read_default
http://code.google.com/intl/nb/apis/sketchup/docs/ourdoc/sketchup.html#write_default
http://code.google.com/intl/nb/apis/sketchup/docs/ourdoc/sketchup.html#read_default@unknownuser said:
[..] the string associated with a value within the specified sub-section section of a .INI file or registry (within the Software > @Last Software > SketchUp section).
Is it really stored under @Last any more?
-
@thomthom said:
Sketchup.write_default
Sketchup.read_default
http://code.google.com/intl/nb/apis/sketchup/docs/ourdoc/sketchup.html#write_default
http://code.google.com/intl/nb/apis/sketchup/docs/ourdoc/sketchup.html#read_default@unknownuser said:
[..] the string associated with a value within the specified sub-section section of a .INI file or registry (within the Software > @Last Software > SketchUp section).
Is it really stored under @Last any more?
No, / Google / Sketchup 7 / etc...
-
Group.move!
http://code.google.com/intl/nb/apis/sketchup/docs/ourdoc/group.html#move!.move!
moves to an absolute point. Worth noting in the manual. -
Geom::Point3d.+
http://code.google.com/apis/sketchup/docs/ourdoc/point3d.html#+@unknownuser said:
The '+' operator is a fast way to add to the current x, y and z values of a point, or to set the values of a point by adding to other points together.
The end of the sentence should read, "...by adding**two**
other points together."@unknownuser said:
Returns:
vector a Vector object
There is no defined object named 'vector'. If we follow the example the class of the result is given asGeom::Point3d
.pt2 = Geom;;Point3d.new(100,200,300) pt3 = pt2 + [1,1,1] >> Point3d(101, 201, 301) pt3.class >> Geom;;Point3d
@unknownuser said:
Arguments:
point2 A Point3d object.
An ArugemtError exception is raised if point2 is aPoint3d
object.
Valid argument classes are:Array
orVector3d
. This means to use aPoint3d
as an argument, you must convert to Array. Example:pt3 = pt1 + pt2.to_a
This method needs to be fixed to take a Point3d object and internally convert it to an Array...
# internal to + method if arg[0].is_a? Point3d { arg[0]=arg[0].to_a }
...or a Vector3d:
# internal to + method if arg[0].is_a? Point3d { arg[0]=[0,0,0].vector_to(arg[0]) }
either way. The current implementation is clumsy.
-
**Geom::Point3d.-**
http://code.google.com/apis/sketchup/docs/ourdoc/point3d.html#-@unknownuser said:
Returns:
vector a Vector object
There is no defined object named 'vector', but there IS one named 'Vector3d
'. If we follow the example the class of the result is given asGeom::Vector3d
.pt2 = Geom;;Point3d.new(100,200,300) pt3 = pt2 - [1,1,1] >> Vector3d(99, 199, 299) pt3.class >> Geom;;Vector3d
It seems a bit strange that
+
returnsPoint3d
, but-
returnsVector3d
. -
Geom::Point3d.offset
Code example has errors:
[line1]replace"point ="with"point1 ="
[line1]use parameter delimiters both lines
[line3]replace".offset**!**"with".offset"
add comments
Corrected code:point1 = Geom;;Point3d.new(10,10,10) vector = Geom;;Vector3d.new(0,0,1) point2 = point1.offset vector # point1 is unchanged # point2 is Point3d(10, 10, 11)
Geom::Point3d.offset!
Code example has errors:
[line1]replace"point ="with"point1 ="
[line1]use parameter delimiters both lines
add commentspoint1 = Geom;;Point3d.new(10,10,10) vector = Geom;;Vector3d.new(0,0,1) point2 = point1.offset! vector # point1 now equals point2 # point2 is Point3d(10, 10, 11)
-
Geom::Vector3d.x=
http://code.google.com/apis/sketchup/docs/ourdoc/vector3d.html#x=
Geom::Vector3d.y=
http://code.google.com/apis/sketchup/docs/ourdoc/vector3d.html#y=
Geom::Vector3d.z=
http://code.google.com/apis/sketchup/docs/ourdoc/vector3d.html#z=#Anchors: '=' char should be replaced with 'equals' in links.
All 3 methods suffer from the same return class anomoly as the
Vector3d.[]=
method, in that they return the class of the argument (which may not always beFloat
.) In contrast, the.x
,.y
and.z
methods always return classFloat
.
Propose that the.x=
,.y=
and.z=
methods should be modified to returnFloat
as the.x
,.y
and.z
methods do.Propose to add note: "See the
**.set!**
method to set all three coordinates in one statement." ( .. to the description sections, of each of the three methods.) -
Geom::Vector3d.set!
http://code.google.com/apis/sketchup/docs/ourdoc/vector3d.html#set!@unknownuser said:
This is a shortcut for writing:
Clarify: "This is a shortcut for setting all coordinates of the vector, instead of setting them individually in three statements."@unknownuser said:
You may also call this method with an array or another vector:
Confusing. (I first took this mean that the SU extendedArray
class had anArray.set!
method; which is NOT the case.)
Clarify: "You may also call this method with an Array or a Vector3d object as the first argument,(and any other arguments will then be ignored.)"Add: "If only one
Numeric
argument is supplied, or if a one elementArray
is supplied, then only the x value will be changed. IF only 2 values are supplied, in the same way, then the z value will remain unchanged.
All coordinate values must be implicitly convertable toFloat
class.(If you pass anil
value, aTypeError
exception is raised.)"@unknownuser said:
Arguments:
x ____ The x value for the vector.
y ____ The y value for the vector.
z ____ The z value for the vector.
vector2 ____ A Vector3d object.
Remove 4th argument. (There is no valid fourth argument for this method. All args beyond 3 are ignored.)
Clarify: (suggested Argument list)
Arguments:
x ____ The x value for the vector, a Vector3d object, or an Array.
y ____ The y value for the vector. (optional)
z ____ The z value for the vector. (optional)Better Code Example:
vector = Geom;;Vector3d.new 0,0,1 vector.set! 1,0,0 # three Numeric arguments vector2 = Geom;;Vector3d.new 1,2,3 vector.set! vector2 # one Vector3d argument # vector now is (1,2,3) array1 = Array.new(4,5,6) vector.set! array1[2] # one Numeric argument # vector now is (6,2,3) vector2.set! array1 # one Array argument # vector2 now is (4,5,6) vector.set! [5,4] # one Array with 2 values # vector now is (5,4,3) # change x and z in one statement, this way; vector.set! 9, vector.y, 8 # vector now is (9,4,8)
-
Geom::Vector3d.[=]
[="]http://code.google.com/apis/sketchup/docs/ourdoc/vector3d.html#[]=[/url]
Again the HTML anchor may cause problems in some browsers, suggest '#subscriptEquals'Obviously the #[]= anchor tag in the url cannot even be displayed properly in this forum.All of the #anchor links to methods using special chars need to be changed to comply with the HTML spec, as ThomThom noted:
@unknownuser said:ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods ("."). [url:nfjuel6m]http://www.w3.org/TR/html4/types.html#type-name]("http)
@unknownuser said:
Returns:
value _______ the newly set coordinate valuethe
Geom::Vector3d.[]
method returns classFloat
BUT, theGeom::Vector3d.[]=
method returns the class of the argument.The code example may be misleading to the unwary,
@unknownuser said:value = vector[i] = coordinate
..if the class of the coordinate variable is
Integer
then the class of the value variable will also beInteger
.
This causes a coder to do a two-step expression if they want aFloat
, ie:coordinate = 2 vector[i] = coordinate # returns Integer 2 value = vector[i] # value.class >> Float
%(#FF4000)[Two Issues:
- Is 'coordinate' the correct term, or would 'component' be a better term when refering to vectors?1. If all the rest of the methods that return subscript values from a
Vector3d
object areFloat
, then perhaps this method should as well, regardless of the class of the argument.]
- Is 'coordinate' the correct term, or would 'component' be a better term when refering to vectors?1. If all the rest of the methods that return subscript values from a
-
Geom::Point3d.<
http://code.google.com/apis/sketchup/docs/ourdoc/point3d.html#%3C@unknownuser said:
Returns:
true if the point2 is closer to the origin.Following the example, I get the opposite result.
TheReturns:should probably read,
"*true* if the point2 is **farther** from the origin; *false* if the point2 is closer to the origin (than the receiver.)
-
@thomthom said:
Group.move!
http://code.google.com/intl/nb/apis/sketchup/docs/ourdoc/group.html#move!.move!
moves to an absolute point. Worth noting in the manual.It doesn't seem to though - we've been testing it in another thread this afternoon and it seem that it moves relative to the transformation-origin NOT the model's ORIGIN - you first have to do a transformation by vector from where it is to the ORIGIN and then off again to the absolute point ?
-
@dan rathbun said:
Ruby code can no longer use the nil return value in a conditional boolean statement.
There is also no way now to determine how many Dictionary objects, there are within an AttributeDictionaries collection (No Methods: .size, .length, .count, or .empty?)
There are no methods but several easy combos to do it...
You make an array of it and than get its length ?
len = AttributeDictionaries.to_a.length
or use 'each' ?
len = 0;AttributeDictionaries.each{|d|len += 1}
Where len is the AttributeDictionaries length ? -
AttributeDictionaries.to_a.length
works.
Advertisement