CurveVector 相关实现笔记

判断 CurveVector 是否在一个平面

1
2
3
4
5
// C#
cv.IsPlanar(out DTransform3d localToWorld, out DTransform3d worldToLocal, out DRange3d range3D);

// 转到 xy 平面
cv.Transform(worldToLocal);

返回的第一个参数为 localToWorld,该坐标系是 curve 的局部坐标第,曲线位于局部坐标系的 xy 平面。如果要将其变成世界坐标系的 xy,则要将左乘 localToWorld 的逆矩阵,即 worldToLocal

创建线串

CurveVector静态

1
2
// CurveVector 类中
public static CurveVector CreateLinear(IList<DPoint3d> points, BoundaryType boundaryType, bool forceXYOrientation);

最后一个参数在使用中经常会让人误解,当它为 true 时,将强制生成的曲线外部和内部循环具有正确的(CCW/CW)顺序。

CurvePrimitive静态

判断点与曲线的关系

1
2
3
// CurveVector 类中

public InOutClassification PointInOnOutXY([In] DPoint3d xyz);