乐筑天下

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

[编程交流] 用别名分隔文件

[复制链接]

46

主题

161

帖子

104

银币

后起之秀

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

铜币
242
发表于 2022-7-5 18:41:18 | 显示全部楼层 |阅读模式
你好
 
我正在编写lisp例程包,不仅仅是为了我自己。
我想用LISP的别名定义创建自己的文件(类似于pgp文件)
e、 g.我将lisp函数定义为c:XXX
  1. (defun c:MYlisp_1 ... )
  2. (defun c:MYlisp_2 ... )
  3. (defun c:MYlisp_3 ... )

现在我想用别名制作文件(例如txt)
  1. aa MYlisp_1
  2. ae MYlisp_2
  3. qw MYlisp_3

但我不知道如何开始用lisp翻译成CAD:如果用户输入qw,CAD应该开始执行MYlisp_3例程。
我需要让每个用户都可以应用他的快捷方式。
 
我希望我能很好地解释我的意思。
 
提前感谢!
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:56:15 | 显示全部楼层
也许是这个
 
  1. (defun C:qw (if (not mylisp3 (load "MYLISP3")))(C:mylisp3)); expects that your calling a defun from within mylisp.
回复

使用道具 举报

46

主题

161

帖子

104

银币

后起之秀

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

铜币
242
发表于 2022-7-5 19:06:22 | 显示全部楼层
也许是这样的
我使用lisp从文本文件中读取别名,该文件将返回如下内容:
  1. !list_of_aliases
  2. (("aa" "MYlisp_1") ("ae" "MYlisp_2") ("qw" "MYlisp_3"))

现在,在CAD启动时可能会出现这样的情况:
  1. (setq lst
  2. (mapcar
  3.         '(lambda (%)
  4.                 (strcat "(defun C:" (nth 0 %) "() (C:"  (nth 1 %) "))")
  5.        
  6.         )
  7.         list_of_aliases
  8. )
  9. )
  10. (setq file (vl-filename-mktemp "aliases.lsp"))
  11. (WriteFile file lst)
  12. ;WriteFile is my lisp that write list to file
  13. (load file)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:13:58 | 显示全部楼层
这与今天的另一篇帖子几乎相同,我的答案是如何捕捉命令错误并运行lisp,您键入aa Autocad says unknown命令,然后它运行查找列表lisp并加载与aa匹配的正确lisp,抱歉,不知道该怎么做。这将是一个反应堆Lisp程序。
回复

使用道具 举报

46

主题

161

帖子

104

银币

后起之秀

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

铜币
242
发表于 2022-7-5 19:17:59 | 显示全部楼层
我写了这个Lisp程序的句子:
  1. (defun LOADalias ( / data r res lst file)
  2. (setq data (cd:SYS_ReadFile nil "J:\\alias.txt"));alias file with path
  3. (mapcar
  4.         '(lambda (x1)
  5.                 (if       
  6.                         (or
  7.                                 (= ";" (substr x1 1 1))
  8.                                 (= "" (substr x1 1 1))
  9.                                 (= "[" (substr x1 1 1))
  10.                         )
  11.                         nil
  12.                         (setq r (cons x1 r))
  13.                 )
  14.         )
  15.         data
  16. )
  17. (foreach line r
  18.         (setq res (cons (cd:STR_Parse line " " T) res))
  19. )
  20. (setq lst
  21.         (mapcar
  22.                 '(lambda (%)
  23.                         (strcat "(defun C:" (nth 0 %) "() (C:"  (nth 1 %) "))")
  24.                        
  25.                 )
  26.                 res
  27.         )
  28. )
  29. (setq file (vl-filename-mktemp "aliases.lsp"))
  30. (cd:SYS_WriteFile file lst nil)
  31. (load file)
  32. (princ)
  33. )

它正在工作
Bolow示例。带别名的txt文件
  1. ;only spacebar allowed
  2. [v1.00]
  3. user_alias1      my_lisp1
  4. user_alias2      my_lisp2
  5. user_alias3      my_lisp3
  6. [v1.01]
  7. user_alias4      my_lisp4
  8. user_alias5      my_lisp5
  9. user_alias6      my_lisp6

要运行LOADalias,必须加载附加的lisp库
Cad_包。lsp
回复

使用道具 举报

8

主题

1133

帖子

1164

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 19:28:32 | 显示全部楼层
只是一个无聊的想法-为什么lisps需要别名?
 
你可以用任何你喜欢的命令名来编写lisp,所以让实际lisp的命令变得简单一些,这样你就不需要别名了。
回复

使用道具 举报

46

主题

161

帖子

104

银币

后起之秀

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

铜币
242
发表于 2022-7-5 19:34:24 | 显示全部楼层
 
答案在我的第一个帖子里
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:47:20 | 显示全部楼层
一个叫公司标准的东西浮现在脑海中,一个别名一个命令。所有员工都生活在一个共同的环境中。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 13:24 , Processed in 0.410545 second(s), 68 queries .

© 2020-2025 乐筑天下

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