SolidKernelEntity 如何进行矩阵变换

一般元素在进行矩阵变换时,直接使用 ApplyTransform(TransformInfo transInfo) 即可进行变化,但 SolidKernelEntity 在进行矩阵变换时,操作有所不同。

步骤:

  1. 获取 SolidKernelEntity 原来的矩阵
  2. 用变换矩阵左乘原来的矩阵
  3. 对 SolidKernelEntity 设置新的矩阵

Why?

因为从 Element 向 SolidKernelEntity 转换时内部已经针对 Design Coordinate System 到 ParaSolid coordinate system做了transform了,而 SolidKernelEntity 的变换使用的是 SetEntityTransform(ref DTransform3d transform) ,该方法是覆盖原来的矩阵,所以要将原变换矩阵左乘变换矩阵,然后赋给 SolidKernelEntity。

代码

1
2
3
4
5
6
7
8
SolidKernelEntity solidKernelEntity = null;
// 新变换
DTransform3d targetTrans = DTransform3d.Identity;
// 原变换
DTransform3d existTrans = solidKernelEntity.GetEntityTransform();
// 最终变换
DTransform3d finallyTrans = targetTrans * existTrans;
solidKernelEntity.SetEntityTransform(ref finallyTrans);