tazzzz 发表于 2022-7-5 19:57:33

仅打印选定视图

大家好,
我有一对包含10到20个视图的图纸,每个视图代表一个特定的部分。此外,视图的名称与工件的名称相同。
有没有一种方法可以一次性打印一些选定的视图,而不必对每个视图重复打印?
非常感谢您在使用LISP或其他方法选择视图时提供的任何帮助。
谢谢你的帮助。

jonathann3891 发表于 2022-7-5 20:02:18

您可以使用窗口模式打印。它允许您“打开”要打印的区域。
 
你也可以用Lisp程序进行设置。

tazzzz 发表于 2022-7-5 20:07:06

谢谢你的回复。
窗口模式允许我一次选择一个视图(窗口),我仍然需要为我需要的多个窗口重复该过程。
既然你说过要建立一个lisp,你有什么可以完成这个任务吗?
再次感谢。

eyde 发表于 2022-7-5 20:11:46

如果在图纸空间中使用视口,则可以使用“发布”命令。

tazzzz 发表于 2022-7-5 20:18:30

我需要为我的案子做更多的解释。
-我不使用图纸空间创建视图,我使用视图/名称视图创建它们。。。
-每个视图需要按字母大小单独打印
对不起,从一开始就不清楚。
再次感谢您的帮助。

BIGAL 发表于 2022-7-5 20:21:06

您可以查看views表,这样您就可以有一个lisp打印,如果您看这个,它可以打印一系列布局,但使用类似lisp的listselect。lsp您可以从列表中选择所需的视图。我不使用视图,否则会帮你。
 

; not tested properly
(vlax-for lay (vla-get-Views (vla-get-activedocument (vlax-get-acad-object)))
(princ (vla-get-name lay))
)


;Plots layouts by range
; By Alan H Feb 2014
(defun AH:pltlays ( / lay numlay numend)

(ah:getval "Enter Start tab number" "   edit_width = 10;" "   edit_limit = 5;")
(setq numlay (ATOI item))
(ah:getval "Enter last tab number" "   edit_width = 10;" "   edit_limit = 5;")
(setq numend (ATOI item))
(textscr)
(setq len (+ (- numend numlay) 1))
(repeat len
(vlax-for lay (vla-get-Layouts (vla-get-activedocument (vlax-get-acad-object))) ; change this for views
(if (= numlay (vla-get-taborder lay)) ; change this for View name
(setvar "ctab" (vla-get-name lay))
) ; if
) ; for
(setq lay nil)
(command "Pspace")
(COMMAND "ZOOM" "e")
(princ name)
(setvar "fillmode" 1)
(setvar "textfill" 1)
(COMMAND "-PLOT" "Y" "" "\\\\PRODPRN03\\100B-Lev5-01-CLR-PRN03" "A3 (297 x 420 mm)" "m" "LANDSCAPE" "N"
"W" "-6,-6" "807,560" "1=2" "C" "Y" "DesignLaserCOLOUR.ctb" "Y" "N" "N" "N" "N" "N" "y")
(setq numlay (+ numlay 1))
) ; end repeat
); defun
(AH:pltlays)

hanhphuc 发表于 2022-7-5 20:25:58

 
也许我错了,也许OP指的是模型空间中的视图?

Stefan BMR 发表于 2022-7-5 20:28:22

嗨Tazzz
试试这个。您的计算机上必须安装Dos_lib。
(defun c:plotview ( / acobj acdoc views view_list)
(setq acobj (vlax-get-acad-object)
       acdoc (vla-get-activedocument acobj)
       views (vla-get-views acdoc)
       )
(vlax-for view views
   (setq view_list (cons (vla-get-name view) view_list))
   )
(foreach view (dos_multilist "PLOT SELECTED VIEWS" "Select views to plot" view_list)
   (command
   "_plot"
   "_y"
   "Model"
   "DWG To PDF.pc3"
   "ISO full bleed A2 (594.00 x 420.00 MM)"
   "Millimeters"
   "Landscape"
   "No"
   "View"
   view
   "Fit"
   "Center"
   "Yes"
   "acad.ctb"
   "Yes"
   "A"
   (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) " - " view ".pdf")
   "No"
   "Yes"
   )
   )
(princ)
)
此代码打印为pdf,与dwg文件位于同一目录中。您必须更改打印顺序以匹配您的设置。

tazzzz 发表于 2022-7-5 20:32:09

BIGAL、hanhphuc和StefanBMR感谢您对本文的兴趣。
正如hanhpuc所说,我正在模型空间中工作,所有视图都是使用上述方法在那里创建的。
很抱歉给你添麻烦。我相信有人谁读了这篇文章,并使用纸张空间会发现你提供的lisp非常有用。
Stefan,我会安装doc。。。。软件,更改lisp以满足我的需要,并尝试一下。
我会把最终结果公布给你,我会公布我采取的步骤和修改后的代码。
再次感谢大家的帮助。

BIGAL 发表于 2022-7-5 20:39:08

我不认为Stefan会介意,但你可以在做“Foreach视图”时使用lisp,只要问一个简单的问题plot Yes或No,如果你不想使用dos_lib并使其更通用,比如复制到另一台电脑。对我来说,我有一个通用dcl用于这类事情,所以我只需要选择我想要绘制的。
页: [1] 2
查看完整版本: 仅打印选定视图