天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 87|回复: 0

ObjectARX如何创建组

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
在arx中,组是一个容器,保存有序的实体集合。组可以被看成是一个可以永久保存的有名称的的选择集。
组的信息保存在图形数据库的有名对象字典中,在ObjectARX中对组的操作实际上就是对有名对象字典中组字典的操作,组字典在有名对象字典的根字典中的关键字是“ACAD_GROUP”,因此可以通过有名对象字典的getAt函数来获得组字典的指针。不过,AcDbDatabase对象另外提供了getGroupDictionary函数,可以直接获取组字典的指针,在实际操作中,我们一般采用这种方式。
下面的代码创建了一个匿名组。
//创建一个匿名组
void CmdAddGroupXData()
{
        //提示用户选择多个实体
        TCHAR* prompts[2] = { _T("\n请选择实体"),_T("删掉一个实体") };
        ads_name ss;
        if (RTNORM != acedSSGet(_T(":$"), prompts, NULL, NULL, ss))
                return;

        Adesk::Int32 lLen;
        acedSSLength(ss, &lLen);
        AcDbObjectId id;
        AcDbGroup* pGroup = new AcDbGroup;
        for (Adesk::Int32 i = 0; i < lLen; i++)
        {
                ads_name ent;
                if (RTNORM == acedSSName(ss, i, ent))
                {
                        if (Acad::eOk == acdbGetObjectId(id, ent))
                        {
                                pGroup->append(id);
                        }
                }
        }

        AcDbDictionary* pGroupDict = NULL;
        acdbHostApplicationServices()->workingDatabase()->getGroupDictionary(pGroupDict, AcDb::kForWrite);
        CString sGroupName = _T("*");        //匿名组的名称为“*”
        AcDbObjectId idGroup;
        Acad::ErrorStatus es;
        es = pGroupDict->setAt(sGroupName, pGroup, idGroup);
        pGroup->close();
        pGroupDict->close();
}

 

 

 

 

ObjectARX如何创建组
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 12:45 , Processed in 0.106057 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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