ObjectARX2010画多线段

本文介绍了一个用于创建轻量级多段线的函数,并详细展示了如何通过设置顶点、宽度和凸度来定义多段线的形状。此外,还提供了一种方法来旋转指定的实体,该方法使用了坐标变换矩阵来实现旋转操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//添加函数,用于创建轻量多段线
AcDbObjectId CircleLine::CreatePolyline(AcGePoint2dArray points, double width) 

int numVertices = points.length();   
AcDbPolyline *pPoly = new AcDbPolyline(numVertices); 


double bulge[5] = {0,-1,0,0,0.5};  //凸度:0.5是1/4圆弧,1是半圆
for (int i = 0; i < numVertices; i++) 

pPoly->addVertexAt(i, points.at(i), bulge[i], width, width); 
}   
AcDbObjectId polyId;
polyId = CircleLine::PostToModelSpace(pPoly); 


return polyId;  

}

//按照指定的角度(用弧度值表示)旋转指定的实体,其实现代码为: 
Acad::ErrorStatus CircleLine::Rotate(AcDbObjectId entId, AcGePoint2d ptBase, double rotation) 

AcGeMatrix3d xform; 
AcGeVector3d vec(0, 0, 1); 
AcGePoint3d point;
point.x = ptBase.x;
point.y = ptBase.y;
point.z = 0;
xform.setToRotation(rotation, vec, point);
AcDbEntity *pEnt;
Acad::ErrorStatus es = acdbOpenObject(pEnt, entId, AcDb::kForWrite, false); 
pEnt->transformBy(xform);
pEnt->close();   
return es;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值