打印自定义
大家好,我需要自定义打印cad文件的帮助实际上在我的情况下,单个图形在单个模型空间中有多张图纸,因此它将有多个标题栏有没有办法通过vba脚本逐个打印标题栏内的整个区域?(我的意思是有没有办法在vb中感知标题栏的外边界并将其设置为打印区域)
有数千个cad文件,其中任意两个图形的模型空间中的工作区域不相同
提前感谢
图纸2.dwg 这不是问题。
有一个用于打印模型的程序-“Reverse”
https://www.kdmsoft.net/revers.html 这是一个lisp,用于打印模型空间中的所有标题栏。您需要更改标题栏名称和一些大小值,以适应需要。您需要更改目标打印机名称和Ctb名称。
; plot all title blocks in model space
; By Alan H
(PROMPT ".....PRINTING DRAWING TO plotter....")
(setq oldsnap (getvar "osmode"))
(setvar "osmode" 0)
: Da1drsht is titel block name
(setq ss2 (ssget "x" '((0 . "INSERT")(2 . "Da1drsht")(410 . "Model"))))
(setq n (sslength ss2))
(setq index 0)
(repeat n
(setq en (ssname ss2 index))
(setq el (entget en))
(setq inspt (assoc 10 el)) ; insertion pt this is lower left for this code
(setq xmin (- (cadr inspt) 6.0))
(setq ymin (- (caddr inspt) 6.0))
(setq xymin (strcat (rtos xmin 2 1) "," (rtos ymin 2 1)))
(setq xmax (+ xmin 813.0)) ; hard coded for 813 wide 6mm offset
(setq ymax (+ ymin 566.0)) ;hard code for 566 high
(setq xymax (strcat (rtos xmax 2 1) "," (rtos ymax 2 1)))
(COMMAND "-PLOT""Y" "" "//PRODPRN01/Design-5100"
"A3" "M" "LANDSCAPE" "N"
"W" xymin xymax "1=2""C"
"y" "Designlaser.ctb" "Y" "" "n" "n"
"y"
)
(setq index (+ index 1))
)
(setvar "osmode" oldsnap)
(princ)
谢谢bigal,
你们的Lisp代码很棒&因为我们在VBA中做了更多的功能需求,并使用GetBoundingBox方法来获得标题栏的边界
:D
页:
[1]