天气与日历 切换到窄版

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

[每日一码] 改变显示顺序的代码

[复制链接]
  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    113

    主题

    11

    回帖

    1369

    积分

    管理员

    积分
    1369
    QQ
    发表于 2024-2-23 22:13:45 | 显示全部楼层 |阅读模式
    1. Acad::ErrorStatus changeDrawOrder(AcDbObjectId parent, AcDbObjectIdArray &childArray, AcEdDrawOrderCmdType variant)
    2. {
    3.    if (childArray.isEmpty()) return Acad::eInvalidInput;
    4.    Acad::ErrorStatus es = Acad::eOk;
    5.    AcDbSortentsTable *pSortTab = NULL;
    6.    AcDbObjectId spaceId = AcDbObjectId::kNull;
    7.    AcDbEntityPointer pEnt(childArray.first(),AcDb::kForRead);
    8.    if (pEnt.openStatus() == Acad::eOk)
    9.    {
    10.       spaceId = pEnt->ownerId();
    11.       pEnt->close();
    12.    }
    13.    if (!spaceId.isNull())
    14.    {
    15.       AcDbBlockTableRecordPointer pBTR(spaceId,AcDb::kForRead);
    16.       if (pBTR.openStatus() == Acad::eOk)
    17.       {
    18.          if (pBTR->getSortentsTable(pSortTab, AcDb::kForWrite, true) == Acad::eOk)
    19.          {
    20.             switch (variant)
    21.             {
    22.                case kDrawOrderBottom:
    23.                   es = pSortTab->moveToBottom(childArray);
    24.                   break;
    25.                                        
    26.                case kDrawOrderTop:
    27.                   es = pSortTab->moveToTop(childArray);
    28.                   break;
    29.                                                 
    30.                case kDrawOrderBelow:
    31.                   es = pSortTab->moveBelow(childArray,parent);
    32.                   break;
    33.                                                 
    34.                case kDrawOrderAbove:
    35.                   es = pSortTab->moveAbove(childArray,parent);
    36.                   break;
    37.             }
    38.             pSortTab->close();
    39.          }
    40.       }
    41.    }
    42.    return es;
    43. }
    复制代码

     

     

     

     

    [每日一码] 改变显示顺序的代码
  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    113

    主题

    11

    回帖

    1369

    积分

    管理员

    积分
    1369
    QQ
     楼主| 发表于 2024-2-23 22:14:07 | 显示全部楼层
    1. ads采用name entName;
    2. ads采用point entpoint;
    3. if (acedEntSel(采用T("\nlayer:"),entName,entpoint)!=RTNORM)
    4. {
    5.         return;
    6. }
    7. AcDbObjectId layerId;
    8. acdbGetObjectId(layerId,entName);
    9. AcDbEntity *pEnt;
    10. acdbOpenObject(pEnt,layerId,AcDb::kForWrite);
    11. TCHAR *layerName=pEnt->layer();
    12. pEnt->close();
    13. struct resbuf *rb;
    14. ads采用name ssname;
    15. rb=acutBuildList(8,layerName,RTNONE);
    16. int rc=acedSSGet(采用T("X"),NULL,NULL,rb,ssname);
    17. AcDbObjectIdArray objIds;
    18. if (rc!=RTNORM)
    19. {
    20.         acutRelRb(rb);
    21.         return;
    22. }
    23. long length;
    24. acedSSLength(ssname,&length);
    25. acutPrintf(采用T("\nlayer%sall%d个"),layerName,length);
    26. for (int i=0;i<length;i++)
    27. {
    28.         ads采用name ent;
    29.         acedSSName(ssname,i,ent);
    30.         AcDbObjectId objId;
    31.         acdbGetObjectId(objId,ent);
    32.         objIds.append(objId);
    33. }
    34. changeDrawOrder(NULL,objIds,kDrawOrderTop);
    35. //acedDrawOrderInherit(NULL,objIds,::kDrawOrderTop);
    36. acedSSFree(ssname);
    37. acutDelString(layerName);
    38. if (rb!=NULL)
    39. {
    40.         acutRelRb(rb);
    41. }
    复制代码

     

     

     

     

    [每日一码] 改变显示顺序的代码
  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    113

    主题

    11

    回帖

    1369

    积分

    管理员

    积分
    1369
    QQ
     楼主| 发表于 2024-2-23 22:14:21 | 显示全部楼层
    1. 改变选择的实体显示顺序到最下
    2. static void MoveToBottom(void)
    3. {
    4.   ads采用point p;
    5.   ads采用name en;
    6.   Acad::ErrorStatus es;
    7.   if (acedEntSel(L"\nSelect entity: ",en,p) == RTNORM) {
    8.     AcDbObjectId id; acdbGetObjectId(id,en);
    9.     AcDbSortentsTable *pSortTab = NULL;
    10.     AcDbObjectId spaceId = acdbCurDwg()->currentSpaceId();
    11.     AcDbObjectPointer<AcDbBlockTableRecord> pBTR(spaceId,AcDb::kForRead);
    12.     if ((es = pBTR.openStatus()) == Acad::eOk) {
    13.       if ((es = pBTR->getSortentsTable(pSortTab, AcDb::kForWrite, true)) == Acad::eOk) {
    14.         AcDbObjectIdArray ar; ar.append(id);
    15.         pSortTab->moveToBottom(ar);
    16.         pSortTab->close();
    17.       } else {
    18.         acutPrintf(L"\nError open AcDbSortentsTable: %s",acadErrorStatusText(es));
    19.       }
    20.     } else {
    21.       acutPrintf(L"\nError open AcDbBlockTableRecord: %s",acadErrorStatusText(es));
    22.     }
    23.   }
    24. }
    复制代码

     

     

     

     

    [每日一码] 改变显示顺序的代码
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-11-3 21:05 , Processed in 0.192429 second(s), 29 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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