乐筑天下

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

[编程交流] 是否运行seper对话框

[复制链接]

15

主题

64

帖子

49

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 20:12:21 | 显示全部楼层 |阅读模式
 
 
如何在同一个lisp中“调用/转到”另一个defun。当我尝试它时,它告诉我;错误:没有函数定义:
 
  1. (vl-load-com)
  2. ;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
  3. (SETQ reply1 (ACET-UI-MESSAGE (strcat  "Some Text")
  4.                   "Some Header" 36))
  5. (IF (= reply1 6) (c:mos2nsc))
  6. (IF (= reply1 7) (c:runlater))
  7. ;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
  8. (defun c:mos2nsc ( / )
  9. (SETQ reply2 (ACET-UI-MESSAGE (strcat  "Some Text")
  10.                                "Some Header" 20))
  11. (IF (= reply2 6) (c:replyyes))
  12. (IF (= reply2 7) (c:runlater))
  13. )
  14. ;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
  15. (defun c:replyyes ( / of_epk of_pt)
  16. (setvar "cmdecho" 0)
  17. (if (null of_dist) (setq of_distx 1.0))
  18. (initget 6)
  19. (if (null (setq of_dist (getdist (strcat "\nPlease Enter the Offset Distance <>: "))))
  20. (setq of_dist of_distx)
  21. )
  22. (setq of_distx of_dist)
  23. (if (null of_elev) (setq of_elevx 0.0))
  24. (if (null (setq of_elev (getreal (strcat "\nPlease Enter the Elevation Difference - For a Negative Use a '-' <>: "))))
  25. (setq of_elev of_elevx)
  26. )
  27. (setq of_elevx of_elev)
  28. (while (or (setq of_epk (entsel)) (eq 7 (getvar "errno")))
  29. (if (and of_epk
  30. (member (cdr (assoc 100 (reverse (entget (car of_epk)))))
  31. '("AcDbPolyline" "AcDb2dPolyline"))
  32. (setq of_pt (getpoint "\nPlease Select the Side to offset: "))
  33. )
  34. (command "_.offset" of_dist of_epk of_pt "" "_.move" (entlast) ""
  35. (list 0.0 0.0 of_elev) "")
  36. )
  37. )
  38. (princ)
  39. )
  40. ;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
  41. (defun c:runlater ( / )
  42. (acet-ui-message "To run later, type 'MOS2NSC' anytime to begin to conversion process." "Some Header" 64)
  43. )
回复

使用道具 举报

15

主题

64

帖子

49

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 20:17:19 | 显示全部楼层
你好
 
 
我正在处理一个当前的Lisp程序问题。我在这个网站上找到了一些“是/否”对话框/警报框的代码。我正在尝试修改它,使每个按钮都能跳转到同一lisp中的不同部分/不同定义。当我运行它时,它表示函数不存在。我已将其设置为在加载时启动“是/否”框。单击“是”立即运行,单击“否”稍后运行。当我点击否时,我得到:;错误:没有函数定义:C:RUNLATER。我希望有人能帮我。
 
 
非常感谢。
 
 
  1. (vl-load-com)
  2. ;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
  3. (SETQ reply1 (ACET-UI-MESSAGE (strcat  "Some Text")
  4.                   "Some Header" 36))
  5. (IF (= reply1 6) (c:mos2nsc))
  6. (IF (= reply1 7) (c:runlater))
  7. ;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
  8. (defun c:mos2nsc ( / )
  9. (SETQ reply2 (ACET-UI-MESSAGE (strcat  "Some Text")
  10.                                "Some Header" 20))
  11. (IF (= reply2 6) (c:replyyes))
  12. (IF (= reply2 7) (c:runlater))
  13. )
  14. ;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
  15. (defun c:replyyes ( / of_epk of_pt)
  16. (setvar "cmdecho" 0)
  17. (if (null of_dist) (setq of_distx 1.0))
  18. (initget 6)
  19. (if (null (setq of_dist (getdist (strcat "\nPlease Enter the Offset Distance <>: "))))
  20. (setq of_dist of_distx)
  21. )
  22. (setq of_distx of_dist)
  23. (if (null of_elev) (setq of_elevx 0.0))
  24. (if (null (setq of_elev (getreal (strcat "\nPlease Enter the Elevation Difference - For a Negative Use a '-' <>: "))))
  25. (setq of_elev of_elevx)
  26. )
  27. (setq of_elevx of_elev)
  28. (while (or (setq of_epk (entsel)) (eq 7 (getvar "errno")))
  29. (if (and of_epk
  30. (member (cdr (assoc 100 (reverse (entget (car of_epk)))))
  31. '("AcDbPolyline" "AcDb2dPolyline"))
  32. (setq of_pt (getpoint "\nPlease Select the Side to offset: "))
  33. )
  34. (command "_.offset" of_dist of_epk of_pt "" "_.move" (entlast) ""
  35. (list 0.0 0.0 of_elev) "")
  36. )
  37. )
  38. (princ)
  39. )
  40. ;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
  41. (defun c:runlater ( / )
  42. (acet-ui-message "To run later, type 'MOS2NSC' anytime to begin to conversion process." "Some Header" 64)
  43. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 20:19:56 | 显示全部楼层
修改您的回复以包含代码的代码标记。
 
您收到该错误消息是因为当代码的第一部分加载时,所需的函数或例程尚未加载,因此如果您再次尝试,它应该会正常运行。
 
将代码的第一部分替换到底部,然后重试。
回复

使用道具 举报

15

主题

64

帖子

49

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 20:24:49 | 显示全部楼层
 
 
 
谢谢你的回复!我试着用“#”按钮,但什么也没用。我想知道如何像你们一样做代码框。我为此道歉。
 
 
至于代码,你是对的。当我把“开始”的消息放在代码末尾时,它就像一个梦。非常感谢。
 
 
我的下一个问题是;由于我的强迫症,我真的很想在我的代码开始的“开放”信息。有没有办法在开始时预加载其他函数?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 20:25:15 | 显示全部楼层
如Tharwat所示,加载程序时计算以下表达式:
然而,由于defun表达式出现在加载时正在评估的表达式之后,因此您试图根据用户的响应来评估的函数[(c:mos2nsc)&(c:runlater)]尚未评估。
回复

使用道具 举报

15

主题

64

帖子

49

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 20:29:35 | 显示全部楼层
谢谢大家,这很有帮助!!我真的很感激。
 
 
我的下一个问题是;由于我的强迫症,我真的很想在我的代码开始的“开放”信息。有没有办法在开始时预加载/预计算defun表达式?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 20:31:37 | 显示全部楼层
  1. (vl-load-com)
  2. ;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
  3. (defun onloadexpressions ( / reply1 )
  4.    (SETQ reply1 (ACET-UI-MESSAGE (strcat "Some Text") "Some Header" 36))
  5.    (cond
  6.        (   (= 6 reply1) (c:mos2nsc))
  7.        (   (= 7 reply1) (c:runlater))
  8.    )
  9.    (princ)
  10. )
  11. ;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
  12. (defun c:mos2nsc ( / reply2 )
  13.    (SETQ reply2 (ACET-UI-MESSAGE (strcat "Some Text") "Some Header" 20))
  14.    (cond
  15.        (   (= 6 reply1) (c:replyyes))
  16.        (   (= 7 reply1) (c:runlater))
  17.    )
  18.    (princ)
  19. )
  20. ;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
  21. (defun c:replyyes ( / of_dist of_elev of_epk of_pt )
  22.    (setvar "cmdecho" 0)
  23.    (if (null of_distx) (setq of_distx 1.0))
  24.    (initget 6)
  25.    (if (setq of_dist (getdist (strcat "\nPlease Enter the Offset Distance <" (rtos of_distx) ">: ")))
  26.        (setq of_distx of_dist)
  27.    )
  28.    (if (null of_elevx) (setq of_elevx 0.0))
  29.    (if (setq of_elev (getreal (strcat "\nPlease Enter the Elevation Difference - For a Negative Use a '-' <" (rtos of_elevx) ">: ")))
  30.        (setq of_elevx of_elev)
  31.    )
  32.    (while (or (setq of_epk (entsel)) (= 7 (getvar "errno")))
  33.        (if (and of_epk
  34.                (member (cdr (assoc 100 (reverse (entget (car of_epk))))) '("AcDbPolyline" "AcDb2dPolyline"))
  35.                (setq of_pt (getpoint "\nPlease Select the Side to offset: "))
  36.            )
  37.            (command "_.offset" of_distx of_epk "_non" of_pt "" "_.move" (entlast) "" "_non" (list 0.0 0.0 of_elevx) "")
  38.        )
  39.    )
  40.    (princ)
  41. )
  42. ;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
  43. (defun c:runlater ( / )
  44.    (acet-ui-message "To run later, type 'MOS2NSC' anytime to begin to conversion process." "Some Header" 64)
  45.    (princ)
  46. )
  47. (onloadexpressions)
回复

使用道具 举报

15

主题

64

帖子

49

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 20:36:04 | 显示全部楼层
李,你就是那个男人!!非常感谢,效果很好。我在你的网站上给你发了一封电子邮件,你现在可以无视了。
 
 
塔瓦,也谢谢你。我真的很感谢你的帮助。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 20:40:31 | 显示全部楼层
 
你这么说真是太好了,我只是给了你方向,李做了所有的事情。
 
我建议你修改你的第一篇帖子,以避免版主提出警告。这很简单,请阅读本文
回复

使用道具 举报

15

主题

64

帖子

49

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 20:43:50 | 显示全部楼层
好吧,冒着听起来像个白痴的风险;太晚了;我什么都做不了。我读了你发给我的文章Tharwat和什么都没有发生,当我试图编辑后。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-18 20:49 , Processed in 0.816876 second(s), 72 queries .

© 2020-2025 乐筑天下

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