得到选中的实体,修改实体如等分线段
AcGeVector3d是点阵的集合,通过等分点的差集得到。
新的点可以通过点与点阵相差得到。
static void ArxProject2partLine(void)
{
ads_name entName;
ads_point pt;
acedEntSel( _T("\n选择:"),entName,pt);//得到选中的实体
AcDbObjectId ObjId;//得到实体ID
if( acdbGetObjectId(ObjId,entName) != Acad::eOk )//如果没有选中的实体则返回
{
acutPrintf( _T("\nno"));
return;
}
AcDbEntity* pEnt;//得到实体
if( acdbOpenObject(pEnt,ObjId,AcDb::kForRead) == Acad::eOk)
{
acutPrintf( _T("\nok"));
AcDbLine* pLine = (AcDbLine* )pEnt;//强制转换
AcGePoint3d ptStart = pLine->startPoint();//得到起点
AcGePoint3d ptEnd = pLine->endPoint();
pEnt->close();
//根据点和线的方向生成点组,绘制线段
int nPart = 5;//五等分
AcGeVector3d Vect = (ptEnd - ptStart)/nPart;//矩阵,点与点的差集平分可得到
for (int n=0; n<nPart; n++)
{