明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1595|回复: 30

跪求有没有一键冻结非打印图层的程序

[复制链接]
发表于 2020-7-28 16:52 | 显示全部楼层 |阅读模式
跪求有没有一键冻结图纸上所有非打印图层的程序????????????????????????
发表于 2020-7-30 11:58 | 显示全部楼层
(defun layerfrznop ()
       
  (setvar "clayer" "0")
  (vlax-for lyr        (vla-get-Layers (vla-get-activedocument (vlax-get-acad-object)))
    (if        (zerop (vlax-get lyr 'Plottable))
      (vla-put-freeze lyr :vlax-true)
    )
  )
)

点评

好函数源码,支持  发表于 2020-8-3 23:59
回复 支持 1 反对 0

使用道具 举报

发表于 2020-8-8 08:15 | 显示全部楼层

不是很清楚,我也刚学没多久。下面是原代码你再试一下
我是用VS2019 C#写的,目标框架4.5,调用的库是ObjectARX 2016。我电脑上之有CAD2021,运行没有问题。
  1. [CommandMethod("DJTC")]
  2.         public void DJTC()
  3.         {
  4.             Document doc = Application.DocumentManager.MdiActiveDocument;
  5.             Database db = doc.Database;

  6.             using(Transaction trans = db.TransactionManager.StartTransaction())
  7.             {
  8.                 LayerTable lt = (LayerTable)trans.GetObject(db.LayerTableId, OpenMode.ForRead);
  9.                 foreach (ObjectId id in lt)
  10.                 {
  11.                     LayerTableRecord ltr = (LayerTableRecord)trans.GetObject(id, OpenMode.ForWrite);

  12.                     if (ltr.IsPlottable == false) ltr.IsFrozen = true;

  13.                     ltr.DowngradeOpen();
  14.                 }

  15.                 trans.Commit();
  16.             }
  17.         }
发表于 2020-7-29 09:52 | 显示全部楼层
虽然很简单,几句就好,但这种需求太少啦,所以没人写。
一般的,在layer面板中先点击图层列表最顶部的标头栏中的“打印”图标,图层列表项将按此特性排序显示,然后批量选择一下“不打印”的那些图层,最后点击一下选择的列表中的“冻结”图标即可。
 楼主| 发表于 2020-7-29 16:06 | 显示全部楼层
e2002 发表于 2020-7-29 09:52
虽然很简单,几句就好,但这种需求太少啦,所以没人写。
一般的,在layer面板中先点击图层列表最顶部的标 ...

要求太简单了吗?各种大神都看不上

点评

适合AutoLISP初学者的实际需求的练习...8-P  发表于 2020-7-29 18:01
 楼主| 发表于 2020-7-29 22:02 | 显示全部楼层
1034072509 发表于 2020-7-29 16:06
要求太简单了吗?各种大神都看不上

能不能搞一个呢 大神
 楼主| 发表于 2020-7-29 22:02 | 显示全部楼层

怎么了????????????
 楼主| 发表于 2020-7-29 22:03 | 显示全部楼层

??????????????????????????
 楼主| 发表于 2020-7-30 17:06 | 显示全部楼层
江南十笑 发表于 2020-7-30 11:58
(defun layerfrznop ()
       
  (setvar "clayer" "0")

怎么用不了哦,哥
发表于 2020-7-30 20:26 | 显示全部楼层
能用啊                    
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 20:46 , Processed in 0.369614 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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