|
函数原型:
virtual Acad::ErrorStatus getSplitCurves(
const AcGePoint3dArray& points,
AcDbVoidPtrArray& curveSegments
) const;
参数:
const AcGePoint3dArray& points 在曲线上的分割点数组(在WCS坐标中)
AcDbVoidPtrArray& curveSegments 返回带有指向原始子曲线的新创建实体的指针的指针
简介:
此函数创建一个或多个实体,它们都是原始实体的子曲线。 points数组必须包含曲线上的点,这些点用作新创建的子曲线的起点或终点。第一个子曲线从原始曲线的起点开始,并在点数组中的第一个点结束。第二个子曲线在点数组的第一个点开始,在点数组的第二个点结束。第三个子曲线在第二个点开始,在第三个点结束,依此类推。最后一个子曲线从点数组的最后一个点开始,并在原始曲线的端点处结束。
如果连续点是重合的(包括原始曲线的起点到第一个数组点,最后一个数组点到原始曲线的终点),则不会为该对创建子曲线。
所有新曲线的指针都附加到curveSegments数组中。
在curveSegments数组中返回的实体是动态分配的,但尚未添加到AcDbDatabase中。因此,调用此函数的应用程序负责其内存。如果随后将它们附加到数据库,则数据库将接管其内存的责任。否则,应用程序负责在不再需要它们时将其删除。
根据此函数的实现方式,该函数可能返回除Acad :: eOk之外的ErrorStatus,并且仍将一些指针添加到curveSegments数组的子曲线上(AcDbArc会这样做)。通常,这是在点数组中间某处无效点的结果。因此,非常重要的一点是在返回时检查curveSegments数组的大小,以确保正确处理了所创建的任何子曲线。
要在curveSegments数组中使用指针,调用应用程序将需要将指针转换为适当的对象类型。对于此功能,curveSegments数组中的指针所指向的对象通常与原始曲线属于同一类。但是,这不是必需的。为了安全起见,应使用适当的类的强制转换方法强制转换指针。
如果成功,则返回Acad :: eOk。
如果点为空或点中的任何点不在曲线上,则返回Acad :: eInvalidInput。如上所述,有可能返回此ErrorStatus并且仍然将某些子曲线指针附加到curveSegments数组。
对于使用ShapeManager的AutoCAD内置类(AcDbEllipse,AcDbSpline,AcDbBody,AcDbRegion和AcDb3dSolid),如果ShapeManager建模器中发生错误,则返回Acad :: eGeneralModelingFailure。
其他ErrorStatus返回值取决于实现。
默认实现返回Acad :: eNotImplemented。
|
|