明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1582|回复: 2

[求助]如何获取当前dwg的名字?

[复制链接]
发表于 2003-9-26 18:55:00 | 显示全部楼层 |阅读模式
如何获取当前dwg的名字?另外如何获取polyline实体的节点、判断是否为封闭线、判断是二维还是三维?
谢谢
发表于 2003-9-27 10:15:00 | 显示全部楼层
获取Polyline实体节点:
void readplinevertex(AcDbObjectId plineid,std::vector<AcGePoint3d> *verpt)
{//读取给定多义线ID的顶点数据,保存在verpt中
        AcDbObject *pline;
        acdbOpenObject(pline,plineid,AcDb::kForRead);
       
        if(pline->isKindOf(AcDb2dPolyline::desc())){
                pline->close();
                AcDb2dPolyline *pline;
                acdbOpenObject(pline,plineid,AcDb::kForRead);
                AcDbObjectIterator *piter=pline->vertexIterator();
                pline->close();
                AcDbObjectId verid;
                AcDb2dVertex *pver;
                for(long i=0;!piter->done();i++,piter->step()){
                        verid=piter->objectId();
                        acdbOpenObject(pver,verid,AcDb::kForRead);
                        verpt->push_back(pver->position());
                        pver->close();
                }
                delete piter;
        }else if(pline->isKindOf(AcDb3dPolyline::desc())){
                pline->close();
                AcDb3dPolyline *pline;
                acdbOpenObject(pline,plineid,AcDb::kForRead);
                AcDbObjectIterator *piter=pline->vertexIterator();
                pline->close();
                AcDbObjectId verid;
                AcDb3dPolylineVertex *pver;
                for(long i=0;!piter->done();i++,piter->step()){
                        verid=piter->objectId();
                        acdbOpenObject(pver,verid,AcDb::kForRead);
                        verpt->push_back(pver->position());
                        pver->close();
                }
                delete piter;
        }else{//AcDbPolyline Object
                pline->close();
                AcDbPolyline *pline;
                acdbOpenObject(pline,plineid,AcDb::kForRead);
                AcGePoint3d pt;
                for(long i=0;i<pline->numVerts();i++){
                        pline->getPointAt(i,pt);
                        verpt->push_back(pt);
                }
                pline->close();
        }
}
上面函数中本身已包含2D合3D的判断。
判断是否封闭:
   AcDbPolyline *pline;
  acdbOpenObject(pline,objid,AcDb::kForRead);
  if(pline->isClosed()==Adesk::kTrue)//是否封闭多义线
{}
pline->close();
 楼主| 发表于 2003-9-27 13:17:00 | 显示全部楼层
谢谢!还有一个问题是3d、2d polyline如何判断其是否封闭,isclosed是判断acdbpolyline的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 18:49 , Processed in 0.162209 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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