xg2010 发表于 2020-8-1 09:04
:(				
			
		附件下载:
一键冻结所有不打印属性的图层
				
			
		用CAD自带的图层管理也可以,就几步就行了
				
			
		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)
    )
)
)				
			
		hhh454 发表于 2020-8-4 00:49
用CAD自带的图层管理也可以,就几步就行了
给力..................				
			
		maiko 发表于 2020-8-4 08:05
(defun c:tt ( / lar ) 
(vlax-for lyr (vla-get-layers (vla-get-activedocument (vlax-get-acad-obj ...
好用,么么哒,太棒了、
				
			
		谢谢分享				
			
		hhh454 发表于 2020-8-4 00:41
附件下载:
一键冻结所有不打印属性的图层
谢谢大神的指导,				
			
		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();
            }
      }