询问纸张大小
很抱歉,术语不好。。。。我想有一个脚本,它可以在图纸空间中插入一个块,但布局中的纸张大小将决定要插入的块。
有没有办法在脚本、宏、lisp等文件中询问当前布局的大小?
谢谢大家 你说的版面大小是什么意思?它是一个具有特定纸张大小边框的块吗?
塔瓦特 嗨tharwat
不,不是块,而是布局的页面大小。例如,当我进入文件>页面设置管理器时,页面大小为A1。你知道如果你有一个模型图,有几个不同大小的布局-可能有些图纸的页面大小A1,一些A2,一些A3等。
我希望有某种方法可以提取当前布局中页面的大小,这样当我插入一个块时,它就适合布局中已经生成的页面大小。
我将为A1创建一个块,另一个为A2等创建一个块,并有一个按钮,它做了如下操作:
如果papersize=A1,则插入区块“blockA1”
如果papersize=A2,插入区块“blockA2”
谢谢你的帮助 我懂了。
这应该让你开始。。。。
(setq lay (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object ))))
(setq papersize (vla-getpapersize lay 'w 'h))
w
h
如果你需要帮助,尽管问。
塔瓦特 谢谢tharwat
请原谅我的无知,但这是怎么回事?我将其加载为lisp,它返回594.0,这是当前布局的正确高度。顺便说一句,您已经指出,我不需要同时测量高度和宽度,因为只有一个测量值就可以告诉我布局的大小(它们总是横向的)。
那么我该如何使用它来选择不同的块呢?我打算用一个简单的脚本,比如
insert
"C:/AUTOCAD FILES/blockA1.dwg"
0,0,0
1
但是理解“如果”部分会让事情变得更复杂。我会以某种方式将这两个脚本结合起来吗?
再次感谢您抽出时间 如果我能很好地理解你的需求,这应该能帮到你。。
不要忘记根据纸张大小和块的插入点更改块的名称。
(defun c:TesT (/ papersize Block)(vl-load-com)
;;; Tharwat 18. Oct. 2011 ;;;
(cond ((not lay)
(setq lay (vla-get-activelayout
(vla-get-activedocument (vlax-get-acad-object))
)
)
)
)
(setq papersize (vla-getpapersize lay 'w 'h))
(cond ((eq w 210.0)(setq Block "C:/AUTOCAD FILES/blockA4.dwg"))
((eq w 297.0)(setq Block "C:/AUTOCAD FILES/blockA3.dwg"))
((eq w 594.0)(setq Block "C:/AUTOCAD FILES/blockA2.dwg"))
((eq w 841.0)(setq Block "C:/AUTOCAD FILES/blockA1.dwg"))
((eq w 1189.0) (setq Block "C:/AUTOCAD FILES/blockA0.dwg"))
)
(entmakex (list '(0 . "INSERT")
(cons 2 Block) ;; Name of Block
(cons 10 '(0. 0. 0.)) ;; Insertion point for the chosen block
'(41 . 1.)
'(42 . 1.)
'(43 . 1.)
)
)
(princ)
)
Tharwat 太好了,谢谢。
它看起来正是我想要的。
我会玩它,让你知道!
干杯
欢迎你的朋友。
听到这个消息我真的很高兴。
塔瓦特 大家好。。。看起来不错
如果我用另一种方式说。。。需要测量我的布局以设置页面设置。
我们不使用边界,而是使用来自客户的块。。从那时起,我该如何测量轮廓。。。。
格里茨·约翰 约翰,至少你的解释我不清楚。
当做
塔瓦特
页:
[1]
2