找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 812|回复: 4

[求助]:如何设置把多个实体设置成一个GROUP?

[复制链接]
发表于 2004-7-6 19:47:39 | 显示全部楼层 |阅读模式

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

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

×
先定义函数:
void createGroup(CString sGroupName,
                                                                   const AcDbObjectIdArray *idArr)
{
        AcDbGroup       *pGroup = new AcDbGroup((LPSTR)(LPCTSTR)sGroupName);
        AcDbObjectId     groupObjectId;
        AcDbDictionary  *pGroupDict = NULL;

        acdbHostApplicationServices()->workingDatabase()
        ->getGroupDictionary(pGroupDict, AcDb::kForWrite);
        pGroupDict->setAt(sGroupName, pGroup, groupObjectId);
        pGroupDict->close();
          pGroup->close();
    acdbOpenObject(pGroup, groupObjectId, AcDb::kForWrite);
        for (int i = 0; i < idArr->length(); i++)
        {
                groupObjectId = idArr->at(i);
                pGroup->append(groupObjectId);   
        }
        pGroup->close();
}
在其他函数中
AcDbObjectIdArray *pAr;
pAr->setLogicalLength(4);
pAr->append(AcDbObjectId); //ID为具体实体的ID
然后调用函数
creatGrout("wi",pAr);
编译出错。
LNK2019: 无法解析的外部符号 "public: int __thiscall CDialogCt::CreateGroup(class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > >,class AcArray<class AcDbObjectId,class AcArrayMemCopyReallocator<class AcDbObjectId> >)" (?CreateGroup@CDialogCt@@QAEHV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@V?$AcArray@VAcDbObjectId@@V?$AcArrayMemCopyReallocator@VAcDbObjectId@@@@@@@Z) ,该符号在函数 "public: void __thiscall CDialogCt::OnBnClickedOk(void)" (?OnBnClickedOk@CDialogCt@@QAEXXZ) 中被引用

请教如何设置成一个GROUP?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-7-6 20:39:34 | 显示全部楼层
在“acdbOpenObject(pGroup, groupObjectId, AcDb::kForWrite);
”之前多了一句“pGroup->close();
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-10 17:26:29 | 显示全部楼层
建议:
1.使用AcDbObjectIdArray型变量为函数调用实参时不要用指针型,而使用参考型:
  void createGroup(CString sGroupName,const AcDbObjectIdArray &idArr)
2. AcDbObjectIdArray *pAr;
    pAr->setLogicalLength(4);
    pAr->append(AcDbObjectId); //ID为具体实体的ID
以上代码段有错(类变量没有实例化):
(1).若要使用AcDbObjectIdArray的动态生成变量,则编码如下:
     AcDbObjectIdArray *idArr=new AcDbObjectIdArray;
    idArr->setLogicalLength(4);
   ...         ...
   delete idArr;
(2).若要使用静态定义的变量,则编码如下:
    AcDbObjectIdArray  idArr;
   idArr.setLogicalLength(4);
  ... ...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-7-12 08:04:07 | 显示全部楼层
已调试通过,HELLOW的建议很好。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-18 21:58:03 | 显示全部楼层
我估计是你没有把createGroup函数所在的文件加入到项目(project)中
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 22:00 , Processed in 0.369247 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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