Grrr 发表于 2022-7-5 18:16:35

Can#039;没有发现问题

你好
我正在尝试修改我经常使用的lisp:
;PLOT WITH ONE CLICK - PREDEFINE SETTINGS and PICK OBJECTS (FRAME) RECTANGLE

(defun c:VLD_PLT-REC2 (/ ss SHEETSIZE mn mx PSC FILENAME)
   (vl-load-com)

;REDEFINE SHEETSIZE:
                           (progn (initget "A4 A3 A2 A1 A0")
                           (setq SHEETSIZE (getkword "\nChoose <A4>: "))
                           (if (null SHEETSIZE)
                               (setq SHEETSIZE "A4")
                           )
                           (cdr
                               (assoc SHEETSIZE
                                    '(
                                        ("A4" . "ISO full bleed A4 (297.00 x 210.00 MM)")
                                        ("A3" . "ISO full bleed A3 (420.00 x 297.00 MM)")
                                        ("A2" . "ISO full bleed A2 (594.00 x 420.00 MM)")
                                        ("A1" . "ISO full bleed A1 (841.00 x 594.00 MM)")
                                        ("A0" . "ISO full bleed A0 (841.00 x 1189.00 MM)")
                                       )
                               )
                           )
                  )

;REDEFINE ORIENTATION Landscape/Portrait
(progn (initget "Landscape Portrait")
(setq OR-LP (getkword "\nChoose <Landscape>: "))
(if (null OR-LP)
(setq OR-LP "Landscape")
)
)

;REDEFINE PLOTSCALE:
(progn (setq PSC (getstring "\nINPUT PLOT SCALE (X=XXX/FIT) <FIT> :"))
(if (eq PSC "")
"FIT"
PSC
)
)

;Pick object, type name and plot:
   (while (setq ss (ssget "_:S:E" '((0 . "INSERT,LWPOLYLINE"))))
       (progn
         (vla-getboundingbox (vlax-ename->vla-object (ssname ss 0)) 'mn 'mx)
    (command "PLOTTRANSPARENCYOVERRIDE" "2")
         (command "plot"
                  "yes"
                  "model"
                  "DWG To PDF.pc3"
                  SHEETSIZE
                  "Millimeters"
                  OR-LP
                  "no"
                  "Window"
                  (trans (vlax-safearray->list mn) 0 1)
                  (trans (vlax-safearray->list mx) 0 1)
             PSC
                  "Center"
                  "Y"
                  "BLACK-GRAY-WHITE.ctb"
                  "Y"
                  "As displayed"
                  (progn (setq FILENAME (getstring T "\nNAME OF THE FILE <ASD>:"))
                           (if (eq FILENAME "")
                               "ASD"
                               FILENAME
                           )
                  )
                  "Y"
                  "Y"
         )
       )
   )
   (princ)
)
但我不知道在“选择对象,键入名称和绘图”之后有什么问题。
有人能帮我吗?提前谢谢!

Lee Mac 发表于 2022-7-5 18:41:37

尝试以下操作-我还没有测试过:
;PLOT WITH ONE CLICK - PREDEFINE SETTINGS and PICK OBJECTS (FRAME) RECTANGLE

(defun c:VLD_PLT-REC2 ( / fnm mn mx or-lp psc pto sht ss )
   (initget "A4 A3 A2 A1 A0")
   (setq sht
       (cdr
         (assoc (cond ((getkword "\nChoose <A4>: ")) ("A4"))
            '(
                   ("A4" . "ISO full bleed A4 (297.00 x 210.00 MM)")
                   ("A3" . "ISO full bleed A3 (420.00 x 297.00 MM)")
                   ("A2" . "ISO full bleed A2 (594.00 x 420.00 MM)")
                   ("A1" . "ISO full bleed A1 (841.00 x 594.00 MM)")
                   ("A0" . "ISO full bleed A0 (841.00 x 1189.00 MM)")
               )
         )
       )
   )
   (initget "Landscape Portrait")
   (setq OR-LP (cond ((getkword "\nChoose <Landscape>: ")) ("Landscape")))
   
   (if (= "" (setq PSC (getstring "\nINPUT PLOT SCALE (X=XXX/FIT) <FIT> :")))
       (setq PSC "FIT")
   )
   (if (setq pto (getvar 'plottransparencyoverride))
       (setvar 'plottransparencyoverride 2)
   )
   (while (setq ss (ssget "_:S:E" '((0 . "INSERT,LWPOLYLINE"))))
       (vla-getboundingbox (vlax-ename->vla-object (ssname ss 0)) 'mn 'mx)
       (command "_.-plot" "_Y" "Model" "DWG To PDF.pc3" sht "_M" OR-LP "_N" "_W"
         (trans (vlax-safearray->list mn) 0 1)
         (trans (vlax-safearray->list mx) 0 1)
         PSC "_C" "_Y" "BLACK-GRAY-WHITE.ctb" "_Y" "_A"
         (if (= "" (setq fnm (getstring t "\nNAME OF THE FILE <ASD>:"))) "ASD" fnm)
         "_Y" "_Y"
       )
   )
   (if pto (setvar 'plottransparencyoverride pto))
   (princ)
)
(vl-load-com) (princ)

Grrr 发表于 2022-7-5 19:13:00

哇!李,你的日常工作进展得很快!
我的猜测是使用VLA的好处。
谢谢你!

Lee Mac 发表于 2022-7-5 19:27:47

不客气,我很高兴它对你有用。
页: [1]
查看完整版本: Can#039;没有发现问题