//添加Hatch AcDbObjectId CreateHatch( AcDbObjectId dbOId, char cLayer[], char cPattern[] = "SOLID", int nColor = 256, double dAngle = 0.0, double dScale = 1.0, AcDbDatabase * pDbDatab = acdbHostApplicationServices()->workingDatabase()) { AcCmColor CmC; AcDbObjectId DbOId; AcDbObjectIdArray DbOIdA(0, 2); AcDbBlockTable * pDbBT; AcDbBlockTableRecord * pDbBTR; AcGeVector3d normal(0.0, 0.0, 1.0); DbOIdA.append(dbOId); AcDbHatch* pDbHat = new AcDbHatch(); pDbHat->setDatabaseDefaults(); pDbHat->setAssociative(Adesk::kTrue); // BUG: doesn't do squat! have to set the reactor yourself to get associativity! pDbHat->appendLoop(AcDbHatch::kExternal, DbOIdA); pDbHat->setPatternScale(dScale); pDbHat->setPatternAngle(dAngle); pDbHat->setPattern(AcDbHatch::kPreDefined, cPattern); pDbHat->setNormal(normal); pDbHat->evaluateHatch(); // crucial call or nothing gets displayed! pDbDatab->getSymbolTable(pDbBT, AcDb::kForRead); pDbBT->getAt(ACDB_MODEL_SPACE, pDbBTR, AcDb::kForWrite); pDbBTR->appendAcDbEntity(DbOId, pDbHat); pDbHat->setLayer(cLayer); CmC.setColorIndex(nColor); ((AcDbEntity *)pDbHat)->setColor(CmC); pDbBT->close(); pDbBTR->close(); pDbHat->close(); return DbOId; } //************************************************************************ //函数名称:drawDonutAtPoint //函数类型:void //返回值: //功能描述: //函数作者:Darcy //创建日期:2003-x-x //参数列表: //变量名:nPt 变量类型:const AcGePoint2d& 变量说明:中点 //变量名:nRadius 变量类型:const double 变量说明:半径 //************************************************************************ void drawDonutAtPoint(const AcGePoint2d& nPt,const double nRadius) { AcGePoint2d pt; AcDbPolyline * pPline = new AcDbPolyline(2); pt = nPt; pt.x -= nRadius; pPline->addVertexAt( 0 , pt , 1.0 , nRadius*2.0 , nRadius*2.0); pt.x += nRadius * 2.0; pPline->addVertexAt( 1 , pt , 1.0 , nRadius*2...