乐筑天下

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

[编程交流] 从中删除引号

[复制链接]

3

主题

19

帖子

16

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 12:04:12 | 显示全部楼层 |阅读模式
谈到Lisp函数,我有点生疏了。
 
是否有一个函数可以从变量中去掉引号?
 
我有一个rountine,变量设置为“C:NAME”。要在Lisp例程中使用该变量,需要删除引号。
 
有没有简单的方法(与AutoCAD14兼容)?
 
谢谢
 
拉祖
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2022-7-6 12:07:52 | 显示全部楼层
你好
 
读取功能?
 
(读取“C:NAME”)返回C:NAME
回复

使用道具 举报

3

主题

19

帖子

16

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 12:12:45 | 显示全部楼层
 
啊,是的,我现在想起来了
 
谢谢你的快速回复。
 
拉祖
回复

使用道具 举报

3

主题

19

帖子

16

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 12:16:18 | 显示全部楼层
嗯,现在还不能用!
 
我试图定义一个例程,用于按需加载lisp例程。
 
基本上,当从菜单中调用lisp例程时,会检查例程是否已加载。如果是,则只调用命令名。如果不是,则首先加载lisp文件,然后调用命令名。
 
(如果(不是C:名称)(加载“名称”)。。。等
 
名称存储为变量fn中的“NAME”
 
我狡猾的计划是使用:
 
(如果(不是(读取(strcat“C:”fn))(加载fn)。。。。
 
但它不起作用,(not(读取(strcat“C:”fn))总是返回nil。
 
(read(strcat“C:”fn))正确返回C:NAME
 
有什么想法吗?
 
拉祖
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:20:33 | 显示全部楼层
试试这个:
 
  1. (if (not (read (strcat "(C:" fn ")")))
  2. (load fn)
  3. )

 
或者类似的东西。。
 
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2022-7-6 12:22:09 | 显示全部楼层
你好
 
这些是LISP基础知识(不仅仅是AutoLISP,所有LISP语言)。
eval返回一个符号,如果您想知道此符号是否绑定到函数,可以使用eval函数:
 
  1. (if (not (eval (read (strcat "c:" fn))))
  2. (load fn)
  3. )
回复

使用道具 举报

3

主题

19

帖子

16

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 12:25:13 | 显示全部楼层
谢谢李和吉尔,我会试试你的建议。
 
当做
 
拉祖
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2022-7-6 12:29:51 | 显示全部楼层
李,
 
(not(read(strcat)(c:“fn”))应始终返回nil,无论fn是什么,因为(read(strcat)(c:“fn”))始终返回包含符号(也未评估)的列表(未评估)。
 
Razoo,
 
也可以使用boundp代替eval
如果符号(c:+fn值)有界于某个值,则(boundp(read(strcat“c:”fn)))应返回T,否则返回nil。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:32:15 | 显示全部楼层
感谢Gile的澄清
回复

使用道具 举报

3

主题

19

帖子

16

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 12:34:52 | 显示全部楼层
 
正在取得进展(缓慢)!
 
其中fn设置为“NAME”:
 
(boundp(read(strcat“C:”fn)))在未加载Lisp例程(返回nil)和加载Lisp例程(返回t)时都可以正常工作。
 
(eval(read(strcat“C:”fn)))仅在未加载Lisp例程时有效(返回nil)。加载Lisp例程时,它似乎会回显大部分Lisp文件。
 
我现在在加载后运行Lisp例程时遇到了类似的问题。通常(C:NAME)将运行NAME。LSP
 
不幸的是,(read(strcat“C:”fn))没有运行Lisp例程,即使它返回C:NAME
 
知道如何使用变量fn中存储的“NAME”启动Lisp例程吗?
 
谢谢
 
Razoo(谁认为这个Lisp例程写起来很难!)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 10:17 , Processed in 0.502935 second(s), 72 queries .

© 2020-2025 乐筑天下

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