找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 170|回复: 0

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

[复制链接]

主题

0

回帖

0

积分

管理员

积分
0
发表于 2024-2-23 16:12:57 | 显示全部楼层 |阅读模式
函数原型:
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。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-28 14:15 , Processed in 0.136229 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表