- 积分
- 297
- 明经币
- 个
- 注册时间
- 2015-8-10
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
这是小弟代码,新手很多不懂!
我想画一个矩形,然后求出这个矩形与所有实体的交点,求出交点个数。
void cj1()//矩形与选择集
{
ads_point pt2,pt3;
acedGetPoint(NULL,_T("请输入第一个点"),pt2);
acedGetCorner(pt2,_T("请输入第二个点"),pt3);//获得第二个角点
AcGePoint3d pt4 = asPnt3d(pt2);
AcGePoint3d pt5 = asPnt3d(pt3);
AcGePoint3d pt6,pt7;
pt6.x=pt5.x;
pt7.x=pt4.x;
pt6.y=pt4.y;
pt7.y=pt5.y;
AcGePoint3dArray points;
points.append(pt4);
points.append(pt6);
points.append(pt5);
points.append(pt7);
points.append(pt4);
AcDbObjectId entId1=CreateEnt::Create3dPolyline(points);
ads_name ent1;
acdbGetObjectId(entId1, ent1);
AcDbEntity *pEnt1 = NULL;
acdbOpenObject(pEnt1, entId1, AcDb::kForWrite);
ads_name ss;
AcDbObjectIdArray objIds;
acedSSGet(_T("A"),NULL,NULL,NULL,ss);
long Length=0;
acedSSLength(ss,&Length);
if (Length==0)
{
return ;
}
ads_name ent;
AcDbEntity* pEnt = NULL;
AcDbObjectId objId;
for(int i=0;i<Length;i++)
{
AcDbCurve* pLinePre = NULL;
acedSSName(ss, 0, ent);
acdbGetObjectId(objId, ent);
objIds.append(objId);
pLinePre = AcDbCurve::cast(pEnt);
if(Acad::eOk == acdbOpenObject(pLinePre, objId, AcDb::kForWrite))
{
AcGePoint3dArray ptArr;
pEnt1->intersectWith(pLinePre,AcDb::kOnBothOperands,ptArr);
pEnt->close();
}
int num=points.length();
acedSSFree(ss);
acutPrintf(L"\n交点数量为%d",num);
pEnt1->close();
}
}
|
|