找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 7079|回复: 41

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

[复制链接]

已领礼包: 13个

财富等级: 恭喜发财

发表于 2017-1-27 12:47:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 LoveArx 于 2017-1-27 12:54 编辑
Acad::ErrorStatus changeDrawOrder(AcDbObjectId parent, AcDbObjectIdArray &childArray, AcEdDrawOrderCmdType variant)
{
   if (childArray.isEmpty()) return Acad::eInvalidInput;
   Acad::ErrorStatus es = Acad::eOk;
   AcDbSortentsTable *pSortTab = NULL;
   AcDbObjectId spaceId = AcDbObjectId::kNull;
   AcDbEntityPointer pEnt(childArray.first(),AcDb::kForRead);
   if (pEnt.openStatus() == Acad::eOk) 
   {
      spaceId = pEnt->ownerId();
      pEnt->close();
   }
   if (!spaceId.isNull()) 
   {
      AcDbBlockTableRecordPointer pBTR(spaceId,AcDb::kForRead);
      if (pBTR.openStatus() == Acad::eOk) 
      {
         if (pBTR->getSortentsTable(pSortTab, AcDb::kForWrite, true) == Acad::eOk) 
         {
            switch (variant)
            {
               case kDrawOrderBottom:
                  es = pSortTab->moveToBottom(childArray);
                  break;
                                        
               case kDrawOrderTop:
                  es = pSortTab->moveToTop(childArray);
                  break;
                                                
               case kDrawOrderBelow:
                  es = pSortTab->moveBelow(childArray,parent);
                  break;
                                                
               case kDrawOrderAbove:
                  es = pSortTab->moveAbove(childArray,parent);
                  break;
            }
            pSortTab->close();
         }
      }
   }
   return es;
}

下面是具体调用的实例

游客,如果您要查看本帖隐藏内容请回复


另一个用法例子:

ads_name entName;
ads_point entpoint;
if (acedEntSel(_T("\nlayer:"),entName,entpoint)!=RTNORM)
{
        return;
}
AcDbObjectId layerId;
acdbGetObjectId(layerId,entName);
AcDbEntity *pEnt;
acdbOpenObject(pEnt,layerId,AcDb::kForWrite);
TCHAR *layerName=pEnt->layer();
pEnt->close();

struct resbuf *rb;
ads_name ssname;
rb=acutBuildList(8,layerName,RTNONE);
int rc=acedSSGet(_T("X"),NULL,NULL,rb,ssname);
AcDbObjectIdArray objIds;
if (rc!=RTNORM)
{
        acutRelRb(rb);
        return;
}
long length;
acedSSLength(ssname,&length);
acutPrintf(_T("\nlayer%sall%d个"),layerName,length);
for (int i=0;i<length;i++)
{
        ads_name ent;
        acedSSName(ssname,i,ent);
        AcDbObjectId objId;
        acdbGetObjectId(objId,ent);
        objIds.append(objId);
}
changeDrawOrder(NULL,objIds,kDrawOrderTop);
//acedDrawOrderInherit(NULL,objIds,::kDrawOrderTop);
acedSSFree(ssname);
acutDelString(layerName);
if (rb!=NULL)
{
        acutRelRb(rb);
}


0.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 13个

财富等级: 恭喜发财

 楼主| 发表于 2017-1-27 12:59:48 | 显示全部楼层
改变选择的实体显示顺序到最下

static void MoveToBottom(void)
{
  ads_point p;
  ads_name en;
  Acad::ErrorStatus es;
  if (acedEntSel(L"\nSelect entity: ",en,p) == RTNORM) {
    AcDbObjectId id; acdbGetObjectId(id,en);
    AcDbSortentsTable *pSortTab = NULL;
    AcDbObjectId spaceId = acdbCurDwg()->currentSpaceId();
    AcDbObjectPointer<AcDbBlockTableRecord> pBTR(spaceId,AcDb::kForRead);
    if ((es = pBTR.openStatus()) == Acad::eOk) {
      if ((es = pBTR->getSortentsTable(pSortTab, AcDb::kForWrite, true)) == Acad::eOk) {
        AcDbObjectIdArray ar; ar.append(id);
        pSortTab->moveToBottom(ar);
        pSortTab->close();
      } else {
        acutPrintf(L"\nError open AcDbSortentsTable: %s",acadErrorStatusText(es));
      }
    } else {
      acutPrintf(L"\nError open AcDbBlockTableRecord: %s",acadErrorStatusText(es));
    }
  }
}

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6579个

财富等级: 富甲天下

发表于 2017-1-28 00:35:41 | 显示全部楼层
谢谢提供,祝新年快乐
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 35个

财富等级: 招财进宝

发表于 2017-1-28 22:03:12 | 显示全部楼层
看起来不错啊。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6579个

财富等级: 富甲天下

发表于 2017-1-29 00:19:58 | 显示全部楼层
谢谢提供,学习一下了!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 466个

财富等级: 日进斗金

发表于 2017-1-30 22:33:14 | 显示全部楼层
谢谢提供,祝新年快乐
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6056个

财富等级: 富甲天下

发表于 2017-2-2 16:06:06 | 显示全部楼层
谢谢分享。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 2491个

财富等级: 金玉满堂

发表于 2017-2-3 10:14:21 | 显示全部楼层
学习!!!!!!!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 8个

财富等级: 恭喜发财

发表于 2017-2-12 19:10:34 | 显示全部楼层
谢谢 学习学习 谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2017-2-20 14:45:36 | 显示全部楼层
过来学习学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 157个

财富等级: 日进斗金

发表于 2017-2-25 19:26:44 | 显示全部楼层
谢谢分享!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 69个

财富等级: 招财进宝

发表于 2017-3-5 20:55:18 | 显示全部楼层
啥也不说了,感谢楼主分享哇!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 112个

财富等级: 日进斗金

发表于 2017-3-6 10:57:37 | 显示全部楼层
谢谢楼主分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2017-3-12 16:28:23 | 显示全部楼层
我也来学习学习,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1742个

财富等级: 堆金积玉

发表于 2017-5-4 17:42:25 | 显示全部楼层
回复学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-26 03:15 , Processed in 0.407573 second(s), 63 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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