跪求有没有一键冻结非打印图层的程序
跪求有没有一键冻结图纸上所有非打印图层的程序????????????????????????(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)
)
)
) 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();
}
} 虽然很简单,几句就好,但这种需求太少啦,所以没人写。
一般的,在layer面板中先点击图层列表最顶部的标头栏中的“打印”图标,图层列表项将按此特性排序显示,然后批量选择一下“不打印”的那些图层,最后点击一下选择的列表中的“冻结”图标即可。
e2002 发表于 2020-7-29 09:52
虽然很简单,几句就好,但这种需求太少啦,所以没人写。
一般的,在layer面板中先点击图层列表最顶部的标 ...
要求太简单了吗?各种大神都看不上 1034072509 发表于 2020-7-29 16:06
要求太简单了吗?各种大神都看不上
能不能搞一个呢 大神 l982414603 发表于 2020-7-29 10:00
怎么了???????????? l982414603 发表于 2020-7-29 10:00
?????????????????????????? 江南十笑 发表于 2020-7-30 11:58
(defun layerfrznop ()
(setvar "clayer" "0")
怎么用不了哦,哥 能用啊