切割闭合器怎么用2021年1月1日 AutoCAD.Net/C#.Net QQ群:193522571多段线动态切割闭合区域

新闻资讯2026-04-21 02:24:19

切割闭合器怎么用2021年1月1日 AutoCAD.Net/C#.Net QQ群:193522571多段线动态切割闭合区域_https://www.jmylbn.com_新闻资讯_第1张

 

#include "StdAfx.h"
#include "StdArx.h"
#include <dbpl.h>
#include "....CommonOthersConvertUtil.h"
#include "....CommonDocumentDwgDatabaseUtil.h"
#include <dbents.h>
#include <dbregion.h>
#include "....CommonEntityRegionUtil.h"

// This is command 'INTERSECT1'
void ZffMyProjectintersect1()

AcDbVoidPtrArray curves;
int num=pPolyline->numVerts();
for (int i=0;i<num;i++)

pPolyline->getSplitCurves(pts,curves);
pPolyline->close();
AcDbObjectIdArray curvesId;
AcDbCurve *pCurve=NULL;
for (i=0;i<curves.length();i++)
{
pCurve=static_cast<AcDbCurve*>(curves[i]);
curvesId.append(CDwgDatabaseUtil::PostToModelSpace(pCurve));
}
pCurve->close();

acedEntSel("
请选择被截取多段线!",polyLinename2,pnt2);
acdbGetObjectId(polyLineId,polyLinename2);
acdbOpenObject(pEnt,polyLineId,AcDb::kForWrite);
if (pEnt->isKindOf(AcDbPolyline::desc()))
{
pPoly=AcDbPolyline::cast(pEnt);
pEnt->close();
//pPoly->intersectWith(pPolyline,AcDb::kOnBothOperands,pts,0,0);
}
AcDbVoidPtrArray curves2;
num=pPoly->numVerts();
for (i=0;i<num;i++)

pPoly->getSplitCurves(pts2,curves2);
pPoly->close();
AcDbObjectIdArray curvesId2;
AcDbCurve *pCurve2=NULL;
for (i=0;i<curves2.length();i++)
{
pCurve2=static_cast<AcDbCurve*>(curves2[i]);
curvesId2.append(CDwgDatabaseUtil::PostToModelSpace(pCurve2));
}
pCurve2->close();
AcDbObjectIdArray regId=CRegionUtil::Add(curvesId);
AcDbObjectIdArray regId2=CRegionUtil::Add(curvesId2);
for (i=0;i<curvesId.length();i++)
{
acdbOpenObject(pCurve,curvesId[i],AcDb::kForWrite);
pCurve->erase();
pCurve->close();
}
for (i=0;i<curvesId2.length();i++)
{
acdbOpenObject(pCurve2,curvesId2[i],AcDb::kForWrite);
pCurve2->erase();
pCurve2->close();
}
acdbOpenObject(pRegion1,regId[0],AcDb::kForWrite);
acdbOpenObject(pRegion2,regId2[0],AcDb::kForWrite);
pRegion1->booleanOper(AcDb::kBoolIntersect,pRegion2);
pRegion1->close();
pRegion2->close();
}