selvamani 发表于 2022-7-6 21:48:59

打印自定义

大家好,
 
我需要自定义打印cad文件的帮助实际上在我的情况下,单个图形在单个模型空间中有多张图纸,因此它将有多个标题栏有没有办法通过vba脚本逐个打印标题栏内的整个区域?(我的意思是有没有办法在vb中感知标题栏的外边界并将其设置为打印区域)
有数千个cad文件,其中任意两个图形的模型空间中的工作区域不相同
 
提前感谢
图纸2.dwg

maratovich 发表于 2022-7-6 22:19:19

这不是问题。
有一个用于打印模型的程序-“Reverse”
https://www.kdmsoft.net/revers.html

BIGAL 发表于 2022-7-6 22:38:41

这是一个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)

selvamani 发表于 2022-7-6 22:59:35

谢谢bigal,
 
你们的Lisp代码很棒&因为我们在VBA中做了更多的功能需求,并使用GetBoundingBox方法来获得标题栏的边界
 
:D
页: [1]
查看完整版本: 打印自定义