gilsoto13 发表于 2022-7-6 10:27:01

关于粘贴多个lisp routin

大家好。
 
现在,离开论坛一段时间后,我想在一个文件中粘贴几十个例程,以便在需要时更容易加载和删除。只是为了避免有很多文件。我读到,如果变量或“集”没有正确本地化,可能会造成麻烦,有人能给我一个意见吗。。。我明天会做测试,看看是否有问题。
 
我想粘贴到其中的文件附加在一个zip文件中。并不是所有人都会合并,但大多数人都会合并。我不会超过任何有DCL的人。但计划在这个大文件中插入简单的小LISP。
仪器。拉链

lpseifert 发表于 2022-7-6 10:31:50

与其加载一堆您可能不使用的例程,不如考虑使用(自动加载…)作用

BIGAL 发表于 2022-7-6 10:40:22

我不会像Lpseifert那样将所有的lisp合并成一个,我只会合并所有被其他程序反复使用的defuns。我参与了一个大型项目,其中包含了大量的lisp,但它们都链接回了一组核心例程,因此lisp中只有一个函数(checklay),而不是很多代码。所有其他LISP都是在拾取时加载的,我们也只在需要时加载主程序。

The Buzzard 发表于 2022-7-6 10:42:52

吉尔索托13,
 
下面来自Afralisp的链接将解释全局和局部变量。我不会加载一堆可能无法使用的例程。您还可以使用菜单宏创建一个自定义下拉菜单,其中包含要加载和运行的例程。请参见底部链接。
 
变量本地化
http://www.afralisp.net/archive/lispa/lisp5.htm
 
自定义菜单
http://www.cadtutor.net/forum/showthread.php?37320-CUI自定义下拉菜单&高亮显示=自定义+菜单

Freerefill 发表于 2022-7-6 10:46:09

只要变量是本地化的,即使所有LISP例程都在一个文件中,也应该没有问题。有时你可能也需要“本地化”你的函数,例如,如果函数A调用函数B,而函数C调用函数B,但是你意识到你需要调整B以适应C,那么你可以创建一个新的函数B,并将两者重命名为函数A-B和函数C-B。至少,我是这样做的。我已经加载了几个LISP,其中几个使用相同的函数,但每次使用相同的函数时,它被称为不同的东西(以防万一),我有一个LISP文件,其中包含近120个单独的函数。我没有任何问题。

Lt Dan's l 发表于 2022-7-6 10:54:32

我建议为每个例程添加一个错误处理程序。错误定义中的某些操作可能不适用于所有LISP
看看你创建的Lisp程序的数量,也许一个适用于所有人可能没那么糟糕。。。
实例

(defun c:acc (/ *error* # ss lay id a)
(setvar 'cmdecho 0)
(command "undo" "begin")
(defun *error* (msg)
   (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
      (princ (strcat "\n** Error: " msg " **"))
   )
   (setvar 'nomutt 0)
   (command "undo" "end")
   (setvar 'cmdecho 1)
   (princ)
)
(setq id0)
(prompt "Select objects to be changed to current layer...")
(setvar 'nomutt 1)
(repeat (setq # (sslength (setq ss (ssget ))))
   (setq a (entget (ssname ss id)))
   (entmod (subst (cons 8 (getvar 'clayer))(assoc 8 a) a))
   (setq id (+ id 1))
)
(setvar 'nomutt 0)
(command "undo" "end")
(setvar 'cmdecho 1)
(princ)
)

*这可以通过几种方式实现。只是我做事的方式*

gilsoto13 发表于 2022-7-6 10:59:20

谢谢大家的不同意见。。。这似乎是可能的。我宁愿每次打开autocad绘图时都加载它们。。。在旧计算机中,最好使用自动加载功能,而不是加载每个图形中的所有文件。
 
无论如何,我没有时间将所有文件粘贴到一个文件中进行测试。。下周末我会试试。如果我有什么麻烦,我会告诉你的。

BlackBox 发表于 2022-7-6 10:59:25

供您考虑。。。
 
http://forums.augi.com/showthread.php?t=122608

gilsoto13 发表于 2022-7-6 11:07:25

嗯,我花了一段时间来做这个,到目前为止效果还不错。。。我没有收到任何错误的例程。。。我想我会试试的。
newlisp。拉链

BlackBox 发表于 2022-7-6 11:10:06

神圣的工具包和堆,蝙蝠侠-9912行代码!?!?
 
你要么没有阅读我提供给你的链接,要么你不在乎我提供的建议。。。不管怎样,祝你好运,保持这个巨大的,单片文件。
 
我总是喜欢看到有人重新定义内置符号!(我有黑色幽默感)
 


.........................
; warning: same symbol found before and after / in arguments list: AVELIST
.
; warning: same symbol found before and after / in arguments list: UCSVAL
..
; warning: redefinition of built-in symbol: SET
.
; warning: redefinition of built-in symbol: SET
....
; warning: same symbol found before and after / in arguments list: MA
.
; warning: same symbol found before and after / in arguments list: MA
...........
; warning: same symbol found before and after / in arguments list: MYTXT
; warning: same symbol found before and after / in arguments list: MYPNT
; warning: same symbol found before and after / in arguments list: MYANG
...
; warning: redefinition of built-in symbol: T
....................
; warning: same symbol found before and after / in arguments list: NAME_N
; warning: same symbol found before and after / in arguments list: MTEXTS
; warning: local variable used as function: TTM2
..
; warning: same symbol found before and after / in arguments list: NAME_N
; warning: same symbol found before and after / in arguments list: MTEXTS
; warning: local variable used as function: TTM2
..
; warning: same symbol found before and after / in arguments list: NAME_N
; warning: same symbol found before and after / in arguments list: MTEXTS
; warning: local variable used as function: TTM2
.
; warning: local variable used as function: GETFOLDER
..........
; warning: local variable used as function: FUNC_RESTORE-LAYERS
......
; warning: same symbol found before and after / in arguments list: #MESSAGE
; warning: same symbol found before and after / in arguments list: #FILTERLIST
; warning: local variable used as function: #CHOICE
..................
; warning: local variable used as function: DXF
; warning: local variable used as function: DXF
; warning: local variable used as function: DXF
; warning: local variable used as function: DXF
; warning: local variable used as function: DXF
; warning: local variable used as function: DXF
.........
; warning: local variable used as function: BURST
..
; warning: local variable used as function: FUNC_RESTORE-LAYERS
......
; warning: local variable used as function: @ENT-TYPE-4
; warning: local variable used as function: @ENT-TYPE-3
; warning: local variable used as function: @ENT-TYPE-2
; warning: local variable used as function: @ENT-TYPE-1
; warning: local variable used as function: @ENT-TYPE-3
; warning: local variable used as function: @ENT-TYPE-1
; warning: local variable used as function: @ENT-TYPE-2
; warning: local variable used as function: @ENT-TYPE-1
; warning: local variable used as function: @ENT-TYPE-4
; warning: local variable used as function: @ENT-TYPE-3
; warning: local variable used as function: @ENT-TYPE-1
..
; warning: local variable used as function: LIST->VARIANTARRAY
.
; warning: local variable used as function: VAL
; warning: local variable used as function: AT
; warning: local variable used as function: AT
; warning: local variable used as function: GETDP
; warning: local variable used as function: AT
; warning: local variable used as function: R_FILL
; warning: local variable used as function: PUT
...................
; warning: same symbol found before and after / in arguments list: #MESSAGE
; warning: same symbol found before and after / in arguments list: #FILTERLIST
; warning: local variable used as function: #CHOICE
; warning: local variable used as function: AT:UNDO
; warning: same symbol found before and after / in arguments list: #STRING
; warning: local variable used as function: AT:ENTSEL
; warning: local variable used as function: AT:ENTSEL
; warning: local variable used as function: _#STRIP
; warning: local variable used as function: _#STRIP
......................................
; warning: local variable used as function: RJP-GETBLOCKNAME
; warning: local variable used as function: RJP-GETBLOCKNAME
.........
; warning: redefinition of built-in symbol: T
; warning: redefinition of built-in symbol: T
......
; warning: local variable used as function: GETTEXTWIDTH
; warning: local variable used as function: REPLACEUNDERLINE
; warning: local variable used as function: ALIGN_MT
; warning: local variable used as function: GET_MTOFFSET_PT
....
; warning: same symbol found before and after / in arguments list: MTEXTS
..
; warning: local variable used as function: AT:UNDO
; warning: local variable used as function: XREFNAMELIST
; warning: local variable used as function: LST2STR
; warning: local variable used as function: XREFNAMELIST
; warning: local variable used as function: AT:UCSANGLE
; warning: local variable used as function: GETENT_KWORDS
; warning: local variable used as function: GETNENT_KWORDS
; warning: local variable used as function: GETSEGMENT
; warning: local variable used as function: AT:SS->LIST
; warning: local variable used as function: AT:ANNORESET
; warning: local variable used as function: AT:ANNORESET
; warning: local variable used as function: AT:UNDO
..........................................
; warning: local variable used as function: AT:UCSANGLE
; Check done.
页: [1] 2
查看完整版本: 关于粘贴多个lisp routin