AcDbCurve类
AcDbCurve是所有作为一个曲线实体的变体(如AcDbArc, AcDbCircle, AcDbEllipse, AcDbSpline及其他)的实体类的基类。这个基类提供公共功能如在曲线上寻找一个点的参数,寻找偏移曲线,寻找曲线在一个平面上的投影等。
继承自
AcDbEntity
包含文件
dbcurve.h
参见
AcDbObject
成员
|
AcDbCurve::~AcDbCurve 函数 virtual ~AcDbCurve(); 析构器。 |
|
AcDbCurve::AcDbCurve 函数 AcDbCurve(); 默认建构器。用于保证此类只能作为基类。 这是一个空执行的建构器。 |
|
AcDbCurve::extend 函数 virtual
Acad::ErrorStatus extend( Adesk::Boolean extendStart, const AcGePoint3d&
toPoint);
此函数将曲线延伸至toPoint(WCS坐标中)。如果extendStart==Adesk::kTrue,则曲线的起点被延伸。如果extendStart==Adesk::kFalse,则延伸曲线的终点。 toPoint必须在曲线的路径上,否则返回Acad::eInvalidInput。 如果成功返回Acad::eOk。如果不执行,则返回Acad::eNotImplemented。否则返回Acad::eInvalidInput。 在派生的类中,此函数应可从extendStart参数中确定延伸曲线的起点或终点。此函数必须可确定toPoint点是否可以有效地确定延伸的位置。执行器必须确定有效点以及如何使用它延伸曲线。对于大多数,但不是全部的已执行此函数的AutoCAD内建实体类,这个点必须在曲线的路径上且不能被认为是无效的。如果确实在路径上,则要延伸的曲线使用这个点作为新曲线的起点或终点。 由执行器返回ErrorStatus值,但要与内建类兼容,建议使用以下的返回值:
在默认的执行返回Acad::eNotImplemented。 virtual
Acad::ErrorStatus extend( double newParam);
此函数延伸曲线的起点或终点至由newParam值确定的新点上。 如果newParam小于曲线的起点参数,则曲线重新设置为以newParam为起点。如果newParam大于曲线的终点参数,则曲线重新设置为以newParam为终点。 如果成功返回Acad::eOk。如果newParam的第一周期的值在曲线的起点和终点之间,则返回Acad::eInvalidInput。 函数在派生类中的执行必须可以解释newParam值,确定它在已有的曲线终点后或在曲线起点前,并以适当的方向延伸曲线至newParam值。 由执行器返回ErrorStatus值,但要与内建类一致,建议使用以下返回值:
在默认的执行返回Acad::eNotImplemented。 |
|
AcDbCurve::getArea 函数 virtual
Acad::ErrorStatus getArea( double& area)
const;
此函数在area中返回曲线内部区域的面积。对于AutoCAD内建的类,曲线必须在一个平面上。如果曲线不封闭,则认为它的起点和终点之间有一条线段将其封闭。 如果成功返回Acad::eOk。对于AutoCAD内建类,如果曲线不在一个平面内,则返回Acad::eInvalidInput。对于自定义实体类,根据如何执行可能有其他的返回值。 此函数必须可以计算曲线的一个封闭的区域。 当AutoCAD的内建类要求曲线在一个平面内,则自定义实体类则不需要这个限制,除非执行器要求。 由执行器返回ErrorStatus值,但要与内建类兼容,建议使用以下的返回值:
在默认的执行返回Acad::eNotImplemented。 |
||||||||||||||
|
AcDbCurve::getClosestPointTo
函数 virtual
Acad::ErrorStatus getClosestPointTo( const AcGePoint3d&
givenPnt, const
AcGeVector3d& direction, AcGePoint3d&
pointOnCurve, Adesk::Boolean extend
= Adesk::kFalse) const;
此函数将曲线投影至由givenPnt和normal定义的平面,找出曲线上与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最近的点并将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指定点之间的长度。 如果成功返回Acad::eOk,如果param超出范围则返回Acad::eInvalidInput。对于其他错误,执行器必须决定使用的返回值。关于可能性的ErrorStatus值,参见acdb.h头文件。 在默认的执行中,函数返回Acad::eNotImplemented。 |
||||||||||||||
|
AcDbCurve::getDistAtPoint
函数 virtual
Acad::ErrorStatus getDistAtPoint( const AcGePoint3d&
point, double& distance)
const;
计算曲线段上曲线起点和point之间的长度,并在distance中返回长度。 如果成功返回Acad::eOk,如果param超出范围则返回Acad::eInvalidInput。对于其他错误,执行器必须决定使用的返回值。关于可能性的ErrorStatus值,参见acdb.h头文件。 在默认的执行中,函数返回Acad::eNotImplemented。 |
||||||||||||||
|
AcDbCurve::getEndParam
函数 virtual
Acad::ErrorStatus getEndParam( double& endParam)
const;
此函数在派生中的执行在endParam 中返回曲线的终点的参数。 如果成功返回Acad::eOk。 在默认的执行中,函数返回Acad::eNotImplemented。 |
||||||||||||||
|
AcDbCurve::getEndPoint
函数 virtual
Acad::ErrorStatus getEndPoint( AcGePoint3d&
endPoint) const;
在此类和派生类中,此函数在endPoint中返回曲线的终点(WCS坐标中)。 如果成功返回Acad::eOk。 在默认的执行中,函数返回Acad::eNotImplemented。 |
||||||||||||||
|
AcDbCurve::getFirstDeriv
函数 virtual Acad::ErrorStatus getFirstDeriv( const AcGePoint3d&
point, AcGeVector3d&
firstDeriv) const;
此函数计算曲线在point上的一阶导数并在firstDeriv中返回,在此类或派生类中均如此。在派生类中point和firstDeriv都在WCS坐标中。 如果成功返回Acad::eOk。如果点不在曲线上,则返回Acad::eInvalidInput。其他的ErrorStatus返回值由执行器确定。 对于执行,AcGe类执行了一些必要的功能可简化任何。 在默认的执行中,函数返回Acad::eNotImplemented。 virtual
Acad::ErrorStatus getFirstDeriv( double param, AcGeVector3d&
firstDeriv) const;
在该类和派生类中,此函数用于确定曲线上param指定位置的一阶导数,并在firstDeriv中返回结果(WCS坐标中)。 如果成功返回Acad::eOk。如果param对曲线无效,则返回Acad::eInvalidInput。其他的返回值根据执行器而定。 对于执行,AcGe类提供一些必要的功能简化任务。 在默认的执行中,函数返回Acad::eNotImplemented。 |
||||||||||||||
|
AcDbCurve::getOffsetCurves
函数 virtual Acad::ErrorStatus getOffsetCurves( double offsetDist, AcDbVoidPtrArray&
offsetCurves) const;
此函数对原有曲线偏移offsetDist距离创建一个或多个实体。对多数曲线,结果是一条新的曲线。(这条新的曲线可能与原有曲线不同类。例如,偏移一个AcDbEllipse将得到一个AcDbSpline,因为偏移一个椭圆不能满足一个椭圆方程。) 在一些情况下,偏移结果应是几条曲线。要得到这样的结果,必须使用一个动态的void指针数组储存一个或多个结果实体的指针。 要使用这个指针数组,调用的应用程序需要将指针强制转换至适当的对象类型。如果只需处理一种特定的实体类型或类型集,则使用所需类的强制转换的方法检查是否每个指针可被安全地转换至那个对象类型。如果需要实际的对象类型(类名),则使用每个对象的isA()方法取得一个指向对象的AcRxClass对象的指针,这个AcRxClass对象具有一个name()方法。 如果offsetDist值为负值,通常被解释为曲线偏移为一个更小的曲线(即,对弧则将偏移至半径offsetDist,其小于原有曲线半径)。如果负值在生成偏移曲线时没有意义,则一个负值的offsetDist将被解释为沿WCS坐标中X、Y、Z的更小方向的偏移。这不是强制的,因此自定义实体可将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距离创建一个或多个实体。对多数曲线,结果是一条新的曲线。(这条新的曲线可能与原有曲线不同类。例如,偏移一个AcDbEllipse将得到一个AcDbSpline,因为偏移一个椭圆不能满足一个椭圆方程。) 在一些情况下,偏移结果应是几条曲线。要得到这样的结果,必须使用一个动态的void指针数组储存一个或多个结果实体的指针。 要使用这个指针数组,调用的应用程序需要将指针强制转换至适当的对象类型。如果只需处理一种特定的实体类型或类型集,则使用所需类的强制转换的方法检查是否每个指针可被安全地转换至那个对象类型。如果需要实际的对象类型(类名),则使用每个对象的isA()方法取得一个指向对象的AcRxClass对象的指针,这个AcRxClass对象具有一个name()方法。 如果offsetDist值为负值,通常被解释为曲线偏移为一个更小的曲线(即,对弧则将偏移至半径offsetDist,其小于原有曲线半径)。如果负值在生成偏移曲线时没有意义,则一个负值的offsetDist将被解释为沿WCS坐标中X、Y、Z的更小方向的偏移。这不是强制的,因此自定义实体可将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的法向矢量向projPlane投影创建一个新的曲线实体,并将projCurve设为指向新创建的曲线的指针。projCurve声明为AcDbCurve类型,允许返回的曲线为从AcDbCurve派生的任何类(例如,当一个AcDbArc投影至一个平面,结果为一个AcDbEllipse)。 返回的曲线是动态分配的,但仍未增加至一个AcDbDatabase中。因此,调用此函数的应用程序负责分配它们的内存。如果它们随后增加至一个数据库中,则由数据库负责分配它们的内存。另外,应用程序负责在不需要它们的时候删除它们。 如果成功返回Acad::eOk。其他的ErrorStatus值与执行相关。 在默认的执行中,函数返回Acad::eNotImplemented。 |
||||||||||||||
|
AcDbCurve::getParamAtDist
函数 virtual Acad::ErrorStatus getParamAtDist( double dist, double& param)
const;
此函数通过从曲线的起点沿曲线至需要定位的参数的距离确定曲线的参数,并在param中返回这个参数。 如果成功返回Acad::eOk。如果dist对曲线无效,则返回Acad::eInvalidInput。其他的ErrorStatus值与执行相关。 在默认的执行中,函数返回Acad::eNotImplemented。 |
||||||||||||||
|
AcDbCurve::getParamAtPoint
函数 virtual
Acad::ErrorStatus getParamAtPoint( const AcGePoint3d&
point, double& param)
const;
此函数确定曲线在point上的参数,并在param中返回这个参数。 如果成功返回Acad::eOk。如果point不在曲线上,则返回Acad::eInvalidInput。其他的ErrorStatus值与执行相关。 在默认的执行中,函数返回Acad::eNotImplemented。 |
||||||||||||||
|
AcDbCurve::getPointAtDist
函数 virtual
Acad::ErrorStatus getPointAtDist( double dist, AcGePoint3d&
point) const;
此函数在曲线上确定从曲线的开始沿曲线距离为dist的点,并在point中返回这个点。point在WCS坐标中。 如果成功返回Acad::eOk。如果dist对曲线无效,则返回Acad::eInvalidInput。其他的ErrorStatus值与执行相关。 在默认的执行中,函数返回Acad::eNotImplemented。 |
||||||||||||||
|
virtual
Acad::ErrorStatus getPointAtParam( double param, AcGePoint3d& point) const;
此函数确定曲线上对应于param参数上的点,并在point中返回点。point在WCS坐标中。 如果成功返回Acad::eOk。如果参数不在曲线的范围则返回Acad::eInvalidInput。其他的ErrorStatus值与执行相关。 在默认的执行中,函数返回Acad::eNotImplemented。 |
||||||||||||||
|
AcDbCurve::getProjectedCurve
函数 virtual
Acad::ErrorStatus getProjectedCurve( const AcGePlane&
projPlane, const
AcGeVector3d& projDir, AcDbCurve*&
projCrv) const;
此函数将曲线平行于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和secDeriv都在WCS坐标中。 如果成功返回Acad::eOk。如果point不在曲线上,则返回Acad::eInvalidInput。其他的ErrorStatus返回值与执行器相关。 对于执行,AcGe类提供一些必要的功能简化工作任务。 在默认的执行中,函数返回Acad::eNotImplemented。 virtual
Acad::ErrorStatus getSecondDeriv( double param, AcGeVector3d&
secDeriv) const;
计算曲线上由param指定位置上二阶导数,并并将secDeriv设为结果。point和secDeriv都在WCS坐标中。 如果成功返回Acad::eOk。如果param对曲线无效,则返回Acad::eInvalidInput。其他的ErrorStatus返回值与执行器相关。 对于执行,AcGe类提供一些必要的功能简化工作任务。 在默认的执行中,函数返回Acad::eNotImplemented。 |
||||||||||||||
|
AcDbCurve::getSpline 函数 virtual
Acad::ErrorStatus getSpline( AcDbSpline*&
spline) const;
此函数创建一个新的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数必须包含曲线上将作为新创建的子曲线的起点和终点的点的参数。第一条子曲线从原始曲线的起点开始,在params数组中的第一个参数结束。第二条子曲线从params数组中的第一个参数开始,在params数组中的第二个参数结束。第三条子曲线从第二个参数开始,在第三个参数结束,以此类推。最后一条子曲线从params数组中的最后一个参数开始,在原始曲线的终点结束。 如果连续的参数是相同的(包括原始的曲线的起点至第一个参数和最后一个参数至原始曲线的终点),则在这一对参数上不会创建子曲线。 指向所有新的曲线的指针增加至curveSegments数组。 在curveSegments数组中返回的实体是动态分配的,但仍未增加至一个AcDbDatabase中。因此,调用此函数的应用程序负责分配它们的内存。如果它们随后增加至一个数据库中,则由数据库负责分配它们的内存。另外,应用程序负责在不需要它们的时候删除它们。 根据此函数如何执行,函数可能返回一个非Acad::eOk的ErrorStatus,并仍增加一些指向子曲线的指针至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;
此函数创建作为原始曲线的子曲线的一个或多个实体。点数组必须包含曲线上的点,作为新创建的子曲线的起点或终点。第一条子曲线从原始曲线的起点开始,在params数组中的第一个参数结束。第二条子曲线从params数组中的第一个参数开始,在params数组中的第二个参数结束。第三条子曲线从第二个参数开始,在第三个参数结束,以此类推。最后一条子曲线从params数组中的最后一个参数开始,在原始曲线的终点结束。 如果连续的参数是相同的(包括原始的曲线的起点至第一个参数和最后一个参数至原始曲线的终点),则在这一对参数上不会创建子曲线。 指向所有新的曲线的指针增加至curveSegments数组。 在curveSegments数组中返回的实体是动态分配的,但仍未增加至一个AcDbDatabase中。因此,调用此函数的应用程序负责分配它们的内存。如果它们随后增加至一个数据库中,则由数据库负责分配它们的内存。另外,应用程序负责在不需要它们的时候删除它们。 根据此函数如何执行,函数可能返回一个非Acad::eOk的ErrorStatus,并仍增加一些指向子曲线的指针至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 中返回曲线上的起点参数。 如果成功返回Acad::eOk。 在默认的执行中,函数返回Acad::eNotImplemented。 |
||||||||||||||
|
AcDbCurve::getStartPoint
函数 virtual
Acad::ErrorStatus getStartPoint( AcGePoint3d&
startPoint) const;
此函数在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。 |