1034072509 发表于 2020-8-2 22:56:41

xg2010 发表于 2020-8-1 09:04


:(

hhh454 发表于 2020-8-4 00:41:17

附件下载:
一键冻结所有不打印属性的图层


hhh454 发表于 2020-8-4 00:49:41

用CAD自带的图层管理也可以,就几步就行了

maiko 发表于 2020-8-4 08:05:31

1034072509 发表于 2020-7-31 09:06
是不是这种哦,加过后,说语法错误 还是不得行哦

(defun c:tt ( / lar )
(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)
    )
)
)

1034072509 发表于 2020-8-4 22:11:47

hhh454 发表于 2020-8-4 00:49
用CAD自带的图层管理也可以,就几步就行了

给力..................

1034072509 发表于 2020-8-4 22:19:51

maiko 发表于 2020-8-4 08:05
(defun c:tt ( / lar )
(vlax-for lyr (vla-get-layers (vla-get-activedocument (vlax-get-acad-obj ...

好用,么么哒,太棒了、

xg2010 发表于 2020-8-6 08:05:42

谢谢分享

1034072509 发表于 2020-8-6 23:29:31

hhh454 发表于 2020-8-4 00:41
附件下载:
一键冻结所有不打印属性的图层

谢谢大神的指导,

醉月武 发表于 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();
            }
      }
页: 1 2 [3]
查看完整版本: 跪求有没有一键冻结非打印图层的程序