nnutting 发表于 2022-7-6 07:56:27

正在打印LISP帮助。。。

我需要帮助写一些例程。。。
我真的不知道从哪里开始,但下面是我需要的:
 
而不是执行典型的打印例程(键入plot,选择plotter,选择纸张大小,选择笔设置,选择比例,最后打印)
我想能够只键入几个字母,并得到相同的结果。。。因此节省时间。
 
如果我在图纸空间中,标题栏位于0,0。。。我希望能够键入以下内容并获得列出的结果:
 
30x42绘图页
PDF11:使用正确的笔设置创建11x17 PDF,并将文件保存到桌面上名为PDF的预定文件夹中
 
PDF30:使用正确的笔设置创建全尺寸PDF,并将文件保存到桌面上名为PDF的预定文件夹中
 
PDF8:使用正确的笔设置创建8 1/2x11 PDF,并将文件保存到桌面上名为PDF的预定文件夹中
 
24x36绘图页
PDF2411:使用正确的笔设置创建11x17 PDF,并将文件保存到桌面上名为PDF的预定文件夹中
 
PDF24:使用正确的笔设置创建全尺寸PDF,并将文件保存到桌面上名为PDF的预定文件夹中
 
PDF248:使用正确的笔设置创建8 1/2x11 PDF,并将文件保存到桌面上名为PDF的预定文件夹中
 
 
我知道我要求很多。。。任何帮助都将不胜感激。
 
提前感谢!

BIGAL 发表于 2022-7-6 08:01:20

下面是一个代码示例。
 
 
; plotpdf2 ver 2 with filename and directory as output oct 2011
(PROMPT ".....PRINTING DRAWING TO pdf's....")
(setvar "cmddia" 0)
(setvar "filedia" 0)
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(vlax-for lay (vla-get-Layouts doc)
(setq plotabs (cons (vla-get-name lay) plotabs))
)
(setq dwgname (GETVAR "dwgname"))
(setq len (strlen dwgname))
(setq dwgname (substr dwgname 1 (- len 4)))
(setq plottablist (acad_strlsort plotabs))
(setq len (length plottablist))
(setq x 0)
(repeat len
(setq name (nth x plottablist))
(princ name)
(setq pdfname (strcat (getvar "dwgprefix") dwgname "-" name))
(if (/= name "Model")
   (progn
   (setvar "ctab" name)
   
   (COMMAND "-PLOT""Y""" "dwg to Pdf"
       "Iso full bleed A3 (420.00 x 297.00 MM)" "m"    "LANDSCAPE""N"   "W""-6,-6"    "807,560" "1=2""C"
       "y"   "Designlasercolour.ctb" "Y" "n"    "n"    "n"   pdfName "N" "y"      )
   )
)
(setq x (+ x 1))
)
(setvar "cmddia" 1)
(setvar "filedia" 1)
(setq DWGNAME nil
   LEN nil
   NAME nil
   PLOTTABLIST nil)
(princ)

woodman78 发表于 2022-7-6 08:03:48

嗨,Bigal,这个例程在哪里存储pdf。我找不到它们。

Tharwat 发表于 2022-7-6 08:08:28

 
看看这个。。。。

(getvar "dwgprefix")

woodman78 发表于 2022-7-6 08:11:28

Tharwat,你是否建议将它们存储在与图纸相同的文件夹中?但我创建了一个新文件夹,将绘图保存在那里并运行了它,但没有任何乐趣。这是我使用的修改后的lisp。
 
; plotpdf2 ver 2 with filename and directory as output oct 2011
; from Bigal
(defun c:A3_dwg_pdf ()
(if (findfile "T:/Drawing Tools/Templates/CCC2009.dwt")
   (progn
   (command "_.psetupin" (findfile "T:/Drawing Tools/Templates/CCC2009.dwt") "A3-dwg-pdf")
   (while (wcmatch (getvar "cmdnames") "*PSETUPIN*")
       (command "_yes")
   ) ;_ while
   T
   ) ;_ progn
) ;_ if
(PROMPT ".....PRINTING DRAWING TO pdf's....")
(setvar "cmddia" 0)
(setvar "filedia" 0)
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(vlax-for lay (vla-get-Layouts doc)
(setq plotabs (cons (vla-get-name lay) plotabs))
)
(setq dwgname (GETVAR "dwgname"))
(setq len (strlen dwgname))
(setq dwgname (substr dwgname 1 (- len 4)))
(setq plottablist (acad_strlsort plotabs))
(setq len (length plottablist))
(setq x 0)
(repeat len
(setq name (nth x plottablist))
(princ name)
(setq pdfname (strcat (getvar "dwgprefix") dwgname "-" name))
(if (/= name "Model")
   (progn
   (setvar "ctab" name)
   
(command "-plot" "n" "" "A3-dwg-pdf" "" "n" "y" "y")
   )
)
(setq x (+ x 1))
)
(setvar "cmddia" 1)
(setvar "filedia" 1)
(setq DWGNAME nil
   LEN nil
   NAME nil
   PLOTTABLIST nil)
(princ)
)

Tharwat 发表于 2022-7-6 08:13:34

 
我不是在暗示,但这就是系统变量的作用。

woodman78 发表于 2022-7-6 08:17:46

Tharwat,我已经从plot命令中删除了pdfname变量。
 
谢谢

woodman78 发表于 2022-7-6 08:22:41

我已经安装了cutepdf打印机,正在使用lisp打印图形的pdf副本。这已经运行了几年,没有出现任何问题。我接受了Bigal上面提供的代码,并对其进行了修改,以创建pdf的批处理图。我遇到的问题是,“dwg到pdf”中的纸张大小不允许我们的图纸适合页面,即使它使用可爱的pdf。我修改了“dwg到pdf”以包含我们的论文,与可爱的打印机一样,现在它打印得很好,但它就像每个布局重复打印大约5到6次,然后进入循环,我必须退出它。
 
有人能看看我哪里出错了吗?谢谢
 
; plotpdf2 ver 2 with filename and directory as output oct 2011
; from Bigal
(defun c:A3_dwg_pdf ()
(if (findfile "T:/Drawing Tools/Templates/CCC2009.dwt")
   (progn
   (command "_.psetupin" (findfile "T:/Drawing Tools/Templates/CCC2009.dwt") "A1")
   (while (wcmatch (getvar "cmdnames") "*PSETUPIN*")
       (command "_yes")
   ) ;_ while
   T
   ) ;_ progn
) ;_ if

(PROMPT ".....PRINTING DRAWING TO pdf's....")
(setvar "cmddia" 0)
(setvar "filedia" 0)
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(vlax-for lay (vla-get-Layouts doc)
(setq plotabs (cons (vla-get-name lay) plotabs))
)
(setq dwgname (GETVAR "dwgname"))
(setq len (strlen dwgname))
(setq dwgname (substr dwgname 1 (- len 4)))
(setq plottablist (acad_strlsort plotabs))
(setq len (length plottablist))
(setq x 0)
(repeat len
(setq name (nth x plottablist))
(princ name)
(setq pdfname (strcat (getvar "dwgprefix") dwgname "-" name))
(if (/= name "Model")
   (progn
   (setvar "ctab" name)
   
(command "-plot" "y" "" "dwg to pdf" "A3" "m" "Landscape" "n" "Layout" "1=2" "0,0" "n" "." "y" "n" "n" "n" pdfname "n" "y")
   )
)
(setq x (+ x 1))
)
(setvar "cmddia" 1)
(setvar "filedia" 1)
(setq DWGNAME nil
   LEN nil
   NAME nil
   PLOTTABLIST nil)
(princ)
)
 
添加了文件:
dwg到pdf。拉链

BIGAL 发表于 2022-7-6 08:24:16

我不是专家,我会看一下这段代码,也许放一条虚线来测试它唯一的地方,我可以看到在旧代码之外的循环,它可以正常工作
 

(setq x 1)
(while (wcmatch (getvar "cmdnames") "*PSETUPIN*")
       (command "_yes")
(princ x)(setq x (+ x 1))
   ) ;_ while

pBe 发表于 2022-7-6 08:28:07

有了这个(setvar’Expert 5),你可以摆脱它
 
(while (wcmatch (getvar "cmdnames") "*PSETUPIN*")
       (command "_yes")
   )
 
并改用:
 
(if (setq dwtfile (findfile "T:/Drawing Tools/Templates/CCC2009.dwt"))
   (progn
   (command "_.psetupin" dwtfile "A1")
   .....
页: [1] 2
查看完整版本: 正在打印LISP帮助。。。