yfy2003 发表于 2004-10-2 10:13:00

怎样分解一个组!就象CAD的命令GROUP的E选项?

如题?

王咣生 发表于 2004-10-2 16:34:00

回复

回复


void EraseGroup(const char * pGroupName)<BR>{<BR>        AcDbDictionary *pGrpDict;<BR>        AcDbObjectId pGrpId;


        acdbHostApplicationServices()-&gt;workingDatabase()-&gt;getGroupDictionary(pGrpDict, AcDb::kForWrite);


        if (pGrpDict-&gt;getAt(pGroupName,pGrpId)       == Acad::eOk)<BR>        {<BR>                AcDbObjectPointer &lt;AcDbGroup&gt; pGrp(pGrpId, AcDb::kForWrite);


                pGrp-&gt;erase();<BR>                pGrpDict-&gt;remove(pGrpId);<BR>                pGrpDict-&gt;close();<BR>                pGrp-&gt;close();<BR>        }<BR>        pGrpDict-&gt;close();


        return;<BR>}

yfy2003 发表于 2004-10-2 19:41:00

谢谢王斑竹!


我选择一个组实体!这样得到组的名称!


就象void EraseGroup(const char * pGroupName)里的pGroupName?<BR>

王咣生 发表于 2004-10-2 21:54:00

回复

选择一个实体,删除Group:       


        ads_name ent;<BR>                AcDbObjectId objId;<BR>                int ret;<BR>                ads_point pt;


<BR>                ret = acedEntSel("\n请选择一个组实体:", ent, pt);<BR>                acdbGetObjectId(objId, ent);<BR>                AcDbObjectPointer &lt;AcDbEntity&gt; pEnt (objId, AcDb::kForRead );


                CString strGrpName;


<BR>                //assert(pEnt!=NULL);<BR>                AcDbVoidPtrArray* pReactors = pEnt-&gt;reactors();<BR>                if (pReactors != NULL)<BR>                {<BR>                        for (int i = 0; i &lt; pReactors-&gt;length(); i++)<BR>                        {<BR>                                void* pV = pReactors-&gt;at(i);<BR>                                if (pV != NULL &amp; acdbIsPersistentReactor(pV))<BR>                                {<BR>                                        AcDbObjectId rId = acdbPersistentReactorObjectId(pV);<BR>                                        pEnt-&gt;close();<BR>                                        AcDbObjectPointer&lt;AcDbGroup&gt; pGroup(rId, AcDb::kForWrite               );<BR>                                        strGrpName = pGroup-&gt;name();       //得到组名(在这里没什么用)<BR>                                        pGroup-&gt;erase();<BR>                                }<BR>                        }<BR>                }


        acedAlert("ok");


                assert(strGrpName != NULL);

yfy2003 发表于 2004-10-2 22:22:00

明白了!


再次感谢!
页: [1]
查看完整版本: 怎样分解一个组!就象CAD的命令GROUP的E选项?