一般来说,更改图层设置后需要重生成图纸,但是重生成时间开销太大。为了降低时间开销,可以采取以下两种方法。

一、通过设置LAYLOCKFADECTL避免重生成

找到需要锁定的图层,打开它,设置其为锁定状态。但是注意,使用该方式前必须设置LAYLOCKFADECTL系统变量为一个新值,设定图层锁定后再设回原值。

void SetLayLock()
{int iOldLockFade, iNewLockFade;struct resbuf buf;acedGetVar(_T("LAYLOCKFADECTL"), &buf);iOldLockFade = buf.resval.rint;iNewLockFade = iOldLockFade ? -iOldLockFade : 1;buf.resval.rint = iNewLockFade;acedSetVar(_T("LAYLOCKFADECTL"), &buf);   //这一步必不可少,否则不会暗显锁定图层的对象//提示用户选择一个实体ads_name ss;ads_point pt;if (RTNORM != acedEntSel(_T("请选择一个实体"), ss, pt))return;AcDbObjectId id;if (Acad::eOk == acdbGetObjectId(id, ss)){AcDbEntity* pEnt;if (Acad::eOk == acdbOpenObject(pEnt, id, AcDb::kForRead)){id = pEnt->layerId();pEnt->close();AcDbLayerTableRecord* pLyrRec;if (Acad::eOk == acdbOpenObject(pLyrRec, id, AcDb::kForWrite)){pLyrRec->setIsLocked(true);pLyrRec->close();}}}buf.resval.rint = iOldLockFade;acedSetVar(_T("LAYLOCKFADECTL"), &buf);//这一步必不可少
}

二、直接向CAD发送命令

这种方法同样不需要重生成图纸,但是并不推荐,首先是CAD命令行最多只能输入256个字符,当需要锁定多个图层(在ads_command的实参字符串中,每个图层名中用,隔开)时,ads_command实参字符串长度可能超过256;其次,图层名称中含有诸如#、.等通配符时需要特殊处理;最后,由于未知的原因,采用发送命令的方式无法锁定部分图层。

void SetLayLock2()
{//提示用户选择一个实体ads_name ss;ads_point pt;if (RTNORM != acedEntSel(_T("请选择一个实体"), ss, pt))return;CString sLayer;TCHAR* pszLayer;AcDbObjectId id;if (Acad::eOk == acdbGetObjectId(id, ss)){AcDbEntity* pEnt;if (Acad::eOk == acdbOpenObject(pEnt, id, AcDb::kForRead)){pszLayer= pEnt->layer();sLayer = pszLayer;acutDelString(pszLayer);pEnt->close();}}if (!sLayer.IsEmpty())ads_command(RTSTR, _T("-layer"), RTSTR, _T("lo"), RTSTR, sLayer, RTSTR, _T(""), RTNONE);
}

ObjectARX如何锁定一个图层相关推荐

  1. lisp如何批量选中特定图层_cad怎么选中整个图层(cad 怎样快速选中后锁定所有图层 只显示一个图层)...

    CAD中怎样讲一个图层里的内容全部选中 1.这里是个例子,这里准备将"雨水管"这个图层的所有对象一次性选中. 2.点击一下这个"雨水管"的文字,然后使用组合键& ...

  2. Go的sync.Mutex(七):互斥锁锁定一个资源 只有一个协程操作其他等待

    简介 多个协程会操作一个特定资源,就会出现意想不到的错误类比脏读幻读等,所以我们使用互斥锁, 一个协程使用特定资源的时候进行锁定,用完解锁, 再让其他协程使用,所以其他协程想使用此资源,必须自己给资源 ...

  3. 怎样解锁CAD图纸中被锁定的图层?

    如果CAD图纸中有些图层被锁定了,那么该图层中的CAD图形也不可以修改编辑.在CAD制图工作中,怎样解锁CAD图纸中被锁定的图层? 我们启动CAD编辑器标准版,打开需要修改编辑的CAD图纸,切换到[查 ...

  4. arcgis新建图层信息复制_怎么在arcgis中把一个图层复制到另一个图层上

    如何把图层A的线性要素L复制到图层B?1.图层A.B的shapfile文件需要放在同一个文件夹D中,且B要包含A的要素类型(如L是线性要素,图层B就要有线性要素).2.Arcmap操作界面的左侧&qu ...

  5. ArcGIS Engine怎样快速合并一个图层的所有线面要素

    事由 接手某省级三调质检软件项目.由于介入时间晚,不懂业务和规则,我的主要工作是排查疑难问题.优化系统性能.某天,在测试系统时,遇到一个叫做"行政界线套合检查"的检查规则,检查内容 ...

  6. argcgis线裁剪线、多图层线合并为一个图层

    1.线裁剪线 在arcgis里用矢量线段裁剪线段,1.开始编辑,选择你要编辑的线段,选中要裁剪的线段和裁剪器线段,选中高级编辑工具里的"修剪工具",就裁好了. 2.多图层线合并为一 ...

  7. ps点一下图层栏里任意一个图层,此图层会变成红色是什么原因?

    今天遇到个问题,就是图层变红色啦,一下子忘记咋整了,百度了下,就积累下拉 这是因为开启了快速蒙版的原因,解决办法如下: 1.可以看到这时候点图层也会变成红色,现在点击图层栏右边的通道 2.在通道栏里面 ...

  8. 赚大钱的秘密就是锁定一个卖点深挖一口井

    赚大钱的秘密就是锁定一个卖点深挖一口井 为什么我赚不到钱 我以前没有赚到钱是我不知道干什么,还有就是我什么都想干. 我不知道干什么,说明我手里没项目, 我什么都想干,说明我接触的项目太多了, 关注的风 ...

  9. 用objectARX实现了一个复杂实体的Jig

    点选一点,动态标注改点坐标. 用objectARX实现了一个复杂实体的Jig.. //坐标标注JIg类class ZBJig : DrawJig{public readonly static doub ...

最新文章

  1. letsencrypt 自动续期不关闭nginx
  2. leetcode - 764. 最大加号标志
  3. Oracle_spatial的函数介绍
  4. Linux异步管道多线程速率测试-原始数据
  5. 动态执行sql语句用法
  6. Pycharm快捷键及常用设置【建议收藏】
  7. ViBe算法source code
  8. 鸿蒙系统服务器在哪,鸿蒙的服务中心怎么打开?鸿蒙服务中心打开及关闭教程...
  9. 换硬币 (20 分)
  10. PicGo简介及其下载 安装 配置 使用 卸载
  11. php20以内的勾股数,[求助]编程求100以内的所有勾股数
  12. StrongSwan IKEv2 搭建Linux 与 Cisco的 GRE Tunnel over IPsec IKEv2
  13. 信号的扩展是因果_信号与系统 怎么判断e(1-t)的时不变和因果性?
  14. 爬虫技巧-西瓜视频MP4地址获取
  15. 登录页面渗透测试思路与总结
  16. SOLIDWORKS 2018 怎样画出一条垂直的直线?
  17. #Reading Paper# 【序列推荐】ICKM 2022 RETR:Recommender Transformers with Behavior Pathways
  18. python如何解析PDF文件
  19. 小米公交卡服务器维护,小米公交卡如何退费 小米公交卡快速退费教程
  20. Edge浏览器打开新建标签页速度很慢?如何解决?

热门文章

  1. 安卓超快数据库ObjectBox使用及填坑指南
  2. 对CTO这个角色的一些个人看法
  3. java家族的姓氏MainClass,名门修谱:互联网家谱,可以一个姓氏同修一本谱!
  4. KKT条件,百度还是清晰的,主要个人的逻辑比较严密,感觉讲的意识到位但是逻辑不通,这里把百度到的理顺
  5. nodejs linux模块全局,nodejs笔记一--模块,全局process对象;
  6. 书论15 萧衍《草书状》
  7. 网吧网管系统安装维护经验谈
  8. Python六大基本数据类型
  9. python 学习 红楼梦字频统计 DAY17
  10. 天津工业大学计算机学院在哪个校区,天津工业大学有几个校区及校区地址 哪个校区最好...