乐筑天下

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

[编程交流] 模糊层lisp

[复制链接]

2

主题

7

帖子

5

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 16:43:51 | 显示全部楼层 |阅读模式
你好
我有这个lisp例程,可以在特定层中创建任何维度,而不管当前层是什么。在这个lisp中,有一个启动和停止这个函数的规定。这是我不想要的。
 
有人能帮我删除这个启动/停止功能吗?这意味着一旦我加载应用程序,它就已经处于活动状态。启动和停止无需额外命令。我对Autolisp一点也不熟悉,所以不知道怎么做。
 
在创建新文件或打开现有文件时,是否可以预加载任何lisp?
 
 
  1. (vl-load-com)
  2. (defun DimReactor:Start ()
  3. (or *DimReactor*
  4.      (setq *DimReactor*
  5.             (vlr-command-reactor
  6.               nil
  7.               '(
  8.                 (:vlr-commandcancelled . DimReactor:CommandEnded)
  9.                 (:vlr-commandended . DimReactor:CommandEnded)
  10.                 (:vlr-commandfailed . DimReactor:CommandEnded)
  11.                 (:vlr-commandwillstart . DimReactor:CommandWillStart)
  12.                )
  13.             )
  14.      )
  15. )
  16. (prompt "\nDimension reactor loaded. ")
  17. (princ)
  18. )
  19. (defun DimReactor:CommandEnded (rea cmd)
  20. (if
  21.    (and
  22.      *DimReactorLayer*
  23.      (wcmatch
  24.        (strcase (car cmd))
  25.        "DIMA*,DIMB*,DIMC*,DIMD*,DIMI*,DIMJ*,DIML*,DIMO*,DIMR*,DIMSP*,QDIM"
  26.      )
  27.    )
  28.     (progn
  29.       (setvar 'clayer *DimReactorLayer*)
  30.       (setq *DimReactorLayer* nil)
  31.     )
  32. )
  33. )
  34. (defun DimReactor:CommandWillStart (rea cmd / layerName)
  35. (if
  36.    (wcmatch
  37.      (strcase (car cmd))
  38.      "DIMA*,DIMB*,DIMC*,DIMD*,DIMI*,DIMJ*,DIML*,DIMO*,DIMR*,DIMSP*,QDIM"
  39.    )
  40.     (progn
  41.       (setq *DimReactorLayer* (getvar 'clayer))
  42.       (vla-add
  43.         (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
  44.         (setq layerName "Dimension Line")
  45.       )
  46.       (setvar 'clayer layerName)
  47.     )
  48. )
  49. )
  50. (defun c:DimReactorStart ()
  51. (DimReactor:Start)
  52. )
  53. (defun c:DimReactorStop ()
  54. (if *DimReactor*
  55.    (progn
  56.      (vlr-remove *DimReactor*)
  57.      (setq *DimReactor* nil)
  58.    )
  59. )
  60. (prompt "\n** Dimension reactor stopped ** ")
  61. (princ)
  62. )
  63. ;; Uncomment next line to start automatically.
  64. ;;(DimReactor:Start)
  65. (princ)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:12:44 | 显示全部楼层
你好
 
请通过添加代码标签[#]来修改您的帖子,因此只需选择代码并点击图案填充按钮#,就会自动包装代码。
 
删除这两个命令
  1. <c:Dimreactorstart , c:Dimreactorstop>
及其所有代码,只需在lisp文件的末尾添加以下函数。
 
  1. (dimreactor:start)

 
要在启动时自动运行代码,只需将代码添加到acaddoc中。应该存在于您的支持文件夹中的lsp。
回复

使用道具 举报

2

主题

7

帖子

5

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 17:16:09 | 显示全部楼层
非常感谢。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:41:01 | 显示全部楼层
 
非常欢迎你。
回复

使用道具 举报

5

主题

1074

帖子

1088

银币

初来乍到

Rank: 1

铜币
9
发表于 2022-7-5 17:45:03 | 显示全部楼层
看起来萨尔瓦特已经让你回到了轨道上,但仅供参考,我最喜欢的李-麦克Lisp程序是层导演。
 
地球上的每个人都应该认真地使用它。
 
除了其他非常有用的事情外,它还可以为您做到这一点,比如将所有文本放在文本层上(或者在您事先告诉它的任何地方),将所有视口放在特定层上。
如果lisp中指定的图层在图形中尚不存在,它将使用您在根据个人需要设置lisp时定义的设置创建图层。例如,您可能希望所有领导者都在哪一层?
看看这个链接,它绝对棒极了。
谢谢李!
您只需要稍微考虑一下要为任何给定层定义什么命令,以及层的颜色和名称。
这个lisp可以即时工作,你不需要考虑它,它会把事情放在你告诉它的地方,没有任何用户交互,然后直接返回到你所在的层,然后调用任何命令,例如DimRadial。
如果你像我一样,你会希望这个自动加载,所以你再也不需要考虑层。
我已将其加载到启动套件中,因此每次启动Autocad时,它都会自动启动,并使整个过程更加顺畅。
不难看出我对李的优秀作品的高度评价。
我的lisp目录中可能有95%的lisp是他的,有充分的理由,它们很棒!
再次感谢李!
 
为了更好地了解lisp的功能,以及如何根据您的喜好对其进行个性化设置,请将其下载到lisp文件夹中,然后用记事本打开。李对它的功能做了非常有益的描述。
174355q87o83ypqqfphhqf.jpg
174356eto7od9hr9xhtee7.jpg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-23 13:43 , Processed in 2.141054 second(s), 64 queries .

© 2020-2025 乐筑天下

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