//设置为相同的属性
//将pTargetEnt设置为和pSourceEnt设置为一样的属性
void SameEntityAttr(AcDbEntity* pTargetEnt,AcDbEntity* pSourceEnt)
{
pTargetEnt->setColor(pSourceEnt->color());
pTargetEnt->setLayer(pSourceEnt->layer());
pTargetEnt->setLinetype(pSourceEnt->linetype());
pTargetEnt->setLineWeight(pSourceEnt->lineWeight());
#if _MSC_VER>=1400
pTargetEnt->setMaterial(pSourceEnt->materialId());
#endif
}
AcDbPolyline* Poly2dToPline(AcDb2dPolyline* pPolyline2d)
{
AcDbObjectIterator *pObjIter = pPolyline2d->vertexIterator();
if(pObjIter == NULL)
return NULL;
AcDbPolyline* pLine=new AcDbPolyline();
pLine->setDatabaseDefaults(pPolyline2d->database());
SameEntityAttr(pLine,pPolyline2d);
AcDb::Poly2dType PolyType = pPolyline2d->polyType();
AcDb2dVertex *pVertex;
unsigned int index=0;
//遍历点,并读取其凸度
for(pObjIter->start();!pObjIter->done();pObjIter->step())
{
if(pObjIter->entity()) return 0;
if(acdbOpenObject(pVertex,pObjIter->objectId(),AcDb::kForRead) != Acad::eOk) return 0;
if(PolyType == AcDb::k2dSimplePoly)
{
if(pVertex->vertexType() != AcDb::k2dVertex)
{
pVertex->close();
continue;
}
}
else if((PolyType == AcDb::k2dCubicSplinePoly) ||
(PolyType == AcDb::k2dQuadSplinePoly))
{
if(pVertex->vertexType() != AcDb::k2dSplineCtlVertex)
{
pVertex->close();
continue;
}
}
else if(PolyType == AcDb::k2dFitCurvePoly)
{
}
AcGePoint2d pt(pVertex->position().x,pVertex->position().y);
pLine->addVertexAt(index,pt,pVertex->bulge(),pVertex->startWidth(),pVertex->endWidth());
index++;
pVertex->close();
}
return pLine;
}


杭州格原