CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2018 开发者帮助

实现拉伸点函数

2024-5-31 18:27| 发布者: admin| 查看: 19| 评论: 0|原作者: admin|来自: AutoCAD

实现拉伸点函数

实体的拉伸点集通常是其夹持点的子集。当用户调用 STRETCH 命令时,该函数用于返回为所选实体定义的拉伸点。对于许多实体,抓握模式和拉伸模式是相同的。函数和函数的实现是调用 your 和 函数。getStretchPoints()AcDbEntity::getStretchPoints()AcDbEntity::moveStretchPointsAt()subGetGripPoints() subMoveGripPointsAt()

stretch 函数的签名为

virtual Acad::ErrorStatus
AcDbEntity::subGetStretchPoints(
    AcGePoint3dArray& stretchPoints) const;
 
virtual Acad::ErrorStatus
AcDbEntity::subMoveStretchPointsAt(
    const AcDbIntArray&  indices,
    const AcGeVector3d&  offset);

您不需要覆盖 的 和 函数;它们默认为 AND 函数。subGetStretchPoints()subMoveStretchPointsAt()AcDbEntitygetGripPoints()transformBy()

自定义类将重写这些函数,如本节中的示例所示。该函数返回多边形的顶点,但不返回中心。该函数检查是否选择了所有拉伸点。如果有,它将调用该函数。否则,它将调用该函数。AsdkPolysubGetStretchPoints()subMoveStretchPointsAt()transformBy()moveGripPointsAt()

 // Stretch points are the same as grip points except 
 // for the center of the polygon. 
 // 
 Acad::ErrorStatus 
 AsdkPoly::subGetStretchPoints( 
     AcGePoint3dArray& stretchPoints) const 
 { 
     assertReadEnabled(); 
     Acad::ErrorStatus es; 
  
     if ((es = getVertices3d(stretchPoints)) 
         != Acad::eOk) 
     { 
         return es; 
     } 
  
     // Remove the duplicate point at the start and end. 
     // 
     stretchPoints.removeAt(stretchPoints.length() - 1); 
     return es; 
 } 
  
 Acad::ErrorStatus 
 AsdkPoly::subMoveStretchPointsAt( 
     const AcDbIntArray& indices, 
     const AcGeVector3d& offset) 
 { 
     return moveGripPointsAt(indices, offset); 
 } 
  

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-6-27 16:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部