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();
}
}