使用lis创建布局选项卡
你好我正在寻找一个lisp,可以帮助我创建布局选项卡。首先,我解释一下我的情况。我在模型选项卡中有几个类似的图形,我想将其导出到布局(每个图形都有自己的布局)。图形仅在长度上不同,因此布局必须具有不同的长度(在绘图大小上),并且高度是恒定的。
我想做的是有一个lisp,colud创建布局选项卡使用不同的打印大小(如果我可以选择一个),为每个选项卡。
请随时联系我这里或直接与任何问题或意见。
如有任何帮助或指导,我们将不胜感激。提前谢谢。
英语不是我的母语,所以我很抱歉犯了错误。 可以使用vla add方法创建新布局:
(defun NewLay (lay)
(vl-load-com)
(setq *adoc* (cond (*adoc*) ((vla-get-ActiveDocument
(vlax-get-acad-object)))))
(if (vl-catch-all-error-p
(setq lay (vl-catch-all-apply (function vla-add)
(list (vla-get-layouts *adoc*) lay))))
(vl-catch-all-error-message lay) lay))
欢迎来到CADTutor ...或者用这个。。。
http://www.cadtutor.net/forum/showthread.php?t=42431 谢谢Marek 这将把选定的对象深度克隆到新布局:
;; lay = New Layout Name(Will be Created if non-existent)
(defun CopytoLayout (lay / ss NewLay ObjLst)
(vl-load-com)
; Lee Mac~27.01.10
(setq *acad* (cond (*acad*) ((vlax-get-acad-object)))
*adoc* (cond (*adoc*) ((vla-get-ActiveDocument *acad*))))
(cond ((not (snvalid lay)))
((ssget)
(vlax-for obj (setq ss (vla-get-ActiveSelectionSet *adoc*))
(setq ObjLst (cons Obj ObjLst)))
(vla-delete ss)
(if (vl-catch-all-error-p
(setq NewLay (vl-catch-all-apply
(function vla-item)
(list (vla-get-Layouts *adoc*) lay))))
(setq NewLay (vla-Add (vla-get-Layouts *adoc*) lay)))
(vla-CopyObjects *adoc*
(vlax-make-variant
(vlax-safearray-fill
(vlax-make-safearray vlax-vbObject
(cons 0 (1- (length ObjLst))))
(reverse ObjLst)))
(vla-get-Block NewLay)))))
谢谢你的快速回复。
收件人:LeeMac
我还没有试过你的解决方案,因为我还不太擅长lisp,所以我会稍后再看,但谢谢你的帮助!
收件人:MDB设计
尝试了此程序。。。这是非常好的,我发现它在进一步的工作中非常有用。。。但目前我正在寻找一种解决方案,使我能够在一个窗口中选择每个特定选项卡的打印大小。例如,在此程序中,您提供的控件(例如Modify)可以像在页面设置管理器中一样更改打印大小。
我不确定这是否可能。。。如果是的话,如果你能给我推荐任何解决方案,我将不胜感激。
非常感谢您的回复。
另外,我是lisp编程的新手,我的知识很少,所以你可以添加一些爆炸性的东西来说明如何正确使用它。 你好
您可以设置新布局的打印大小,但需要使用DCL(或其衍生工具)才能从窗口中选择选项。
要使用我上面发布的代码,可以在AutoCAD的Visual LISP编辑器中运行它(命令行处的VLIDE),也可以直接从命令行运行它。
它需要一个参数,即布局名称,因此:
(CopytoLayout "New Layout)
李
页:
[1]