乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 75|回复: 4

直线、圆弧如何转换成多义线

[复制链接]

2

主题

10

帖子

1

银币

初来乍到

Rank: 1

铜币
18
发表于 2010-6-21 11:27:00 | 显示全部楼层 |阅读模式
如题直线(AcDbLine)圆弧(AcDbArc)如何转换成多义线(AcDbPolyline)?
我想给直线添加宽度,故转换为多义线(pline->setLineWeight()不是我的答案)
我想用多义线的pPolyline->setWidthsAt(i,PL_Width,PL_Width);
跪求转换方法,
回复

使用道具 举报

12

主题

228

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
276
发表于 2010-6-21 20:41:00 | 显示全部楼层
AcDbObjectId PostToMS(AcDbEntity *pEnt)
{
AcDbBlockTable *pBlkTbl;
acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl,
  AcDb::kForRead);
AcDbBlockTableRecord *pMS;
pBlkTbl->getAt(ACDB_MODEL_SPACE,pMS,AcDb::kForWrite);
pBlkTbl->close();
AcDbObjectId EntID;
pMS->appendAcDbEntity(EntID,pEnt);
pMS->close();
return EntID;
}

static void ROYMyTest_test1(void)
{
  // Add your code for command ROYMyTest._test1 here
  ads_point pt;
  ads_name ename;
  AcDbObjectId EntID;
  AcDbEntity *pEnt=NULL;
  if (acedEntSel(_T("\nSelect a line or arc:"),ename,pt)!=RTNORM
   || acdbGetObjectId(EntID,ename)!=Acad::eOk
   || acdbOpenAcDbEntity(pEnt,EntID,AcDb::kForRead)!=Acad::eOk)
   return;
  if (!(pEnt->isKindOf(AcDbLine::desc()) || pEnt->isKindOf(AcDbArc::desc())))
  {
   pEnt->close();
   return;
  }
  AcDbLine *pLine;
  AcDbArc *pArc;
  AcGePoint3d ptStart,ptEnd;
  double dBugle,startAngle,endAngle,dAngle;
  if (pEnt->isKindOf(AcDbLine::desc()))
  {
   pLine=AcDbLine::cast(pEnt);
   if (pLine!=NULL)
   {
    ptStart=pLine->startPoint();
    ptEnd=pLine->endPoint();
    dBugle=0;
   }
  }
  else
  {
   pArc=AcDbArc::cast(pEnt);
   if (pArc!=NULL)
   {
    pArc->getStartPoint(ptStart);
    pArc->getEndPoint(ptEnd);
    startAngle=pArc->startAngle();
    endAngle=pArc->endAngle();
    if (endAngleupgradeOpen()!=Acad::eOk)
  {
   pEnt->close();
   return;
  }
  pEnt->erase();
  pEnt->close();
  AcDbPolyline *pPLine;
  pPLine=new AcDbPolyline(2);
  pPLine->addVertexAt(0,asPnt2d(asDblArray(ptStart)),dBugle);
  pPLine->addVertexAt(1,asPnt2d(asDblArray(ptEnd)));
&nbspostToMS((AcDbEntity*)pPLine);
  pPLine->close();
}
回复

使用道具 举报

12

主题

228

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
276
发表于 2010-6-21 20:42:00 | 显示全部楼层
以上代码仅供参考!
回复

使用道具 举报

2

主题

10

帖子

1

银币

初来乍到

Rank: 1

铜币
18
发表于 2010-6-22 16:46:00 | 显示全部楼层
首先感谢

                               
登录/注册后可看大图


无私的把代码分享出来
回复

使用道具 举报

2

主题

10

帖子

1

银币

初来乍到

Rank: 1

铜币
18
发表于 2010-6-22 16:51:00 | 显示全部楼层
困惑我很久以致我自己的代码不能成功转换的就是少了:endAngle+=8*atan(1.0)这句,导致dBugle不对。
非常感谢。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 18:56 , Processed in 0.155875 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表