我来谈谈对acoka那段Code的理解.
首先,参数ispProduct应该已经是一个Instance, 那么为什么有了Instance后,还要用ispProduct->FindInstance()去再找Instance呢?因为当你要移动Product 的时候,由于运动都是相对的,你需要一个参照体,而这个参照体就是FindInstance所要求的参数,在acoka的函数里用了ispProduct父节点的Reference.
结论是,FindInstance用来规定Move的Context, 它返回的Product中包含了Context的信息.
比如:
1. 将ispProduct QI 到CATIMovable,然后SetPosition到(12,12,12).
2. spInstanceProduct = ispProduct->FindInstance( spReferenceProduct );
spInstanceProduct QI 到CATIMovable, 再SetPosition到(77,77,77).
这时候如果用GetAbsPosition得到的是(89,89,89). spInstanceProduct对ispProduct 作了相对运动.
CAADoc 中有个例子: CAAPstMovable.cpp. |