乐筑天下

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

[编程交流] 从LSP调用DCL

[复制链接]

10

主题

23

帖子

20

银币

初来乍到

Rank: 1

铜币
44
发表于 2022-7-6 10:21:50 | 显示全部楼层 |阅读模式
你好:
 
我想调用这个ync程序,让它加载dcl对话框。两个程序保存在同一文件夹中,并在路径中识别。
 
实际上,ync可能会被合并到我新定义的quit命令中。该命令可以使用特定的保存选项(AutoCAD Mechanical或Vanilla的早期版本)保存图形,也可以退出。
 
根据我的理解,如果我键入“ync”,下面的代码应该运行。然而,我得到了一个无效的命令错误。LISP代码在我们的mnl文件中,如果这是一个问题?
 
非常感谢您在此提供的任何理解。
 
ync lisp代码:
(defun c:ync(/dcl\u ync\u id)
(setq dcl\u ync\u id(加载对话框“ync.dcl”)
(如果(不是(新对话框“退出”dcl\U ync\U id))
(退出)
 
)
(action\u tile“Yes”“(setq cmd($key)(done\u对话框)”)
(action\u tile“No”“(setq cmd($key)(done\u对话框)”)
(action\u tile“Cancel”“(setq cmd($key)(done\u对话框)”)
(start_对话框)
(unload\u对话框dcl\u ync\u id)
(命令cmd)
)
 
 
ync dcl代码:
//ync。dcl
//对话框,用于从AutoLISP中引用“是”、“否”和“取消”选项
//
ync:对话框{
label=“保存图形?”;
:text\u部分{
label=“图纸将保存到AutoCAD Mechanical 2006或AutoCAD 2004,具体取决于使用的轮廓…”;
}
:行{
:按钮{
key=“是”;
label=“是”;
助记符=“Y”;
固定宽度=true;
}
:按钮{
key=“否”;
标签=“否”;
助记符=“N”;
固定宽度=true;
}
:按钮{
key=“取消”;
label=“取消”;
助记符=“C”;
固定宽度=true;
}
}
}
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:27:04 | 显示全部楼层
只是快速看一下。
 
(defun c:ync(/dcl\u ync\u id)
(setq dcl\u ync\u id(加载对话框“ync.dcl”)
(if(not(新对话框“ync”dcl\u ync\u id))
(退出)
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:30:25 | 显示全部楼层
代码中的其他一些错误
 
  1. (defun c:ync(/ dcl_ync_id)
  2. (setq dcl_ync_id (load_dialog "ync.dcl"))
  3. (if (not (new[color=red]_[/color]dialog "ync" dcl_ync_id))
  4.    (exit))
  5. (action_tile "Yes"    "(setq cmd ($key)(done_dialog)" )
  6. (action_tile "No"     "(setq cmd ($key)(done_dialog)" )
  7. (action_tile "Cancel" "(setq cmd ($key)(done_dialog)" )
  8. (start_dialog)
  9. (unload_dialog dcl_ync_id)
  10. (command cmd)
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:35:40 | 显示全部楼层
dcl文件中也有问题。我现在正在看。
回复

使用道具 举报

10

主题

23

帖子

20

银币

初来乍到

Rank: 1

铜币
44
发表于 2022-7-6 10:39:46 | 显示全部楼层
在这里的某个地方,输入上有一个格式错误的列表。你看到了吗??
 
(defun c:ync(/dcl\u ync\u id)
(setq dcl\u ync\u id(加载对话框“ync.dcl”)
(if(not(new\u dialog“ync”dcl\u ync\u id))
(退出)
 
)
(action\u tile“Yes”“(setq cmd($key)(done\u对话框)”)
(action\u tile“No”“(setq cmd($key)(done\u对话框)”)
(action\u tile“Cancel”“(setq cmd($key)(done\u对话框)”)
(start_对话框)
(unload\u对话框dcl\u ync\u id)
(命令cmd)
)
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:42:43 | 显示全部楼层
你错过了一个括号看看我贴的代码。
 
  1. (defun c:ync(/ dcl_ync_id)
  2. (setq dcl_ync_id (load_dialog "ync.dcl")[color=red])[/color]
  3. (if (not (new_dialog "ync" dcl_ync_id))
  4. (exit)
  5. )
  6. (action_tile "Yes" "(setq cmd ($key) (done_dialog)" )
  7. (action_tile "No" "(setq cmd ($key) (done_dialog)" )
  8. (action_tile "Cancel" "(setq cmd ($key) (done_dialog)" )
  9. (start_dialog)
  10. (unload_dialog dcl_ync_id)
  11. (command cmd)
  12. )
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:48:46 | 显示全部楼层
这是dcl,您需要根据自己的喜好进行调整。
 
  1. // ync.dcl
  2. // Dialog box for yes, no, cancel options to be referenced from AutoLISP
  3. //
  4. ync: dialog {
  5.     label = "Save Drawing?";
  6.     : text_part {
  7.       label = "Drawing will be saved to AutoCAD Mechanical 2006 or AutoCAD 2004 depending on profile used... ";
  8.     }
  9.     : row {
  10.      : button { label = "&Yes";  key = "Yes";    is_Yes = true; }
  11.      : button { label = "&No";   key = "No";     is_No = true; }
  12.      : button { label = "&Exit"; key = "cancel"; is_cancel = true;  }
  13.     }
  14.   }
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:50:47 | 显示全部楼层
我删除了“接受”按钮,对此表示抱歉。
回复

使用道具 举报

10

主题

23

帖子

20

银币

初来乍到

Rank: 1

铜币
44
发表于 2022-7-6 10:54:43 | 显示全部楼层
谢谢你。我从来没见过那些。
 
你现在能告诉我如何将答案返回到代码中吗?我计划重新定义quit命令,让它弹出这个对话框并使用结果(是/否/否)。我不确定是应该保留ync(首选),还是只是将代码添加到重新定义的命令中?
回复

使用道具 举报

10

主题

23

帖子

20

银币

初来乍到

Rank: 1

铜币
44
发表于 2022-7-6 10:59:05 | 显示全部楼层
我注意到Yes和No函数在输入时也返回了一个格式错误的列表??
 
命令:ync
*取消*
命令:nil
命令:ync(使用是)
错误:输入列表格式不正确
命令:
命令:ync(未使用)
错误:输入列表格式不正确
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 20:50 , Processed in 0.359336 second(s), 72 queries .

© 2020-2025 乐筑天下

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