设为首页收藏本站

中国膜结构网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

改变显示顺序的代码

[复制链接]
  • TA的每日心情
    开心
    2021-6-22 09:39
  • 签到天数: 1542 天

    [LV.Master]伴坛终老

    发表于 2021-1-14 15:57 | 显示全部楼层 |阅读模式
    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. }
    复制代码
    回复


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

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-22 09:39
  • 签到天数: 1542 天

    [LV.Master]伴坛终老

     楼主| 发表于 2021-1-14 15:57 | 显示全部楼层
    1. 另一个用法例子:

    2. ads_name entName;
    3. ads_point entpoint;
    4. if (acedEntSel(_T("\nlayer:"),entName,entpoint)!=RTNORM)
    5. {
    6.         return;
    7. }
    8. AcDbObjectId layerId;
    9. acdbGetObjectId(layerId,entName);
    10. AcDbEntity *pEnt;
    11. acdbOpenObject(pEnt,layerId,AcDb::kForWrite);
    12. TCHAR *layerName=pEnt->layer();
    13. pEnt->close();

    14. struct resbuf *rb;
    15. ads_name ssname;
    16. rb=acutBuildList(8,layerName,RTNONE);
    17. int rc=acedSSGet(_T("X"),NULL,NULL,rb,ssname);
    18. AcDbObjectIdArray objIds;
    19. if (rc!=RTNORM)
    20. {
    21.         acutRelRb(rb);
    22.         return;
    23. }
    24. long length;
    25. acedSSLength(ssname,&length);
    26. acutPrintf(_T("\nlayer%sall%d个"),layerName,length);
    27. for (int i=0;i<length;i++)
    28. {
    29.         ads_name ent;
    30.         acedSSName(ssname,i,ent);
    31.         AcDbObjectId objId;
    32.         acdbGetObjectId(objId,ent);
    33.         objIds.append(objId);
    34. }
    35. changeDrawOrder(NULL,objIds,kDrawOrderTop);
    36. //acedDrawOrderInherit(NULL,objIds,::kDrawOrderTop);
    37. acedSSFree(ssname);
    38. acutDelString(layerName);
    39. if (rb!=NULL)
    40. {
    41.         acutRelRb(rb);
    42. }
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-22 09:39
  • 签到天数: 1542 天

    [LV.Master]伴坛终老

     楼主| 发表于 2021-1-14 15:57 | 显示全部楼层
    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. }
    复制代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-22 09:39
  • 签到天数: 1542 天

    [LV.Master]伴坛终老

     楼主| 发表于 2021-1-14 15:58 | 显示全部楼层
    函数是changeDrawOrder(...) 有些逻辑上想不通哈
    id是指定图层上的一个对象
    ids是指定图层上的所有对象
    第三个参数是选择调用的函数,
    比如这里是AcDbSortentsTable::moveAbove();
    问题是这样 都是一个图层上的实体 而且随层bylayer
    那么都是一个层上的实体 颜色都相同
    又怎么能实现颜色的排序呢?
    如果用选择集acdbSSGet()获取多个选择对象
    我把红色放顶层,黑色放底层,怎么实现呢?
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

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