AcDbCurve

 

AcDbCurve是所有作为一个曲线实体的变体(如AcDbArc, AcDbCircle, AcDbEllipse, AcDbSpline及其他)的实体类的基类。这个基类提供公共功能如在曲线上寻找一个点的参数,寻找偏移曲线,寻找曲线在一个平面上的投影等。

 

继承自

AcDbEntity

 

包含文件

dbcurve.h

 

参见

AcDbObject

 

成员

 

AcDbCurve建构器和析构器

AcDbCurve::~AcDbCurve 函数

virtual

~AcDbCurve();

析构器。

 

AcDbCurve::AcDbCurve 函数

AcDbCurve();

默认建构器。用于保证此类只能作为基类。

这是一个空执行的建构器。

 

AcDbCurve编辑函数

AcDbCurve::extend 函数

virtual Acad::ErrorStatus

extend(

Adesk::Boolean extendStart,

const AcGePoint3d& toPoint);

extendStart

输入布尔值,表示是否延伸曲线的起点或终点

toPoint

输入曲线新的起点或终点

此函数将曲线延伸至toPointWCS坐标中)。如果extendStart==Adesk::kTrue,则曲线的起点被延伸。如果extendStart==Adesk::kFalse,则延伸曲线的终点。

toPoint必须在曲线的路径上,否则返回Acad::eInvalidInput

如果成功返回Acad::eOk。如果不执行,则返回Acad::eNotImplemented。否则返回Acad::eInvalidInput

在派生的类中,此函数应可从extendStart参数中确定延伸曲线的起点或终点。此函数必须可确定toPoint点是否可以有效地确定延伸的位置。执行器必须确定有效点以及如何使用它延伸曲线。对于大多数,但不是全部的已执行此函数的AutoCAD内建实体类,这个点必须在曲线的路径上且不能被认为是无效的。如果确实在路径上,则要延伸的曲线使用这个点作为新曲线的起点或终点。

由执行器返回ErrorStatus值,但要与内建类兼容,建议使用以下的返回值:

Acad::eOk

函数成功地执行

Acad::eInvalidInput

由于某些原因,点不被接受(如点不在曲线路径上或点实体上在已存在的曲线段上)

在默认的执行返回Acad::eNotImplemented


virtual Acad::ErrorStatus

extend(

double newParam);

newParam

曲线上的新起点或终点参数

此函数延伸曲线的起点或终点至由newParam值确定的新点上。

如果newParam小于曲线的起点参数,则曲线重新设置为以newParam为起点。如果newParam大于曲线的终点参数,则曲线重新设置为以newParam为终点。

如果成功返回Acad::eOk。如果newParam的第一周期的值在曲线的起点和终点之间,则返回Acad::eInvalidInput

函数在派生类中的执行必须可以解释newParam值,确定它在已有的曲线终点后或在曲线起点前,并以适当的方向延伸曲线至newParam值。

由执行器返回ErrorStatus值,但要与内建类一致,建议使用以下返回值:

Acad::eOk

函数成功地执行

Acad::eInvalidInput

由于某些原因,点不被接受(如点不在曲线路径上或点实体上在已存在的曲线段上)

在默认的执行返回Acad::eNotImplemented

 

AcDbCurve查询函数

AcDbCurve::getArea 函数

virtual Acad::ErrorStatus

getArea(

double& area) const;

area

返回曲线包围的面积

此函数在area中返回曲线内部区域的面积。对于AutoCAD内建的类,曲线必须在一个平面上。如果曲线不封闭,则认为它的起点和终点之间有一条线段将其封闭。

如果成功返回Acad::eOk。对于AutoCAD内建类,如果曲线不在一个平面内,则返回Acad::eInvalidInput。对于自定义实体类,根据如何执行可能有其他的返回值。

此函数必须可以计算曲线的一个封闭的区域。

AutoCAD的内建类要求曲线在一个平面内,则自定义实体类则不需要这个限制,除非执行器要求。

由执行器返回ErrorStatus值,但要与内建类兼容,建议使用以下的返回值:

Acad::eOk

函数成功地执行

Acad::eInvalidInput

由于某些原因,点不被接受(如点不在曲线路径上或点实体上在已存在的曲线段上)

在默认的执行返回Acad::eNotImplemented

 

AcDbCurve::getClosestPointTo 函数

virtual Acad::ErrorStatus

getClosestPointTo(

const AcGePoint3d& givenPnt,

const AcGeVector3d& direction,

AcGePoint3d& pointOnCurve,

Adesk::Boolean extend = Adesk::kFalse) const;

givenPnt

输入点(WCS坐标中),用于找出曲线上的最近点

direction

输入法向矢量(WCS坐标中),用于平面投影

pointOnCurve

返回曲线上与givenPnt最近的点(WCS坐标中)

extend

输入布尔值,表示在搜索最近点时是否延伸曲线

此函数将曲线投影至由givenPntnormal定义的平面,找出曲线上与givenPnt最近的点,再将这个最近点投影回原始曲线上并在pointOnCurve中返回结果。

如果extend == Adesk::kTrue,则曲线沿它的路径延伸以找出最近点。

如果成功则返回Acad::eOk。根据执行返回错误值。

在派生类中,此函数必须可以投影至由一个点(givenPnt)和一个法向矢量(normal)定义的平面上,如果需要可延伸曲线的投影,找出与givenPnt最近的点,再将这个找到的点投影回原始曲线上(如果被延伸则在它的路径上)并设置pointOnCurve为最终结果。

使用AcGe类可执行一些投影和最近点计算的工作。

如果操作成功,此函数返回Acad::eOk。错误的返回值根据错误和执行器。关于可能的ErrorStatus值列表,参见头文件acdh.h

默认执行返回Acad::eNotImplemented


virtual Acad::ErrorStatus

getClosestPointTo(

const AcGePoint3d& givenPnt,

AcGePoint3d& pointOnCurve,

Adesk::Boolean extend = Adesk::kFalse) const;

givenPnt

输入点(WCS坐标中),用于找出曲线上的最近点

pointOnCurve

返回曲线上与givenPnt最近的点(WCS坐标中)

extend

输入布尔值,表示在搜索最近点时是否延伸曲线

此函数找出曲线上与givenPnt最近的点并将pointOnCurve设为结果。

如果extend==Adesk::kTrue,则曲线沿其曲线延伸以寻找最近点。

如果成功则返回Acad::eOk。根据执行返回错误值。

在派生类中,此函数必须可以投影至由一个点(givenPnt)和一个法向矢量(normal)定义的平面上,如果需要可延伸曲线的投影,找出与givenPnt最近的点,再将这个找到的点投影回原始曲线上(如果被延伸则在它的路径上)并设置pointOnCurve为最终结果。

使用AcGe类可执行一些投影和最近点计算的工作。

如果操作成功,此函数返回Acad::eOk。错误的返回值根据错误和执行器。关于可能的ErrorStatus值列表,参见头文件acdh.h

默认执行返回Acad::eNotImplemented

 

AcDbCurve::getDistAtParam 函数

virtual Acad::ErrorStatus

getDistAtParam(

double param,

double& dist) const;

param

输入参数,用于在曲线上指定一个点

dist

返回曲线段上从曲线起点至param指定点之间的长度

计算曲线段上从从曲线起点至param指定点之间的长度。

如果成功返回Acad::eOk,如果param超出范围则返回Acad::eInvalidInput。对于其他错误,执行器必须决定使用的返回值。关于可能性的ErrorStatus值,参见acdb.h头文件。

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::getDistAtPoint 函数

virtual Acad::ErrorStatus

getDistAtPoint(

const AcGePoint3d& point,

double& distance) const;

point

输入曲线上的一个点(WCS坐标中)

distance

返回曲线段上曲线起点和point之间的长度

计算曲线段上曲线起点和point之间的长度,并在distance中返回长度。

如果成功返回Acad::eOk,如果param超出范围则返回Acad::eInvalidInput。对于其他错误,执行器必须决定使用的返回值。关于可能性的ErrorStatus值,参见acdb.h头文件。

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::getEndParam 函数

virtual Acad::ErrorStatus

getEndParam(

double& endParam) const;

endParam

返回曲线的终点的参数

此函数在派生中的执行在endParam 中返回曲线的终点的参数。

如果成功返回Acad::eOk

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::getEndPoint 函数

virtual Acad::ErrorStatus

getEndPoint(

AcGePoint3d& endPoint) const;

endPoint

返回曲线的终点

在此类和派生类中,此函数在endPoint中返回曲线的终点(WCS坐标中)。

如果成功返回Acad::eOk

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::getFirstDeriv 函数

virtual Acad::ErrorStatus

getFirstDeriv(

const AcGePoint3d& point,

AcGeVector3d& firstDeriv) const;

point

输入曲线上的点,用于确定一阶导数

firstDeriv

返回曲线在point中的一阶导数

此函数计算曲线在point上的一阶导数并在firstDeriv中返回,在此类或派生类中均如此。在派生类中pointfirstDeriv都在WCS坐标中。

如果成功返回Acad::eOk。如果点不在曲线上,则返回Acad::eInvalidInput。其他的ErrorStatus返回值由执行器确定。

对于执行,AcGe类执行了一些必要的功能可简化任何。

在默认的执行中,函数返回Acad::eNotImplemented


virtual Acad::ErrorStatus

getFirstDeriv(

double param,

AcGeVector3d& firstDeriv) const;

param

输入曲线上的位置参数,用于确定一阶导数

firstDeriv

返回在param上的曲线一阶导数

在该类和派生类中,此函数用于确定曲线上param指定位置的一阶导数,并在firstDeriv中返回结果(WCS坐标中)。

如果成功返回Acad::eOk。如果param对曲线无效,则返回Acad::eInvalidInput。其他的返回值根据执行器而定。

对于执行,AcGe类提供一些必要的功能简化任务。

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::getOffsetCurves 函数

virtual Acad::ErrorStatus

getOffsetCurves(

double offsetDist,

AcDbVoidPtrArray& offsetCurves) const;

offsetDist

输入偏移曲线的距离

offsetCurves

返回指向结果曲线的指针的数组

此函数对原有曲线偏移offsetDist距离创建一个或多个实体。对多数曲线,结果是一条新的曲线。(这条新的曲线可能与原有曲线不同类。例如,偏移一个AcDbEllipse将得到一个AcDbSpline,因为偏移一个椭圆不能满足一个椭圆方程。)

在一些情况下,偏移结果应是几条曲线。要得到这样的结果,必须使用一个动态的void指针数组储存一个或多个结果实体的指针。

要使用这个指针数组,调用的应用程序需要将指针强制转换至适当的对象类型。如果只需处理一种特定的实体类型或类型集,则使用所需类的强制转换的方法检查是否每个指针可被安全地转换至那个对象类型。如果需要实际的对象类型(类名),则使用每个对象的isA()方法取得一个指向对象的AcRxClass对象的指针,这个AcRxClass对象具有一个name()方法。

如果offsetDist值为负值,通常被解释为曲线偏移为一个更小的曲线(即,对弧则将偏移至半径offsetDist,其小于原有曲线半径)。如果负值在生成偏移曲线时没有意义,则一个负值的offsetDist将被解释为沿WCS坐标中XYZ的更小方向的偏移。这不是强制的,因此自定义实体可将offsetDist的符号解释为它们希望的含义。

offsetCurves数组中返回的实体是动态分配的,但仍未增加至一个AcDbDatabase中。因此,调用此函数的应用程序负责分配它们的内存。如果它们随后增加至一个数据库中,则由数据库负责分配它们的内存。另外,应用程序负责在不需要它们的时候删除它们。

如果偏移成功则返回Acad::eOk。如果偏移距离无效(例如,如果偏移一个弧且结果将为一个负的半径),则返回Acad::eInvalidInput。对于使用ACIS(AcDbBody, AcDbRegion, AcDb3dSolid)AutoCAD的内建类,如果在ACIS建模器中发生错误则返回 Acad::eGeneralModelingFailure。其他的ErrorStatus返回值与执行相关。

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::getOffsetCurvesGivenPlaneNormal 函数

virtual Acad::ErrorStatus

getOffsetCurvesGivenPlaneNormal(

const AcGeVector3d& normal,

double offsetDist,

AcDbVoidPtrArray& offsetCurves) const;

normal

输入要偏移的平面的法向矢量

offsetDist

输入曲线偏移的距离

offsetCurves

返回指向结果曲线的一个指针数组

此函数在以normal为法向矢量的平面上对曲线偏移offsetDist距离创建一个或多个实体。对多数曲线,结果是一条新的曲线。(这条新的曲线可能与原有曲线不同类。例如,偏移一个AcDbEllipse将得到一个AcDbSpline,因为偏移一个椭圆不能满足一个椭圆方程。)

在一些情况下,偏移结果应是几条曲线。要得到这样的结果,必须使用一个动态的void指针数组储存一个或多个结果实体的指针。

要使用这个指针数组,调用的应用程序需要将指针强制转换至适当的对象类型。如果只需处理一种特定的实体类型或类型集,则使用所需类的强制转换的方法检查是否每个指针可被安全地转换至那个对象类型。如果需要实际的对象类型(类名),则使用每个对象的isA()方法取得一个指向对象的AcRxClass对象的指针,这个AcRxClass对象具有一个name()方法。

如果offsetDist值为负值,通常被解释为曲线偏移为一个更小的曲线(即,对弧则将偏移至半径offsetDist,其小于原有曲线半径)。如果负值在生成偏移曲线时没有意义,则一个负值的offsetDist将被解释为沿WCS坐标中XYZ的更小方向的偏移。这不是强制的,因此自定义实体可将offsetDist的符号解释为它们希望的含义。

offsetCurves数组中返回的实体是动态分配的,但仍未增加至一个AcDbDatabase中。因此,调用此函数的应用程序负责分配它们的内存。如果它们随后增加至一个数据库中,则由数据库负责分配它们的内存。另外,应用程序负责在不需要它们的时候删除它们。

如果偏移成功则返回Acad::eOk。如果偏移距离无效(例如,如果偏移一个弧且结果将为一个负的半径),或normal是一个零长度矢量或实体为线性且normal与实体不垂直,则返回Acad::eInvalidInput。其他的ErrorStatus返回值与执行相关。

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::getOrthoProjectedCurve 函数

virtual Acad::ErrorStatus

getOrthoProjectedCurve(

const AcGePlane& projPlane,

AcDbCurve*& projCrv) const;

projPlane

输入曲线的投影平面

projCrv

返回指向新创建的投影曲线指针

此函数将曲线沿projPlane的法向矢量向projPlane投影创建一个新的曲线实体,并将projCurve设为指向新创建的曲线的指针。projCurve声明为AcDbCurve类型,允许返回的曲线为从AcDbCurve派生的任何类(例如,当一个AcDbArc投影至一个平面,结果为一个AcDbEllipse)

返回的曲线是动态分配的,但仍未增加至一个AcDbDatabase中。因此,调用此函数的应用程序负责分配它们的内存。如果它们随后增加至一个数据库中,则由数据库负责分配它们的内存。另外,应用程序负责在不需要它们的时候删除它们。

如果成功返回Acad::eOk。其他的ErrorStatus值与执行相关。

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::getParamAtDist 函数

virtual Acad::ErrorStatus

getParamAtDist(

double dist,

double& param) const;

dist

输入从曲线的起点沿曲线至需要定位的参数的距离

param

返回由dist指定位置上的参数

此函数通过从曲线的起点沿曲线至需要定位的参数的距离确定曲线的参数,并在param中返回这个参数。

如果成功返回Acad::eOk。如果dist对曲线无效,则返回Acad::eInvalidInput。其他的ErrorStatus值与执行相关。

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::getParamAtPoint 函数

virtual Acad::ErrorStatus

getParamAtPoint(

const AcGePoint3d& point,

double& param) const;

point

输入曲线上具有所需参数的点(WCS坐标中)

param

返回曲线上point处的参数

此函数确定曲线在point上的参数,并在param中返回这个参数。

如果成功返回Acad::eOk。如果point不在曲线上,则返回Acad::eInvalidInput。其他的ErrorStatus值与执行相关。

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::getPointAtDist 函数

virtual Acad::ErrorStatus

getPointAtDist(

double dist,

AcGePoint3d& point) const;

dist

输入从曲线的开始沿曲线至需要定位的点的距离

point

返回由dist定位的点

此函数在曲线上确定从曲线的开始沿曲线距离为dist的点,并在point中返回这个点。pointWCS坐标中。

如果成功返回Acad::eOk。如果dist对曲线无效,则返回Acad::eInvalidInput。其他的ErrorStatus值与执行相关。

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::getPointAtParam 函数

virtual Acad::ErrorStatus

getPointAtParam(

double param,

AcGePoint3d& point) const;

param

输入曲线上所需点处的参数

point

返回曲线上的点

此函数确定曲线上对应于param参数上的点,并在point中返回点。pointWCS坐标中。

如果成功返回Acad::eOk。如果参数不在曲线的范围则返回Acad::eInvalidInput。其他的ErrorStatus值与执行相关。

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::getProjectedCurve 函数

virtual Acad::ErrorStatus

getProjectedCurve(

const AcGePlane& projPlane,

const AcGeVector3d& projDir,

AcDbCurve*& projCrv) const;

projPlane

输入曲线的投影平面

projDir

输入投影的方法(WCS坐标中)

projCrv

返回指向新创建的投影曲线的指针

此函数将曲线平行于projDir投影至projPlane上创建一个新的曲线实体,并将projCurve设为新创建的曲线。projCurve声明为AcDbCurve类型,允许返回的曲线为从AcDbCurve派生的任何类。例如,当一个AcDbArc投影至一个平面,则结果是一个AcDbEllipse

返回的曲线是动态分配的,但仍未增加至一个AcDbDatabase中。因此,调用此函数的应用程序负责分配它们的内存。如果它们随后增加至一个数据库中,则由数据库负责分配它们的内存。另外,应用程序负责在不需要它们的时候删除它们。

如果偏移成功则返回Acad::eOk。如果projDir垂直于projPlane法向矢量则返回Acad::eInvalidInput。对于使用ACIS(AcDbBody, AcDbRegion, AcDb3dSolid)AutoCAD的内建类,如果在ACIS建模器中发生错误则返回 Acad::eGeneralModelingFailure。其他的ErrorStatus返回值与执行相关。

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::getSecondDeriv 函数

virtual Acad::ErrorStatus

getSecondDeriv(

const AcGePoint3d& point,

AcGeVector3d& secDeriv) const;

point

输入曲线上的点,用于计算二阶导数

secDeriv

返回曲线在point上的二阶导数

计算曲线在point上的二阶导数,并将secDeriv设为结果。pointsecDeriv都在WCS坐标中。

如果成功返回Acad::eOk。如果point不在曲线上,则返回Acad::eInvalidInput。其他的ErrorStatus返回值与执行器相关。

对于执行,AcGe类提供一些必要的功能简化工作任务。

在默认的执行中,函数返回Acad::eNotImplemented


virtual Acad::ErrorStatus

getSecondDeriv(

double param,

AcGeVector3d& secDeriv) const;

param

输入曲线上的位置参数,用于计算二阶导数

secDeriv

返回曲线在param上的二阶导数

计算曲线上由param指定位置上二阶导数,并并将secDeriv设为结果。pointsecDeriv都在WCS坐标中。

如果成功返回Acad::eOk。如果param对曲线无效,则返回Acad::eInvalidInput。其他的ErrorStatus返回值与执行器相关。

对于执行,AcGe类提供一些必要的功能简化工作任务。

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::getSpline 函数

virtual Acad::ErrorStatus

getSpline(

AcDbSpline*& spline) const;

spline

返回指向曲线的一个AcDbSpline近似的指针

此函数创建一个新的AcDbSpline实体,并将其设为与曲线可能的最近似值,并在spline中返回这个新创建的多段线实体。

返回的多段线是动态分配的,但仍未增加至一个AcDbDatabase中。因此,调用此函数的应用程序负责分配它们的内存。如果它们随后增加至一个数据库中,则由数据库负责分配它们的内存。另外,应用程序负责在不需要它们的时候删除它们。

如果偏移成功则返回Acad::eOk。如果在ACIS建模器(AcDbSpline使用的)中发生错误则返回 Acad::eGeneralModelingFailure。其他的ErrorStatus返回值与执行相关。

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::getSplitCurves 函数

virtual Acad::ErrorStatus

getSplitCurves(

const AcGeDoubleArray& params,

AcDbVoidPtrArray& curveSegments) const;

params

输入曲线上的参数的数组

curveSegments

返回指向作为原始曲线的子曲线的新创建的实体指针

此函数创建作为原始曲线的子曲线的一个或多个实体。params数必须包含曲线上将作为新创建的子曲线的起点和终点的点的参数。第一条子曲线从原始曲线的起点开始,在params数组中的第一个参数结束。第二条子曲线从params数组中的第一个参数开始,在params数组中的第二个参数结束。第三条子曲线从第二个参数开始,在第三个参数结束,以此类推。最后一条子曲线从params数组中的最后一个参数开始,在原始曲线的终点结束。

如果连续的参数是相同的(包括原始的曲线的起点至第一个参数和最后一个参数至原始曲线的终点),则在这一对参数上不会创建子曲线。

指向所有新的曲线的指针增加至curveSegments数组。

curveSegments数组中返回的实体是动态分配的,但仍未增加至一个AcDbDatabase中。因此,调用此函数的应用程序负责分配它们的内存。如果它们随后增加至一个数据库中,则由数据库负责分配它们的内存。另外,应用程序负责在不需要它们的时候删除它们。

根据此函数如何执行,函数可能返回一个非Acad::eOkErrorStatus,并仍增加一些指向子曲线的指针至curveSegments数组(AcDbArc这样做)。典型地,这是params数组中的一个无效参数的结果。在返回时检查curveSegments数组的尺寸,保证适当地处理任何子曲线。

要使用curveSegments数组中的指针,调用此函数的应用程序需要将指针强制转换至适当的对象类型。对于此函数,curveSegments数组中指针指向的对象通常与原始曲线类相同。然而,这并不是必要的。为保证安全,指针应使用适当类的cast方法进行类型转换。

如果成功返回Acad::eOk

如果params为空或params中在任何参数不在曲线的范围内,则返回Acad::eInvalidInput。根据上述,可能返回这个ErrorStatus并将一些子曲线指针增加至curveSegments数组。

对于使用ACIS(AcDbEllipse, AcDbSpline, AcDbBody, AcDbRegion,AcDb3dSolid)AutoCAD的内建类,如果在ACIS建模器中出错则返回Acad::eGeneralModelingFailure

其他的ErrorStatus返回值与执行相关。

在默认的执行中,函数返回Acad::eNotImplemented


virtual Acad::ErrorStatus

getSplitCurves(

const AcGePoint3dArray& points,

AcDbVoidPtrArray& curveSegments) const;

points

输入曲线上的点(WCS坐标中)的数组

curveSegments

返回指向作为原始曲线的子曲线的新创建的实体的指针

此函数创建作为原始曲线的子曲线的一个或多个实体。点数组必须包含曲线上的点,作为新创建的子曲线的起点或终点。第一条子曲线从原始曲线的起点开始,在params数组中的第一个参数结束。第二条子曲线从params数组中的第一个参数开始,在params数组中的第二个参数结束。第三条子曲线从第二个参数开始,在第三个参数结束,以此类推。最后一条子曲线从params数组中的最后一个参数开始,在原始曲线的终点结束。

如果连续的参数是相同的(包括原始的曲线的起点至第一个参数和最后一个参数至原始曲线的终点),则在这一对参数上不会创建子曲线。

指向所有新的曲线的指针增加至curveSegments数组。

curveSegments数组中返回的实体是动态分配的,但仍未增加至一个AcDbDatabase中。因此,调用此函数的应用程序负责分配它们的内存。如果它们随后增加至一个数据库中,则由数据库负责分配它们的内存。另外,应用程序负责在不需要它们的时候删除它们。

根据此函数如何执行,函数可能返回一个非Acad::eOkErrorStatus,并仍增加一些指向子曲线的指针至curveSegments数组(AcDbArc这样做)。典型地,这是params数组中的一个无效参数的结果。在返回时检查curveSegments数组的尺寸,保证适当地处理任何子曲线。

要使用curveSegments数组中的指针,调用此函数的应用程序需要将指针强制转换至适当的对象类型。对于此函数,curveSegments数组中指针指向的对象通常与原始曲线类相同。然而,这并不是必要的。为保证安全,指针应使用适当类的cast方法进行类型转换。

如果成功返回Acad::eOk

如果params为空或params中在任何参数不在曲线的范围内,则返回Acad::eInvalidInput。根据上述,可能返回这个ErrorStatus并将一些子曲线指针增加至curveSegments数组。

对于使用ACIS(AcDbEllipse, AcDbSpline, AcDbBody, AcDbRegion,AcDb3dSolid)AutoCAD的内建类,如果在ACIS建模器中出错则返回Acad::eGeneralModelingFailure

其他的ErrorStatus返回值与执行相关。

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::getStartParam 函数

virtual Acad::ErrorStatus

getStartParam(

double& startParam) const;

startParam

返回曲线的起点的参数

此函数在startParam 中返回曲线上的起点参数。

如果成功返回Acad::eOk

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::getStartPoint 函数

virtual Acad::ErrorStatus

getStartPoint(

AcGePoint3d& startPoint) const;

startPoint

返回曲线的起点

此函数在startPoint 中返回曲线的起点(WCS坐标中)。

如果成功返回Acad::eOk

在默认的执行中,函数返回Acad::eNotImplemented

 

AcDbCurve::isClosed 函数

virtual Adesk::Boolean

isClosed() const;

当且仅当曲线封闭时,此函数返回Adesk::kTrue,即它的起点等于终点时。否则返回Adesk::kFalse

默认的执行中返回Acad::kFalse

 

AcDbCurve::isPeriodic 函数

virtual Adesk::Boolean

isPeriodic() const;

当且仅当曲线在两个方向上有范围无限且存在一个周期值T使得对于任何参数u,在曲线上(u + T)的点等于曲线上(u)的点,返回Adesk::kTrue。如果曲线没有周期性,则返回Adesk::kFalse

默认的执行中返回Acad::kFalse