找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 901|回复: 3

[ARX程序]:帮我看看这段程序

[复制链接]
发表于 2002-5-21 03:39:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
AcDbDatabase *pDb=new AcDbDatabase;
        //ads_name en;
        AcDbObjectId eId;
        AcDbCircle * pCir;

            pDb->readDwgFile("strFileName");
       
        AcDbBlockTable *pBlockTable;
        pDb->getBlockTable(pBlockTable,AcDb::kForRead);
       

        AcDbBlockTableRecord *pBlockTableRecord;
        pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);
       
        pBlockTable->close();
        //AcDbObjectId circleId;

        AcDbBlockTableRecordIterator *pBlkTblRcdItr;
        pBlockTableRecord->newIterator(pBlkTblRcdItr);
       

       
        for(pBlkTblRcdItr->start();!pBlkTblRcdItr->done();pBlkTblRcdItr->step())
        {
                AcDbEntity *pEnt;

                pBlkTblRcdItr->getEntity(pEnt,AcDb::kForRead);
               
        pBlkTblRcdItr->getEntityId (eId);
                               
                               
                acdbOpenObject(pCir, eId, AcDb::kForRead);

        if (pCir)
                {
                        AcGePoint3d sPt;
                        pCir->AcDbCircle::cast(pEnt);
                        sPt=pCir->center();
                       
                        m_nX=sPt.x;
                        m_nY=sPt.y;
                        m_nZ=sPt.z;

                        double radius=pCir->radius();
                       
                        m_nRad=radius;

                        i++;

                        pCir->close();
                }

                pEnt->close();
        }
               
        pBlockTableRecord->close();

        delete pBlkTblRcdItr;
        delete pDb;
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 13个

财富等级: 恭喜发财

发表于 2002-5-21 04:00:00 | 显示全部楼层
程序怎么了? 最好把你的错误描述出来才好看,编译错误贴出错误信息,运行错误贴出错误信息,不能实现你的想法的,说下程序做的结果等等,这样才好帮你。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-5-21 07:01:11 | 显示全部楼层
打开Dwg图形数据库,遍历块表得到实体,读取里面的信息,如园的圆心座标和半径。
谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-5-22 02:33:40 | 显示全部楼层
有问题
acdbOpenObject(pCir, eId, AcDb::kForRead);是操作当前的数据库

AcDbDatabase *pDb=new AcDbDatabase;
//ads_name en;
AcDbObjectId eId;
AcDbCircle * pCir;

pDb->readDwgFile("strFileName");

AcDbBlockTable *pBlockTable;
pDb->getBlockTable(pBlockTable,AcDb::kForRead);


AcDbBlockTableRecord *pBlockTableRecord;
pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);

pBlockTable->close();
//AcDbObjectId circleId;

AcDbBlockTableRecordIterator *pBlkTblRcdItr;
pBlockTableRecord->newIterator(pBlkTblRcdItr);



for(pBlkTblRcdItr->start();!pBlkTblRcdItr->done();pBlkTblRcdItr->step())
{
AcDbEntity *pEnt;

pBlkTblRcdItr->getEntity(pEnt,AcDb::kForRead);

if(((AcDbObject*&)pEnt)->isKindOf(AcDbCircle::desc())){
AcGePoint3d sPt;
pCir->AcDbCircle::cast(pEnt);
sPt=pCir->center();

m_nX=sPt.x;
m_nY=sPt.y;
m_nZ=sPt.z;

double radius=pCir->radius();

m_nRad=radius;

i++;

}

pEnt->close();
}

pBlockTableRecord->close();

delete pBlkTblRcdItr;
delete pDb
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-21 02:45 , Processed in 0.187484 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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