实现拉伸点函数 
实体的拉伸点集通常是其夹持点的子集。当用户调用 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); 
 } 
  
    父主题: | 
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1   苏公网安备32011402011833)
GMT+8, 2025-11-4 23:55
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.