1034072509 发表于 2020-7-28 16:52:35

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

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

江南十笑 发表于 2020-7-30 11:58:10

(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-8 08:15:40

1034072509 发表于 2020-7-31 18:46


不是很清楚,我也刚学没多久。下面是原代码你再试一下
我是用VS2019 C#写的,目标框架4.5,调用的库是ObjectARX 2016。我电脑上之有CAD2021,运行没有问题。

      public void DJTC()
      {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;

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

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

                  ltr.DowngradeOpen();
                }

                trans.Commit();
            }
      }

e2002 发表于 2020-7-29 09:52:32

虽然很简单,几句就好,但这种需求太少啦,所以没人写。
一般的,在layer面板中先点击图层列表最顶部的标头栏中的“打印”图标,图层列表项将按此特性排序显示,然后批量选择一下“不打印”的那些图层,最后点击一下选择的列表中的“冻结”图标即可。

l982414603 发表于 2020-7-29 10:00:55

1034072509 发表于 2020-7-29 16:06:52

e2002 发表于 2020-7-29 09:52
虽然很简单,几句就好,但这种需求太少啦,所以没人写。
一般的,在layer面板中先点击图层列表最顶部的标 ...

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

1034072509 发表于 2020-7-29 22:02:24

1034072509 发表于 2020-7-29 16:06
要求太简单了吗?各种大神都看不上

能不能搞一个呢 大神

1034072509 发表于 2020-7-29 22:02:59

l982414603 发表于 2020-7-29 10:00


怎么了????????????

1034072509 发表于 2020-7-29 22:03:37

l982414603 发表于 2020-7-29 10:00


??????????????????????????

1034072509 发表于 2020-7-30 17:06:17

江南十笑 发表于 2020-7-30 11:58
(defun layerfrznop ()
       
(setvar "clayer" "0")


怎么用不了哦,哥

江南十笑 发表于 2020-7-30 20:26:18

能用啊                  
页: [1] 2 3
查看完整版本: 跪求有没有一键冻结非打印图层的程序