将一个多段线按一些点分割成一个或多个线段

函数原型:

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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值