找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 732|回复: 10

[求助]:请教关于一个实体句柄的问题?

[复制链接]
发表于 2002-10-18 23:31:53 | 显示全部楼层 |阅读模式

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

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

×
我用循环做了一系列实体,得到他们的句柄,我想用数组来记录他们的句柄。请问我该怎么做?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-18 23:36:13 | 显示全部楼层

Re: [求助]:请教关于一个实体句柄的问题?

最初由 wweien 发布
[B]我用循环做了一系列实体,得到他们的句柄,我想用数组来记录他们的句柄。请问我该怎么做? [/B]


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

使用道具 举报

 楼主| 发表于 2002-10-18 23:42:04 | 显示全部楼层
我保存了ObjectID,它报错了。编译过cad时错。我试的程序如下,请指教:
AcDbObjectId [5]
void
createLine()
{   
    AcGePoint3d startPt(4.0, 2.0, 0.0);
    AcGePoint3d endPt(10.0, 7.0, 0.0);
    AcDbLine *pLine = new AcDbLine(startPt, endPt);
    //pLine->getAcDbHandle(ObjHandle);//getAcDbHandle(m_ObjHandle);

    AcDbBlockTable *pBlockTable;
    acdbHostApplicationServices()->workingDatabase()
        ->getSymbolTable(pBlockTable, AcDb::kForRead);

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

    AcDbObjectId lineId[3];
    pBlockTableRecord->appendAcDbEntity(lineId[3], pLine);

    pBlockTableRecord->close();
    pLine->close();


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

使用道具 举报

 楼主| 发表于 2002-10-18 23:44:32 | 显示全部楼层
AcDbObjectId lineId[3];在最上面全局变量;后面就没定义了。考时出错了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-18 23:46:26 | 显示全部楼层
最初由 wweien 发布
[B]我保存了ObjectID,它报错了。编译过cad时错。我试的程序如下,请指教:
AcDbObjectId [5]
void
createLine()
{   
    AcGePoint3d startPt(4.0, 2.0, 0.0);
    AcGePoint3d endPt(10.0, 7.0, 0.0);
    AcDb... [/B]


AcDbObjectId 是一个对象,不能AcDbObjectId lineId[3]这么用。

保存大量的ID的用AcDbObjectIdArray 对象

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

使用道具 举报

 楼主| 发表于 2002-10-18 23:47:50 | 显示全部楼层
AcDbObjectId [5]
void
createLine()
{   
    AcGePoint3d startPt(4.0, 2.0, 0.0);
    AcGePoint3d endPt(10.0, 7.0, 0.0);
    AcDbLine *pLine = new AcDbLine(startPt, endPt);
    //pLine->getAcDbHandle(ObjHandle);//getAcDbHandle(m_ObjHandle);

    AcDbBlockTable *pBlockTable;
    acdbHostApplicationServices()->workingDatabase()
        ->getSymbolTable(pBlockTable, AcDb::kForRead);

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

   
    pBlockTableRecord->appendAcDbEntity(lineId[3], pLine);

    pBlockTableRecord->close();
    pLine->close();

   // return lineId[3];
}
void dell()
{
ads_name en;
    ads_point pt;
        acdbGetObjectId(lineId[3],en);
acdbEntDel(en);
}
是这样的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-18 23:51:19 | 显示全部楼层
那么AcDbObjectIdArray可以做成全局变量吗?
可不可以给一个例子我看一些,
多谢!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-18 23:58:56 | 显示全部楼层
最初由 wweien 发布
[B]那么AcDbObjectIdArray可以做成全局变量吗?
可不可以给一个例子我看一些,
多谢!! [/B]


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

使用道具 举报

 楼主| 发表于 2002-10-18 23:59:03 | 显示全部楼层
我就是想创建一些实体。
然后能够在程序中又可以删去任意几个实体。请问该怎么做?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-19 00:03:10 | 显示全部楼层
请问是哪个目录下面?docamps还是sample目录。哪个文件?
不好意思,我很菜哦!
麻烦您了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-19 00:32:32 | 显示全部楼层
最初由 wweien 发布
[B]我就是想创建一些实体。
然后能够在程序中又可以删去任意几个实体。请问该怎么做? [/B]


修改下你的函数,加上个AcDbObjectIdArray 引用参数


  1. [FONT=courier new]
  2. void
  3. createLine(AcDbObjectIdArray &ids)
  4. {
  5.   AcDbObjectId id;
  6.   ...........添加你的代码,添加到数据库后返回id
  7.   ids.append(id);
  8. return;
  9. }
  10. //主程序
  11. void dell()
  12. {
  13.    AcDbObjectIdArray ids;
  14.    createLine(ids); //调用后,IDS里面就是你新建的实体的所有ID
  15.    //下面如果你要删除这些实体,循环遍历这个数组就可以了。
  16.   for (int i=0;i< ids.length();i++)
  17.      AcDbEntity *pEnt;
  18.     if (Acad::eOk==acdbOpenObject(pEnt,ids[i],AcDb::kForWrite))
  19.        pEnt->erase();
  20.        pEnt->close();
  21.   }
  22.   return;
  23. }
  24. [/FONT]
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 17:23 , Processed in 0.185813 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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