AcDb3dPolyline类
AcDb3dPolyline类表示AutoCAD中的3D多段线实体。
注意:控制应用程序(controlling application)应显示地删除非数据库驻留的复合实体的子实体。否则将导致小部分的内存泄漏。
注意:不要派生此类。试图派生此类将使应用程序终止AutoCAD。
继承自
AcDbCurve
包含文件
dbents.h
参见
AcDbObject, AcDbEntity
成员
AcDb3dPolyline::~AcDb3dPolyline 函数 ~AcDb3dPolyline(); 析构器。 |
||||||||||||
AcDb3dPolyline::AcDb3dPolyline 函数 AcDb3dPolyline( AcDb::Poly3dType type, AcGePoint3dArray& vertices, Adesk::Boolean closed = Adesk::kFalse);
此建构器使用由type指定的类型和vertices数组中的顶点创建一条的3d多段线。如果closed为Adesk::kTrue,则多段线将闭合(即,在最后一个顶点至第一个顶点之间有绘一条线),否则多段线将开放。 可能的类型值如下表:
AcDb3dPolyline(); 默认建构器。创建一个开放的多段线,且类型初始化为AcDb::k3dSimplePoly。 |
AcDb3dPolyline::appendVertex 函数 Acad::ErrorStatus appendVertex( AcDbObjectId& objId, AcDb3dPolylineVertex* pNewVert);
此函数将pNewVert指向的AcDb3dPolylineVertex对象添加至多段线的顶点列表中,设置多段线为顶点的拥有者,并将顶点增加至包含多段线的AcDbDatabase中(对于此函数,多段线必须为数据库驻留)。 增加的顶点必须在appendVertex()调用返回后由调用的应用程序显示地关闭。 如果成功返回Acad::eOk。如果多段线仍不是数据库驻留,则返回Acad::eNoDatabase。 Acad::ErrorStatus appendVertex( AcDb3dPolylineVertex* unnamed);
此函数将pNewVert指向的AcDb3dPolylineVertex对象增加至多段线的顶点列表中,并将多段线设为顶点拥有者。另外,如果多段线驻留在AcDbDatabase中,则顶点将被增加至相同的数据库中。如果多段线不是数据库驻留,则在此多段线被增加至一个数据库中时,顶点也将被增加。 如果多段线是数据库驻留,则增加的顶点必须在appendVertex()返回后由调用的应用程序显示地关闭。如果多段线不是数据库驻留,则不需要关闭顶点,因为它还没有被增加至数据库中(对这样的顶点调用closd()将返回Acad::eNoDatabase)。 如果成功返回Acad::eOk。 |
||||||||||
AcDb3dPolyline::convertToPolyType 函数 Acad::ErrorStatus convertToPolyType( AcDb::Poly3dType newVal);
使用splineFit()方法转换多段线至newType指定的类型。 可能值如下表:
如果成功返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。 |
||||||||||
AcDb3dPolyline::insertVertexAt 函数 Acad::ErrorStatus insertVertexAt( AcDbObjectId& newVertId, const AcDbObjectId& indexVertId, AcDb3dPolylineVertex* pNewVertex);
此函数在对象为indexVertId的AcDb3dPolylineVertex对象后将pNewVertex指向的AcDb3dPolylineVertex对象插入至多段线的顶点列表中,将多段线设为顶点的拥有者,并将顶点增加至包含多段的数据库中(对于此函数,多段线必须为数据库驻留)。 要在多段线的开始处插入一个顶点,可将AcDbObjectId::kNull传递给indexVertId参数。 插入的顶点必须在insertVertexAt()返回后由调用的应用程序显示地关闭。 如果成功返回Acad::eOk。如果多段线不是数据库驻留,则返回Acad::eNoDatabase。 Acad::ErrorStatus insertVertexAt( const AcDb3dPolylineVertex* pIndexVert, AcDb3dPolylineVertex* pNewVertex);
此函数在pIndexVert指向的AcDb3dPolylineVertex对象后将pNewVertex指向的AcDb3dPolylineVertex对象插入至多段线的顶点列表中,将多段线设为顶点的拥有者。另外,如果多段线驻留在AcDbDatabase中,则顶点将被增加至相同的数据库中。如果多段线不是数据库驻留,则在此多段线被增加至一个数据库中时,顶点也将被增加。 要在多段线的开始处插入一个顶点,将NULL值传递至pIndexVert参数。 如果多段线是数据库驻留,则增加的顶点必须在appendVertex()返回后由调用的应用程序显示地关闭。如果多段线不是数据库驻留,则不需要关闭顶点,因为它还没有被增加至数据库中(对这样的顶点调用close()将返回Acad::eNoDatabase)。 如果成功返回Acad::eOk。 |
||||||||||
AcDb3dPolyline::makeClosed 函数 Acad::ErrorStatus makeClosed(); 此函数将多段线设为闭合(在多段线的起点和中点间将绘出一条线段,使多段线成为一多边形)。 这将设置DXF群组码的第一位。 如果成功返回Acad::eOk。 |
||||||||||
AcDb3dPolyline::makeOpen 函数 Acad::ErrorStatus makeOpen(); 此函数将多段线设为开放。在多段线的起点和中点间没有一条线段,因此多段线不会形成一多边形。 这将清除DXF群组码的第一位。 如果成功返回Acad::eOk。 |
||||||||||
AcDb3dPolyline::setPolyType 函数 Acad::ErrorStatus setPolyType( AcDb::Poly3dType type);
将type设为多段线的AcDb::Poly3dType。AcDb::Poly3dType表示此多段线的样条曲线拟合类型。 可能值如下表:
如果成功返回Acad::eOk。 |
||||||||||
AcDb3dPolyline::splineFit 函数 Acad::ErrorStatus splineFit( AcDb::Poly3dType splineType, Adesk::Int16 splineSegs);
此函数删除所有已有的任何样条曲线或曲线拟合顶点,将所有剩余的顶点转换至样条曲线控制顶点,并生成一个新的样条曲线拟合顶点集。结果多段线为穿过新的顶点集的样条曲拟合。此函数与PEDIT命令的"Spline fit"选项执行相同的操作除了此函数使用splineType和splineSegs作为splineFit操作的控制参数,而不是使用splinetype和splinesegs数据库/系统变量 如果成功返回Acad::eOk。 Acad::ErrorStatus splineFit(); 此函数删除所有已有的任何样条曲线或曲线拟合顶点,将所有剩余的顶点转换至样条曲线控制顶点,并生成一个新的样条曲线拟合顶点集。结果多段线为穿过新的顶点集的样条曲拟合。此函数与PEDIT命令的"Spline fit"选项执行相同的操作。 如果成功返回Acad::eOk。 |
||||||||||
AcDb3dPolyline::straighten 函数 Acad::ErrorStatus straighten(); 此函数从多段线中删除所有任何样条曲线或曲线拟合顶点,并将所有剩余的顶点设为简单顶点。此函数与PEDIT命令的"Decurve"选项执行相同的操作。 如果成功返回Acad::eOk。 |
AcDb3dPolyline::getClassID 函数 virtual Acad::ErrorStatus getClassID( CLSID* pClsid) const;
Description to come。 |
||
AcDb3dPolyline::worldDraw 函数 virtual Adesk::Boolean worldDraw( AcGiWorldDraw* pWd);
Description to come。 |
AcDb3dPolyline::polyType 函数 AcDb::Poly3dType polyType() const; 返回AcDb::Poly3dType,表示此3D多段线的样条曲线拟合类型。 可能的AcDb::Poly3dType值如下表:
|
AcDb3dPolyline::openSequenceEnd 函数 Acad::ErrorStatus openSequenceEnd( AcDbSequenceEnd*& pSeqend, AcDb::OpenMode openMode);
此函数提供对多段线的AcDbSequenceEnd实体的访问,以取得或设置xdata。此函数将试图在openMode指定的模式下打开多段线的Seqend。 openMode参数为以下之一: AcDb::kForRead AcDb::kForWrite AcDb::kForNotify 如果打开操作成功,则pSeqend将设为AcDbSequenceEnd对象的地址并返回Adesk::eOk。 如果试图以AcDb::kForRead模式打开,Seqend已打开且读取了最大的次数(256次),则打开众所周知且此函数返回Acad::eAtMaxReaders。 如果Seqend当前以AcDb::kForNotify模式打开,则打开将失败且返回Acad::eWasNotifying。 如果Seqend当前包含在一个Undo操作中,则打开将失败且返回Acad::eWasOpenForUndo。 如果Seqend当前以AcDb::kForWrite模式打开,则打开将失败且返回Acad::eWasOpenForWrite. 注意:这个功能只与已有的,使用AcDbSequenceEnd对象进行xdata储存的AutoLISP应用程序兼容。 不建议在AcDbSequenceEnd对象上储存xdata。xdata可以贴附在AcDb3dPolyline对象或任何顶点上,或使用扩展词典。 |
||||||||
AcDb3dPolyline::openVertex 函数 Acad::ErrorStatus openVertex( AcDb3dPolylineVertex*& pVertex, AcDbObjectId vertId, AcDb::OpenMode openMode, bool openErasedOne = false);
此函数提供对多段线顶点的访问。此函数使用一个空的指针进行传递。要打开的顶点的对象ID为vertId。打开的模式为openMode。openErasedOne是一个布尔值,表示是否打开已删除的顶点. openMode参数为以下之一: AcDb::kForRead AcDb::kForWrite AcDb::kForNotify 如果打开操作成功,则pVertex将设为访问的顶点对象的地址并返回Adesk::eOk。 如果openErasedEntity为Adesk::kFalse,则打开一个已删除的顶点将失败且此函数将返回Acad::eWasErased。 如果试图以AcDb::kForRead模式打开,Seqend已打开且读取了最大的次数(256次),则打开众所周知且此函数返回Acad::eAtMaxReaders。 如果顶点当前以AcDb::kForNotify模式打开,则打开将失败且返回Acad::eWasNotifying。 如果顶点当前包含在一个Undo操作中,则打开将失败且返回Acad::eWasOpenForUndo。 如果顶点当前以AcDb::kForWrite模式打开,则打开将失败且返回Acad::eWasOpenForWrite. 如果objId为AcDbObjectId::kNull,则打开将失败且此函数返回Acad::eNullObjectId。 注意:如果需要,acdbOpenObject()和acdbOpenAcDbEntity()都可以直接在顶点上使用。 |
||||||||
AcDb3dPolyline::vertexIterator 函数 AcDbObjectIterator * vertexIterator() const; AcDb2dPolyline::vertexIterator 函数 AcDbObjectIterator * vertexIterator() const; 此函数创建一个新的AcDbObjectIterator集,用于遍历多段线的顶点,并返回一个指象刚创建的遍历器对象的指针。调用此函数的程序程序负责使用C++的delete操作符释放遍历器对象。 |