乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 110|回复: 13

[编程交流] 关于粘贴多个lisp routin

[复制链接]

29

主题

196

帖子

168

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 10:31:50 | 显示全部楼层
与其加载一堆您可能不使用的例程,不如考虑使用(自动加载…)作用
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 10:40:22 | 显示全部楼层
我不会像Lpseifert那样将所有的lisp合并成一个,我只会合并所有被其他程序反复使用的defuns。我参与了一个大型项目,其中包含了大量的lisp,但它们都链接回了一组核心例程,因此lisp中只有一个函数(checklay),而不是很多代码。所有其他LISP都是在拾取时加载的,我们也只在需要时加载主程序。
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 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自定义下拉菜单&高亮显示=自定义+菜单
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
310
发表于 2022-7-6 10:54:32 | 显示全部楼层
我建议为每个例程添加一个错误处理程序。错误定义中的某些操作可能不适用于所有LISP
看看你创建的Lisp程序的数量,也许一个适用于所有人可能没那么糟糕。。。
实例
  1. (defun c:[color=red]acc[/color] (/ *error* # ss lay id a)
  2. (setvar 'cmdecho 0)
  3. (command "undo" "begin")
  4. (defun *error* (msg)
  5.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  6.         (princ (strcat "\n** Error: " msg " **"))
  7.    )
  8.    (setvar 'nomutt 0)
  9.    (command "undo" "end")
  10.    (setvar 'cmdecho 1)
  11.    (princ)
  12. )
  13. (setq id  0)
  14. (prompt "Select objects to be changed to current layer...")
  15. (setvar 'nomutt 1)
  16. (repeat (setq # (sslength (setq ss (ssget ))))
  17.    (setq a (entget (ssname ss id)))
  18.    (entmod (subst (cons 8 (getvar 'clayer))(assoc 8 a) a))
  19.    (setq id (+ id 1))
  20. )
  21. (setvar 'nomutt 0)
  22. (command "undo" "end")
  23. (setvar 'cmdecho 1)
  24. (princ)
  25. )

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

使用道具 举报

29

主题

196

帖子

168

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 10:59:20 | 显示全部楼层
谢谢大家的不同意见。。。这似乎是可能的。我宁愿每次打开autocad绘图时都加载它们。。。在旧计算机中,最好使用自动加载功能,而不是加载每个图形中的所有文件。
 
无论如何,我没有时间将所有文件粘贴到一个文件中进行测试。。下周末我会试试。如果我有什么麻烦,我会告诉你的。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:59:25 | 显示全部楼层
供您考虑。。。
 
http://forums.augi.com/showthread.php?t=122608
回复

使用道具 举报

29

主题

196

帖子

168

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 11:07:25 | 显示全部楼层
嗯,我花了一段时间来做这个,到目前为止效果还不错。。。我没有收到任何错误的例程。。。我想我会试试的。
newlisp。拉链
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 11:10:06 | 显示全部楼层
神圣的工具包和堆,蝙蝠侠-9912行代码!?!?
 
你要么没有阅读我提供给你的链接,要么你不在乎我提供的建议。。。不管怎样,祝你好运,保持这个巨大的,单片文件。
 
我总是喜欢看到有人重新定义内置符号!(我有黑色幽默感)
 
  1. [color=black][CHECKING TEXT newlisp.lsp loading...][/color]
  2. [color=black].........................[/color]
  3. [color=black]; warning: same symbol found before and after / in arguments list: AVELIST[/color]
  4. [color=black].[/color]
  5. [color=black]; warning: same symbol found before and after / in arguments list: UCSVAL[/color]
  6. [color=black]..[/color]
  7. [color=black]; warning: redefinition of built-in symbol: SET[/color]
  8. [color=black].[/color]
  9. [color=black]; warning: redefinition of built-in symbol: SET[/color]
  10. [color=black]....[/color]
  11. [color=black]; warning: same symbol found before and after / in arguments list: MA[/color]
  12. [color=black].[/color]
  13. [color=black]; warning: same symbol found before and after / in arguments list: MA[/color]
  14. [color=black]...........[/color]
  15. [color=black]; warning: same symbol found before and after / in arguments list: MYTXT[/color]
  16. [color=black]; warning: same symbol found before and after / in arguments list: MYPNT[/color]
  17. [color=black]; warning: same symbol found before and after / in arguments list: MYANG[/color]
  18. [color=black]...[/color]
  19. [color=black]; warning: redefinition of built-in symbol: T[/color]
  20. ....................
  21. ; warning: same symbol found before and after / in arguments list: NAME_N
  22. ; warning: same symbol found before and after / in arguments list: MTEXTS
  23. ; warning: local variable used as function: TTM2
  24. ..
  25. ; warning: same symbol found before and after / in arguments list: NAME_N
  26. ; warning: same symbol found before and after / in arguments list: MTEXTS
  27. ; warning: local variable used as function: TTM2
  28. ..
  29. ; warning: same symbol found before and after / in arguments list: NAME_N
  30. ; warning: same symbol found before and after / in arguments list: MTEXTS
  31. ; warning: local variable used as function: TTM2
  32. .
  33. ; warning: local variable used as function: GETFOLDER
  34. ..........
  35. ; warning: local variable used as function: FUNC_RESTORE-LAYERS
  36. ......
  37. ; warning: same symbol found before and after / in arguments list: #MESSAGE
  38. ; warning: same symbol found before and after / in arguments list: #FILTERLIST
  39. ; warning: local variable used as function: #CHOICE
  40. ..................
  41. ; warning: local variable used as function: DXF
  42. ; warning: local variable used as function: DXF
  43. ; warning: local variable used as function: DXF
  44. ; warning: local variable used as function: DXF
  45. ; warning: local variable used as function: DXF
  46. ; warning: local variable used as function: DXF
  47. .........
  48. ; warning: local variable used as function: BURST
  49. ..
  50. ; warning: local variable used as function: FUNC_RESTORE-LAYERS
  51. ......
  52. ; warning: local variable used as function: @ENT-TYPE-4
  53. ; warning: local variable used as function: @ENT-TYPE-3
  54. ; warning: local variable used as function: @ENT-TYPE-2
  55. ; warning: local variable used as function: @ENT-TYPE-1
  56. ; warning: local variable used as function: @ENT-TYPE-3
  57. ; warning: local variable used as function: @ENT-TYPE-1
  58. ; warning: local variable used as function: @ENT-TYPE-2
  59. ; warning: local variable used as function: @ENT-TYPE-1
  60. ; warning: local variable used as function: @ENT-TYPE-4
  61. ; warning: local variable used as function: @ENT-TYPE-3
  62. ; warning: local variable used as function: @ENT-TYPE-1
  63. ..
  64. ; warning: local variable used as function: LIST->VARIANTARRAY
  65. .
  66. ; warning: local variable used as function: VAL
  67. ; warning: local variable used as function: AT
  68. ; warning: local variable used as function: AT
  69. ; warning: local variable used as function: GETDP
  70. ; warning: local variable used as function: AT
  71. ; warning: local variable used as function: R_FILL
  72. ; warning: local variable used as function: PUT
  73. ...................
  74. ; warning: same symbol found before and after / in arguments list: #MESSAGE
  75. ; warning: same symbol found before and after / in arguments list: #FILTERLIST
  76. ; warning: local variable used as function: #CHOICE
  77. ; warning: local variable used as function: AT:UNDO
  78. ; warning: same symbol found before and after / in arguments list: #STRING
  79. ; warning: local variable used as function: AT:ENTSEL
  80. ; warning: local variable used as function: AT:ENTSEL
  81. ; warning: local variable used as function: _#STRIP
  82. ; warning: local variable used as function: _#STRIP
  83. ......................................
  84. ; warning: local variable used as function: RJP-GETBLOCKNAME
  85. ; warning: local variable used as function: RJP-GETBLOCKNAME
  86. .........
  87. ; warning: redefinition of built-in symbol: T
  88. ; warning: redefinition of built-in symbol: T
  89. ......
  90. ; warning: local variable used as function: GETTEXTWIDTH
  91. ; warning: local variable used as function: REPLACEUNDERLINE
  92. ; warning: local variable used as function: ALIGN_MT
  93. ; warning: local variable used as function: GET_MTOFFSET_PT
  94. ....
  95. ; warning: same symbol found before and after / in arguments list: MTEXTS
  96. ..
  97. ; warning: local variable used as function: AT:UNDO
  98. ; warning: local variable used as function: XREFNAMELIST
  99. ; warning: local variable used as function: LST2STR
  100. ; warning: local variable used as function: XREFNAMELIST
  101. ; warning: local variable used as function: AT:UCSANGLE
  102. ; warning: local variable used as function: GETENT_KWORDS
  103. ; warning: local variable used as function: GETNENT_KWORDS
  104. ; warning: local variable used as function: GETSEGMENT
  105. ; warning: local variable used as function: AT:SS->LIST
  106. ; warning: local variable used as function: AT:ANNORESET
  107. ; warning: local variable used as function: AT:ANNORESET
  108. ; warning: local variable used as function: AT:UNDO
  109. ..........................................
  110. ; warning: local variable used as function: AT:UCSANGLE
  111. ; Check done.
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-5 14:04 , Processed in 0.699932 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表