Hardeight 发表于 2022-7-6 00:27:30

我写了一个我在工作中使用的,我真的不确定它是否能帮到你,因为我在代码中使用了很多我们的标准来缩小我想要打印的图形和目录的范围。不过基本上,它会得到一个图形列表,编写一个脚本,运行脚本打开所有图形,然后运行我编写的自动打印lisp,关闭图形并继续下一个。
如果你想要的话,我可以贴出来,但就像我说的,你肯定要修改它。

Lee Mac 发表于 2022-7-6 00:32:01

 
啊,对了,我明白了,也许一个Mod可以做到
 
但选择正确的线程或合并最好的线程将是一项艰巨的任务。。。

Commandobill 发表于 2022-7-6 00:33:11

 
我认为任何输入都是好的

Hardeight 发表于 2022-7-6 00:38:29

 
这是我使用的lisp绘图,脚本调用它。
 

Lee Mac 发表于 2022-7-6 00:41:37

提示:为什么不使用
<p> tags when posting code, instead of </p> tags - then the code will be indented

Hardeight 发表于 2022-7-6 00:42:51

哎呀,
哈哈,很抱歉,我做了一个快速回复,只是使用了

Lee Mac 发表于 2022-7-6 00:48:13

没问题,只是提醒你一下

Freerefill 发表于 2022-7-6 00:48:37

我已经研究这个问题8个多月了。
 
我用我所有的技巧,还有很多我没有的技巧,把我(现在)的骄傲和快乐,亲切地命名为闪电战。因为它是为我们在工作中使用的绘图设备定制的,所以我决定省去“绒毛”,为优秀的人提供重要的部分。。也就是说,只是闪电战。
 
也就是说,请允许我谦恭地介绍我的批lisp。如果你对它的功能有任何疑问,请告诉我。此外,我知道还有一些松散的结尾,我相信这可以从头开始,并重新工作到更有效的东西。如果你有任何意见或建议,请告诉我。
 
第1部分,共2部分
 

; Blitz Batch Program
; Written by Mark Mercier, with a little help from my friends
; Version history:
;    08/06/08 v3 Alpha - printlayout, makeitso and dostuff functions operating
;    08/07/08 v3.1 Alpha - printsettings function operating
;    08/07/08 v3.14 Beta - makeitso function operating, first Beta version.
;    09/10/08 v3.141 - Most non-setting-related bugs removed and help option added. Improved layout list functionality.
;    01/23/09 v3.1415 - Added function for selection of multiple settings
;    01/30/09 v3.14159 - Added function for complex tab selection
;    04/03/09 v3.141592 - Added function for plotting all files in a directory
;    04/10/09 v3.1415926 - Added subdirectory capability
(defun c:bz() (blitz))

(defun blitz()
(princ "\n** Blitz - v3.1415926 **\n")
(printsettings)                  ; Determine print settings
(printlayout)                        ; Determine layouts to plot
(if warpFactor (engage) (makeitso))            ; Use collected variables to plot
(princ)
)

; - Begin function set for collecting print settings - ;

(defun printsettings()
(setq multSettings nil)
(setq printSetting nil)
(setq printSettingList nil)
(setq dirget "none")
(setq dirPat "*")
(setq dirSub "0")
(setq warpFactor nil)
(setq blitzPrintInputList nil)
(setq copies 1)
(setq printsetWhile 1)
(GetPlotDevices)
(while (= printsetWhile 1)
(setq printsettingCheck nil)
(princ "\n")
(setq printsettingGet (getstring "\nSelect number or : "))
   (cond
   
   ; Create a condition to test for user input. In the (dostuff) function, create a correlating condition which supplies said function.
   ; If plotting, create a function to check whether plot device exists, thereby allowing the user to remain in program loop upon device failure.
   ; Similarly, functions can be present within the condition to test any other user input aside from selected setting, as to prevent errors later.
   ((= printsettingGet "0") (printcheck))
   
   ((or (= (strcase printsettingGet) "D") (= (strcase printsettingGet) "DIRECTORY")) (directoryGet))
   ((= (strcase printsettingGet) "U") (setq multSettings 1))
   (t
      (princ "\nOption not available, please select another.")
      )
   )
   )
(princ printSettingList)
(setq blitzPrintInputList (append blitzPrintInputList (list (list (itoa copies)))))
(setq blitzPrintInputList (append blitzPrintInputList (list printSettingList)))
)

(defun printcheck()
; Check to see if the current selection is kosher. If plot device or other settings are unavailable, inform the user and return to main loop.
(if (or (= printsettingCheck nil) (membercase printsettingCheck DEVICELIST))
   (progn
   (if multSettings
   (progn
   (setq printSettingList (append printSettingList (list printSettingGet)))
   (princ "\nPrint setting appended")

   (setq acceptWhile nil)
   (while (not acceptWhile)
       (princ "\nCurrent settings: ")(princ printSettingList)(princ)
       (setq acceptSettings (getstring "\nContinue with selected plot settings? <No> "))
       (cond
         ((or (= acceptSettings "Y") (= acceptSettings "y"))
          (setq printsetWhile 2)
          (setq acceptWhile 1)
          )
         ((or (= acceptSettings "") (= acceptSettings "N") (= acceptSettings "n"))
          (setq acceptWhile 1)
          )
         ((or (= acceptSettings "R") (= acceptSettings "r"))
          (removeSetting)
          )
         (t
          (princ "\nOption not available, please try again")
          )
         )
       (if (not printSettingList)
         (progn
       (setq acceptWhile 1)
       (princ "\nAll selections removed.")
       )
         )
       )
   )
   (progn
   (setq printSettingList (list printsettingGet))
   (setq printsetWhile 2)
   (princ "\nPrint setting accepted")
   )
   )
   )
   (progn
   (princ "\nPrint setting not available.")
   )
   )
)

(defun removeSetting()
(setq removeWhile nil)
(while (not removeWhile)
   (setq removeOption (getstring "\nEnter desired setting to remove: "))
   (if (member removeOption printSettingList)
   (progn
   (setq printSettingList (remFromList removeOption printSettingList))
   (setq removeWhile 1)
   (princ "\nSetting removed.")
   )
   (princ "\nSetting not available.")
   )
   )
)

(defun directoryGet()
(setq dirOpsWhile nil)
(while (not dirOpsWhile)
   (princ (strcat "\nCurrent directory: " dirGet " - Current pattern: " dirPat ".dwg - Subdirectory level: " dirSub))
   (setq dirOp (getstring "\nEnter option : "))
   (cond
   ((= (strcase dirOp) "D")
      (setq pathGetWhile 1)
      (while pathGetWhile
    (setq dirGetGet (getstring "\nEnter directory search path in the form \"C:\\Folder 1\\Folder 2\" or : "))
    (if (or (vl-directory-files dirGetGet nil 1) (= (strcase dirGetGet) "B"))
      (progn
      (if (not (= (strcase dirGetGet) "B")) (setq dirGet dirGetGet))
      (setq pathGetWhile nil)
      )
      (progn
      (princ "\nDirectory does not exist. Please try again.")
      )
      )
    )
      (if (= dirGet "") (setq dirGet "none"))
      )
   ((= (strcase dirOp) "S")
      (setq dirSubWhile 1)
      (while dirSubWhile
    (setq dirSubGet (getstring "\nEnter level of subdirectories : "))
    (setq badSubList (list "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"))
      (if (not (strmemlst badSubList (list dirSubGet)))
      (progn
      (princ "\nSelected characters not allowed. Please try again.")
      )
      (progn
      (setq dirSub dirSubGet)
      (setq dirSubWhile nil)
      )
      )
    )
      (if (= dirSub "") (setq dirSub "0"))
      )
   ((= (strcase dirOp) "P")
      (setq patternGetWhile 1)
      (while patternGetWhile
    (setq patternGet (getstring "\nEnter file search pattern using asterisk (*) as wildcard (do not include .dwg extention) <*>: "))
      (setq badList (list "\\" "/" ":" "." "?" "\"" "<" ">" "|"))
      (if (strmemlst badList (list patternGet))
      (progn
      (princ "\nSelected characters not allowed. Please try again.")
      (setq dirPat "*")
      )
      (progn
      (setq dirPat patternGet)
      (setq patternGetWhile nil)
      )
      )
      (if (= dirPat "") (setq dirPat "*"))
    )
      )
   ((= (strcase dirOp) "C")
      (setq dirPat "*")
      (setq dirget "none")
      (setq dirSub "0")
      (setq warpFactor nil)
      (princ "\nDirectory settings removed. Only the current drawing will be affected.")
      )
   ((= (strcase dirOp) "F")
      (filesShow)
      )
   ((= (strcase dirOp) "E")
      (setq allDirsList (subdir dirGet dirSub))
      (setq allFilesList (getfiles allDirsList dirPat))
      
      (if allFilesList
    (progn
      (princ "\nSettings accepted!")
      (setq warpFactor 1)
      (setq dirOpsWhile 1)
      )
    (progn
      (initget 1 "Y N")
      (setq lastchoice (getkword "\nSelected settings return a nil file list. Try again? <Y>: "))
      (if (= (strcase lastchoice) "N")
      (progn
          (setq dirGet "none")
          (setq dirPat "*")
          (setq dirSub "0")
          (setq warpFactor nil)
          (setq dirOpsWhile 1)
          (princ "\nDirectory settings removed. Only the current drawing will be affected.")
          )
      )
      )
    )
      )
   (t
      )
   )
   );/while
(princ)
)

(defun filesShow()
(setq allDirsListShow (subdir dirGet dirSub))
(setq allFilesListShow (getfiles allDirsListShow dirPat))
(if allFilesListShow (princ allFilesListShow) (princ "\nNo files available with given settings."))
(getstring "\nPress 'Enter' key to continue. ")
)

Freerefill 发表于 2022-7-6 00:53:21

第2部分,共2部分
 
我希望你觉得它有用^
 
;-开始收集要打印的布局选项卡的功能-;(defun printlayout();Start(setq printlayWhileStart 1)(setq printlayWhileEnd 1)(setq printTabList nil)(setq printTabListEngage nil)(setq specialList nil)(princ(strcat“\n此图形中有”(rtos(长度(布局列表))2 0)“布局选项卡”)(princ)(while(=printlayWhileStart 1)(setq printlayStart(getstring“\n选择开始布局编号或:”)(setq printtablelistengage(append printtablelistengage(list printlayStart))(cond((or(=printlayStart“t”)(=printlayStart“This”)(=printlayStart“This”)(setq printlayWhileStart 2)(setq printlayWhileEnd 2)(setq printlayEnd 0)(setq var1num 0)(foreach var1(layoutlist)(setq var1num(+1 var1num))(if(=var1(getvar“ctab”))(progn(setq printStart(-var1num 1))(setq printEnd(-var1num 1))(if(=(getvar“ctab”)“Model”)(progn(setq printlayWhileStart 1)(princ“Cannot plot Model tab”)))((或(=printlayStart“a”)(=printlayStart“all”)(=printlayStart“a”)(=printlayStart“all”)(setq printlayWhileStart 2)(setq printlayWhileEnd 2)(setq printlayEnd 0)(setq printlayEnd(-length(Get Layout List))1))((或(=printlayStart“c”)(=printlayStart“current”)(=printlayStart“current”)(=printlayStart“c”)(=printlayStart“current”)(setq printlayWhileStart 2)(setq var1num 0)(foreach var1(layoutlist)(setq var1num(+1 var1num))(if(=var1(getvar“ctab”)(progn(setq printStart(-var1num 1)))(if(=(getvar“ctab”)“Model”)(progn(setq printlayWhileStart 1)(princ“不能以Model tab开头”)))(>(atoi printlayStart)(length(layoutlist))(princ“\n开始布局选项卡不得大于总布局选项卡”)((/=(strlen printlayStart)(strlen(rtos(atoi printlayStart)2 0))(princ“\n格式输入”)(/=(atoi printlayStart)0)(setq printStart(-(atoi printlayStart)1))(setq printlayWhileStart 2))(t(princ(strcat printlayStart“不是一个选项。”));End(while(=printlayWhileEnd 1)(setq printlayEnd(getstring“\n选择结束布局编号或:”)(setq printtablelistengage(append printtablelistengage(list printlayStart))(cond((or(=printlayEnd“E”)(=printlayEnd“E”))(setq printlayWhileEnd 2)(setq printEnd(-length(layoutlist))1))(=(atoi printlayEnd)0)(princ“输入/选项卡上不存在错误。”))(>printStart(atoi printlayEnd))(princ“端点在起点之前”)((=(nth(-atoi printlayEnd)1)(layoutlist))nil)(princ“选项卡号不存在”)(printlayEnd(setq printlayWhileEnd 2)(setq printlayEnd(-atoi printlayEnd)1))(t(princ(strcat printlayEnd“不是选项”))))(如果(非特殊列表)(progn(setq listVarA printStart)(而(

Lee Mac 发表于 2022-7-6 00:56:51

喜欢版本号。。。如果你知道我的意思的话,很好吃。。
页: 1 [2]
查看完整版本: 批绘图Lisp?