明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3682|回复: 3

AcDbLine和AcDb2dPolyline怎么转换为AcDbPolyline?

[复制链接]
发表于 2004-6-21 10:10 | 显示全部楼层 |阅读模式
AcDbLine和AcDb2dPolyline怎么转换为AcDbPolyline?


谢谢!
发表于 2004-7-25 22:19 | 显示全部楼层
//我所编写的一部分,AcDb2dPolyline转换重要的是BULG //AcDbLine很简单,只是取两端点坐标,从略 if (pobj->isKindOf(AcDb2dPolyline::desc()))
{
AcDb2dPolyline *pLy2d;
AcDbObjectIterator *pVertIter;
pLy2d=AcDb2dPolyline::cast(pobj);
pVertIter=pLy2d->vertexIterator();
AcDb2dVertex *pVertex;
for(vertnum=0;!pVertIter->done();vertnum++,pVertIter->step())
{
vertId=pVertIter->objectId();
acdbOpenObject(pVertex,vertId,AcDb::kForRead);
pt=pVertex->position();
if (vertnum==0)
{
linewidth=pVertex->endWidth();
}
mypt.append(pt);
pVertex->close();
}
pLy2d->upgradeOpen();
pLy2d->erase(Adesk::kTrue);
pLy2d->close();
delete pVertIter;
} for(i=0;i<vertnum;i++)
{
curpt=mypt.at(i);
pkpt.x=curpt.x;
pkpt.y=curpt.y;
bg=0;
if (i>0 && i<vertnum-1)
{
//bgstart bgend--BULG求法从略 }
pPoly->addVertexAt(i,pkpt,bg);
}
if (vertnum>2)
{
pkpt.x=startpt.x;
pkpt.y=startpt.y;
pPoly->addVertexAt(0,pkpt);
pPoly->setBulgeAt(1,bgstart);
}

评分

参与人数 1威望 +1 金钱 +1 收起 理由
zfbj + 1 + 1 【好评】好程序

查看全部评分

发表于 2004-7-26 11:25 | 显示全部楼层
2dPolyline->olyline Acad::ErrorStatus CDbGeCurve::Poly2dToLWPoly(AcDb2dPolyline *pPoly,AcDbPolyline *& pLwpoly)
{
if (!pPoly)
return Acad::eInvalidInput; Acad::ErrorStatus ret; AcDb::Poly2dType type;
type=pPoly->polyType();
if ((type==AcDb::k2dSimplePoly)||(type==AcDb::k2dFitCurvePoly)){
pLwpoly=new AcDbPolyline;
ret=pLwpoly->convertFrom((AcDbEntity *&)pPoly,Adesk::kFalse);
if (ret!=Acad::eOk){
delete pLwpoly;
pLwpoly=NULL;
return Acad::eNotImplementedYet;
}
}
else{
return Acad::eNotImplementedYet;
}
return Acad::eOk;
}
发表于 2015-5-4 23:26 | 显示全部楼层
谢谢  受用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 00:06 , Processed in 0.324549 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表