设为首页收藏本站

中国膜结构网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

膜结构车棚
膜结构车棚膜结构资质国产膜材 膜结构网中国膜结构协会
查看: 283|回复: 9

Group集合

[复制链接]
  • TA的每日心情
    开心
    2021-6-19 14:40
  • 签到天数: 1539 天

    [LV.Master]伴坛终老

    发表于 2021-1-11 23:16 | 显示全部楼层 |阅读模式
    1. void traverseGroups()
    2. {
    3. AcDbDictionary *pGroupDict;
    4. acdbHostApplicationServices()->workingDatabase()
    5. ->getGroupDictionary( pGroupDict , AcDb::kForWrite );

    6. AcDbDictionaryIterator* pDicIterator = pGroupDict->newIterator(AcRx::kDictSorted);
    7. AcDbObject* pObj;
    8. int i = 0;
    9. while ( !pDicIterator->done() ) {
    10. pDicIterator->getObject( pObj , AcDb::kForRead );
    11. AcDbGroup* pGroup = ( AcDbGroup* )pObj;
    12. char* groupName;
    13. pGroup->getName( groupName );
    14. acutPrintf( "\ngroup %d name = %s\n" , i , groupName );
    15. i++;
    16. pDicIterator->next();
    17. }
    18. pObj->close();
    19. delete pDicIterator;
    20. pGroupDict->close();
    21. }
    复制代码
    回复


    http://www.mjgw.org/ 专业从事膜结构设计、制作加工、施工安装的膜结构工程服务,能够为客户提供专业的膜结构整体解决方案。做中国最好的膜结构综合服务平台。欢迎大家联系电话:198-7840-1958,QQ:463017170.
    相关关键词:膜结构车棚,膜结构车棚覆盖,膜结构车棚公司,膜结构车棚多少钱,膜结构车棚厂家,膜结构车棚价格,社区膜结构车棚,膜结构车棚膜布厂家 ,膜结构车棚哪家好,膜结构车棚多少钱一米,膜结构车棚报价,膜结构车棚哪里有,膜结构车棚定制,膜结构车棚安装,膜结构车棚设计,膜结构车棚电话,膜结构车棚加工,膜结构车棚膜布价格,膜结构车棚批发,膜结构车棚制造商,膜结构车棚生产厂家,膜结构车棚设计,膜结构车棚施工,膜结构车棚多少钱一平米,膜结构车棚订制,张拉膜车棚,张拉膜车棚覆盖,张拉膜车棚公司,张拉膜车棚多少钱,张拉膜车棚厂家,张拉膜车棚价格,社区张拉膜车棚,张拉膜车棚膜布厂家 ,张拉膜车棚哪家好,张拉膜车棚多少钱一米,张拉膜车棚报价,张拉膜车棚哪里有,张拉膜车棚定制,张拉膜车棚安装,张拉膜车棚设计,张拉膜车棚电话,张拉膜车棚加工,张拉膜车棚膜布价格,张拉膜车棚批发,张拉膜车棚制造商,张拉膜车棚生产厂家,张拉膜车棚设计,张拉膜车棚施工,张拉膜车棚多少钱一平米,张拉膜车棚订制,常用膜材品牌:德国杜肯、法国法拉利、德国海德斯、德国米乐、日本平岗、韩国秀博、比利时希运、美国赫虏伯、中国科宝、上海慧遥。

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-19 14:40
  • 签到天数: 1539 天

    [LV.Master]伴坛终老

     楼主| 发表于 2021-1-11 23:16 | 显示全部楼层
    1. static void getGroupNames (void)
    2. {
    3. AcDbDictionary *pDict;
    4. acdbHostApplicationServices()->workingDatabase()->getGroupDictionary(pDict,
    5. AcDb::kForRead);
    6. AcDbDictionaryIterator *pDicIter = pDict->newIterator();
    7. pDict->close(); // close it here!
    8. while(!pDicIter->done())
    9. {
    10. const ACHAR *pName = pDicIter->name();
    11. acutPrintf(_T("\nGroup name [%s]"), pName);
    12. pDicIter->next();
    13. }
    14. delete pDicIter; //and delete the iterator!
    15. }
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-19 14:40
  • 签到天数: 1539 天

    [LV.Master]伴坛终老

     楼主| 发表于 2021-1-11 23:16 | 显示全部楼层
    1. void traverseGroups()
    2. {
    3. AcDbDictionary *pGroupDict;
    4. acdbHostApplicationServices()->workingDatabase()
    5. ->getGroupDictionary( pGroupDict , AcDb::kForWrite );

    6. AcDbDictionaryIterator* pDicIterator = pGroupDict->newIterator(AcRx::kDictSorted);
    7. AcDbObject* pObj;
    8. int i = 0;
    9. while ( !pDicIterator->done() ) {
    10. pDicIterator->getObject( pObj , AcDb::kForRead );
    11. AcDbGroup* pGroup = ( AcDbGroup* )pObj;
    12. char* groupName;
    13. pGroup->getName( groupName );
    14. acutPrintf( "\ngroup %d name = %s\n" , i , groupName );
    15. i++;
    16. pDicIterator->next();
    17. }
    18. pObj->close();
    19. delete pDicIterator;
    20. pGroupDict->close();
    21. }
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-19 14:40
  • 签到天数: 1539 天

    [LV.Master]伴坛终老

     楼主| 发表于 2021-1-11 23:17 | 显示全部楼层
    1. AcDbGroup *pGroup = NULL;
    2. AcDbDictionary *pGroupDict;
    3. if (acdbHostApplicationServices()->workingDatabase()->getGroupDictionary(pGroupDict, AcDb::kForWrite) != Acad::eOk)
    4. {
    5.   return ;
    6. }

    7. if (pGroupDict->has(strName) == Adesk::kTrue)
    8. {
    9.   if (pGroupDict->getAt(strName, (AcDbObject*&)pGroup, AcDb::kForWrite) != Acad::eOk)
    10.   {
    11.    pGroupDict->close();
    12.    return ;
    13.   }
    14. }
    15. else
    16. {
    17.   pGroup = new AcDbGroup();
    18.   AcDbObjectId groupId;
    19.   pGroupDict->setAt(strName, pGroup, groupId);
    20. }
    21. pGroupDict->close();
    22. Acad::ErrorStatus es = pGroup->append(idsHideEntity);
    23. pGroup->close();
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-19 14:40
  • 签到天数: 1539 天

    [LV.Master]伴坛终老

     楼主| 发表于 2021-1-11 23:17 | 显示全部楼层
    1. void removeGroup( const _bstr_t &group_name )
    2. {
    3. try
    4. {
    5. IAcadApplicationPtr acad_app( acedGetAcadWinApp()->GetIDispatch( TRUE )
    6. );
    7. assert(acad_app != 0);

    8. >>>> IAcadMenuGroupsPtr menuGroups = acad_app->MenuGroups;
    9. assert(menuGroups != 0);

    10. size_t menuGroupsNumber = menuGroups->Count;
    11. for( size_t i = 0; i < menuGroupsNumber; ++i )
    12. {
    13. IAcadMenuGroupPtr menuGroup = menuGroups->Item(i);
    14. assert(menuGroup != 0);

    15. if( menuGroup->Name == group_name )
    16. {
    17. hr = menuGroup->Unload();
    18. assert(SUCCEEDED(hr));

    19. break;
    20. }
    21. }
    22. }
    23. catch (_com_error& e)
    24. {
    25. }
    26. }
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-19 14:40
  • 签到天数: 1539 天

    [LV.Master]伴坛终老

     楼主| 发表于 2021-1-25 10:32 | 显示全部楼层
    1. int acdbAddAnonGrpRet2Lsp()

    2. {

    3. // TODO: Implement the command

    4. resbuf *pArg =acedGetArgs ();



    5. struct resbuf *startRb = NULL;

    6. AcDbGroup *pGroup = new AcDbGroup();

    7. AcDbObjectId grpId;

    8. AcDbDictionary *pGroupDict;

    9. Acad::ErrorStatus es;

    10. AcApDocument *curDoc;



    11. //get the group dictionary

    12. AcDbDatabase *pDb = acdbHostApplicationServices()->

    13.   workingDatabase();

    14. if (Acad::eOk == (es = acDocManager->lockDocument(

    15.   curDoc=acDocManager->curDocument())))

    16.   es = pDb->getGroupDictionary(pGroupDict,AcDb::kForWrite);



    17. if (es != Acad::eOk)

    18.   return es;





    19. //make an anonymous entry

    20. if ((es = pGroupDict->setAt(L"*", pGroup, grpId)) ==

    21.   Acad::eOk) {

    22.   //retrieve its name char *pNam;

    23.   pGroup->close();

    24. }



    25. // create a resbuf with our ObjectID in it

    26. struct resbuf *newRb = acutBuildList (RTLONG, grpId, RTNONE);

    27. // if ok

    28. if (newRb != NULL) {

    29.   // if this is the first time we've done this

    30.   if (startRb == NULL) {

    31.    // then set this as the start

    32.    startRb = newRb;

    33.   }

    34.   // otherwise add it to the end of our list

    35.   else {

    36.    // create a pointer to the beginning of our resbuf list

    37.    struct resbuf *ptr = startRb;

    38.    // find the end of our list

    39.    while (ptr->rbnext != NULL)

    40.     ptr = ptr->rbnext;

    41.    // now attach our newly create resbuf to the end

    42.    ptr->rbnext = newRb;

    43.   }

    44. }



    45. pGroupDict->close();

    46. acDocManager->unlockDocument(curDoc);



    47. acedRetList(startRb);

    48. acutRelRb(startRb);

    49. return (RTNORM);

    50. }
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-19 14:40
  • 签到天数: 1539 天

    [LV.Master]伴坛终老

     楼主| 发表于 2021-2-4 22:35 | 显示全部楼层
            static int ads_getgroupname(void)
            {
                    struct resbuf *rb=acedGetArgs();
                    AcDbObjectId objId=AcDbObjectId::kNull;
                    Acad::ErrorStatus es=Acad::eOk;
                    resbuf *isList=NULL;

                    if (!rb) {
                            acutPrintf("\nError: function requires an ename argument.");
                            return RSERR;
                    }

                    if (rb && (rb->restype==RTENAME)) {
                            es=acdbGetObjectId(objId, rb->resval.rlname);
                            if (es != Acad::eOk) {
                                    acutPrintf("\nError: Unable to convert entity name to objectId - %s.", acadErrorStatusText(es));
                                    return RSERR;
                            }
                            else {
                                    AcDbObjectPointer<AcDbEntity>pEnt(objId, AcDb::kForRead);
                                    CString groupName;
                                    AcDbVoidPtrArray *pReactors;
                                    void *pSomething;
                                    AcDbObjectId persObjId;
                                    pReactors=pEnt->reactors();
                                    if (pReactors != NULL){
                                            for (int i=0; i < pReactors->length(); i++){
                                                    pSomething=pReactors->at(i);
                                                    if (acdbIsPersistentReactor(pSomething)) {
                                                            persObjId=acdbPersistentReactorObjectId(pSomething);
                                                            if(pEnt.openStatus() == Acad::eOk) {
                                                                    pEnt->close();
                                                                    AcDbObjectPointer<AcDbGroup>pGroup(persObjId, AcDb::kForRead);
                                                                    groupName=pGroup->name();
                                                                    addStringToRB(&isList, groupName);
                                                            }
                                                    }
                                            }
                                    }
                            }//else objId
                    }//RTENAME
                    else {
                            acutPrintf("\nError: function requires an ename argument.");
                    }
                    if (isList==NULL)
                            acedRetNil();
                    else {
                            acedRetList(isList);
                            acutRelRb(isList);
                    }
                    return (RSRSLT);
            }//getgroupname
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-19 14:40
  • 签到天数: 1539 天

    [LV.Master]伴坛终老

     楼主| 发表于 2021-2-4 22:35 | 显示全部楼层
                    static addStringToRB (resbuf **work, const char *strVal)
            {
                    resbuf *ptrNewbuf, *ptrPos;

                    ptrNewbuf = ptrPos = NULL;
                    ptrPos = *work;
                    *work = ptrPos;

                    if (*work)
                    {
                            while (ptrPos->rbnext != NULL)
                                    ptrPos = ptrPos->rbnext;
                    }

                    if ((ptrNewbuf = acutNewRb(RTSTR)) == NULL)
                    {
                            acutPrintf("\nERROR: Unable to allocate memory for resbuf pointer.");
                            return FALSE;
                    }

                    if ((ptrNewbuf->resval.rstring = strdup(strVal)) == NULL)
                    {
                            acutPrintf("\nERROR: Unable to duplicate definition in memory.");
                            acutRelRb(ptrNewbuf);
                            return FALSE;
                    }

                    if (*work)
                    {
                            ptrPos->rbnext = ptrNewbuf;
                            ptrPos = ptrNewbuf;
                    }

                    else *work = ptrPos = ptrNewbuf;

                    return TRUE;
            }
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-19 14:40
  • 签到天数: 1539 天

    [LV.Master]伴坛终老

     楼主| 发表于 2021-2-4 22:36 | 显示全部楼层
       static int ads_getgroupname(void)
       {
          struct resbuf *rb=acedGetArgs();
          AcDbObjectId objId=AcDbObjectId::kNull;
          Acad::ErrorStatus es=Acad::eOk;
          resbuf *groupList=NULL;

          if (!rb) {
             acutPrintf("\nError: function requires an ename argument.");
             return RSERR;
          }

          if (rb && (rb->restype==RTENAME)) {
             es=acdbGetObjectId(objId, rb->resval.rlname);
             if (es != Acad::eOk) {
                acutPrintf("\nError: Unable to convert entity name to objectId - %s.", acadErrorStatusText(es));
                return RSERR;
             }
             else {
                AcDbObjectPointer<AcDbEntity>pEnt(objId, AcDb::kForRead);
                //CString groupName;
                char* groupName;
                AcDbVoidPtrArray *pReactors;
                void *pSomething;
                AcDbObjectId persObjId;
                pReactors=pEnt->reactors();
                if (pReactors != NULL){
                   for (int i=0; i < pReactors->length(); i++){
                      pSomething=pReactors->at(i);
                      if (acdbIsPersistentReactor(pSomething)) {
                         persObjId=acdbPersistentReactorObjectId(pSomething);
                         if(pEnt.openStatus() == Acad::eOk) {
                            // not required when using smart pointers
                            //pEnt->close();
                            AcDbObjectPointer<AcDbGroup>pGroup(persObjId, AcDb::kForRead);
                            // name() returns a const char* - does not required to be de-allocated
                            // This method is deprecated and may be removed in a future release.
                            // Use AcDbGroup::getName()
                            //groupName=pGroup->name();
                            // we need to use getName()
                            pGroup->getName(groupName);
                            addStringToRB(&groupList, groupName);
                            // and getName() returns a pointer to a string
                            // and needs to free the returned string's memory
                            acutDelString(groupName);
                         }
                      }
                   }
                }
             }//else objId
          }//RTENAME
          else {
             acutPrintf("\nError: function requires an ename argument.");
          }
          if (groupList==NULL)
             acedRetNil();
          else {
             acedRetList(groupList);
             acutRelRb(groupList);
          }
          return (RSRSLT);
       }//getgroupname
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-19 14:40
  • 签到天数: 1539 天

    [LV.Master]伴坛终老

     楼主| 发表于 2021-2-8 00:15 | 显示全部楼层
    static void asdkTEST()
    {
            Acad::ErrorStatus es;
            AcDbObjectIdArray groupIds;
                    // scan all groups and check to see if our group exists in any of them. If they do,
                    // get the groupIds list.
            AcDbDictionary *dict = NULL;
            ACHAR* pszGroupName = _T("MYCS");
            AcDbDatabase* pdb = acdbHostApplicationServices()->workingDatabase();
            // get the ACAD_GROUP dictionary
            es = pdb->getGroupDictionary(dict, AcDb::kForRead);
            // if we got it ok
            if (es == Acad::eOk)
            {
                    // create a new dictionary iterator
                    AcDbDictionaryIterator *dictIterator = dict->newIterator ();
                    // loop and get all the dictionary entries
                    for (; !dictIterator->done (); dictIterator->next ())
                    {
                            AcDbGroup *group = NULL;
                            ACHAR* pszReturnedName = _T("");
                            // get the dictionary "group" entry
                            if( (es = dictIterator->getObject ((AcDbObject *&)group, AcDb::kForRead) ) != Acad::eOk) return;
                            // if we got it ok
                            if(( es = group->getName(pszReturnedName)) != Acad::eOk) return ;
                            if (!wcscmp(pszReturnedName,pszGroupName))
                            {
                                   
                                    // get the all entities in the group
                                    group->allEntityIds (groupIds);
                                    // clean up
                                    group->close();
                                    //we found our group ,we 'll cut slack our iterations
                                    break;
                            }
                    }
                    // clean up
                    delete dictIterator;
                    dict->close ();
            }

            /*performing move operation on my group of entities*/
                    AcGeMatrix3d matrix;
                    // set up the translation matrix to move
                    matrix.setToTranslation (AcGeVector3d (0, 100, 0)); // hard coded.

                    // now move the entities using transformBy
                    for (int i=0; i<groupIds.length (); ++i)
                    {
                            AcDbEntity *ent = NULL;
                            // open the entity for read
                             es = acdbOpenObject (ent, groupIds[i], AcDb::kForWrite);
                            // if it opened ok
                            if (es == Acad::eOk)
                            {
                                    // do the move
                                    ent->transformBy (matrix);
                                    // now close the entity
                                    ent->close ();
                            }
                    }
            }
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    推荐膜材品牌上一条 /6 下一条

    进口膜材 国产膜材 pvdf膜材ptfe膜材ETFE膜材
    最好的膜结构公司 一级膜结构资质 膜结构一级资质
    膜结构设计-膜结构十大品牌-etfe设计-充气膜结构
    诺科膜结构
    遨都膜结构设计
    中国膜结构网
    中国空间膜结构

    QQ|申请友链|手机版|中国膜结构论坛