Thanks for the reply Brian,
"However, they are conceptually quite different things"
Yes, I realize what they are conceptually (I am an engineer) and how they are implemented in Inventor. (One could argue that theoretically a "vector" can be any length, not just restricted to 3 elements in a Cartesian coordinate system, but I digress).
"an Automation interface doesn't support overloading."
I was afraid of this. It is too bad because it would be very nice to have some operators like += and -= for Vectors and some binary operators for handling Points and Vectors.
"Set oVec = oTG.CreateVector(oPoint.X, oPoint.Y,
oPoint.Z)"
yes, this is another way, but so much typing! And it requires another line of code.
I'm guessing the TransientGeometry manager is there to handle small objects (make them faster, better memory usage, etc). However, do we really have to go thru the TG to make any object? (This is a policy question, not a current implementation question). The method I suggested:
Public Point.AsVector() As Vector
could work thru the TG to create a new Vector object and return it to the user. It would act like a type cast, but really you would get a new object.
Or if that is not a "likeable" solution, why not have
Public Function VectorFrom(Optional ByVal Point As Point) As Vector
I would use the VectorTo method, but then I have to reverse the direction! Also, the Vector could have:
Public Function PointTo(Optional ByVal Point As Point) As Point
This would return the Point equivalent to moving the Point passed into the function by the vector. If no Point was passed in, then the origin would be used.
Just some ideas Brian. As an engineer that is pretty familiar with matrix algebra, transformation matrices, etc., it would be great if using Point, Vector and Matrix objects looked more "algebraic" and required less lines of code.