乐筑天下

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

[编程交流] Lisp弹出窗口

[复制链接]

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:32:05 | 显示全部楼层
我喜欢你的建议,罗伊,
如果您不介意的话,我已经将DCL放入lsp文件中以便于使用:
  1. dcl_test : dialog {
  2. label = "Test commands dialog";
  3. spacer;
  4. : button {
  5.    key = "C1";
  6.    label = "Command1";
  7. }
  8. spacer;
  9. : button {
  10.    key = "C2";
  11.    label = "Command2";
  12. }
  13. spacer;
  14. : button {
  15.    key = "C3";
  16.    label = "Command3";
  17. }
  18. spacer;
  19. cancel_button;
  20. }
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 17:36:54 | 显示全部楼层
我对罗伊的建议太兴奋了,所以我写了一个副标题:
  1. [b][color=BLACK]([/color][/b]defun C:test [b][color=FUCHSIA]([/color][/b] / *error* fp fdcl dcl_id ret cmd [b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]defun *error* [b][color=NAVY]([/color][/b]m[b][color=NAVY])[/color][/b]
  3.         [b][color=NAVY]([/color][/b]and dcl_id [b][color=MAROON]([/color][/b]unload_dialog dcl_id[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]and fp [b][color=MAROON]([/color][/b]vl-file-delete fp[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  4.         [b][color=NAVY]([/color][/b]and m [b][color=MAROON]([/color][/b]print m[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  5.         [b][color=NAVY]([/color][/b]princ[b][color=NAVY])[/color][/b]
  6. [b][color=FUCHSIA])[/color][/b][color=#8b4513]; defun *error*[/color]
  7. [b][color=FUCHSIA]([/color][/b]setq fp [b][color=NAVY]([/color][/b]vl-filename-mktemp [color=#2f4f4f]"tempfile.dcl"[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  8. [b][color=FUCHSIA]([/color][/b]setq fdcl [b][color=NAVY]([/color][/b]open fp [color=#2f4f4f]"w"[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  9. [b][color=FUCHSIA]([/color][/b]write-line
  10.         [color=#2f4f4f]"
  11.         dcl_test
  12.         : dialog
  13.         {
  14.                 label = "[/color]Test commands dialog\[color=#2f4f4f]";
  15.                 spacer;
  16.                 : button
  17.                 {
  18.                         key = "[/color]C1\[color=#2f4f4f]";
  19.                         label = "[/color]Command1\[color=#2f4f4f]";
  20.                 }
  21.                 spacer;
  22.                 : button
  23.                 {
  24.                         key = "[/color]C2\[color=#2f4f4f]";
  25.                         label = "[/color]Command2\[color=#2f4f4f]";
  26.                 }
  27.                 spacer;
  28.                 : button
  29.                 {
  30.                         key = "[/color]C3\[color=#2f4f4f]";
  31.                         label = "[/color]Command3\[color=#2f4f4f]";
  32.                 }
  33.                 spacer;
  34.                 cancel_button;
  35.         }
  36.         "[/color]
  37.         fdcl
  38. [b][color=FUCHSIA])[/color][/b]
  39. [b][color=FUCHSIA]([/color][/b]close fdcl[b][color=FUCHSIA])[/color][/b]
  40. [b][color=FUCHSIA]([/color][/b]setq dcl_id [b][color=NAVY]([/color][/b]load_dialog fp[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  41. [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]new_dialog [color=#2f4f4f]"dcl_test"[/color] dcl_id[b][color=NAVY])[/color][/b]
  42.    [b][color=NAVY]([/color][/b]progn
  43.      [b][color=MAROON]([/color][/b]action_tile [color=#2f4f4f]"C1"[/color] [color=#2f4f4f]"[b][color=GREEN]([/color][/b]setq cmd "[/color]C1\[color=#2f4f4f]"[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]done_dialog 1[b][color=GREEN])[/color][/b]"[/color][b][color=MAROON])[/color][/b]
  44.      [b][color=MAROON]([/color][/b]action_tile [color=#2f4f4f]"C2"[/color] [color=#2f4f4f]"[b][color=GREEN]([/color][/b]setq cmd "[/color]C2\[color=#2f4f4f]"[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]done_dialog 1[b][color=GREEN])[/color][/b]"[/color][b][color=MAROON])[/color][/b]
  45.      [b][color=MAROON]([/color][/b]action_tile [color=#2f4f4f]"C3"[/color] [color=#2f4f4f]"[b][color=GREEN]([/color][/b]setq cmd "[/color]C3\[color=#2f4f4f]"[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]done_dialog 1[b][color=GREEN])[/color][/b]"[/color][b][color=MAROON])[/color][/b]
  46.      [b][color=MAROON]([/color][/b]setq ret [b][color=GREEN]([/color][/b]start_dialog[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [color=#8b4513]; If Cancel is pressed ret will be 0.[/color]
  47.      [b][color=MAROON]([/color][/b]unload_dialog dcl_id[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]and fp [b][color=GREEN]([/color][/b]vl-file-delete fp[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [color=#8b4513]; unload and delete the tempfile[/color]
  48.         [b][color=NAVY])[/color][/b]
  49.    [b][color=NAVY]([/color][/b]progn [b][color=MAROON]([/color][/b]alert [color=#2f4f4f]"Can't load the dialog!"[/color][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]and fp [b][color=GREEN]([/color][/b]vl-file-delete fp[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  50. [b][color=FUCHSIA])[/color][/b]
  51. [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]= 1 ret[b][color=NAVY])[/color][/b]
  52.         [b][color=NAVY]([/color][/b]cond
  53.                 [b][color=MAROON]([/color][/b] [b][color=GREEN]([/color][/b]= [color=#2f4f4f]"C1"[/color] cmd[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]alert [color=#2f4f4f]"Please enter your Command 1:"[/color][b][color=GREEN])[/color][/b] [b][color=MAROON])[/color][/b]
  54.                 [b][color=MAROON]([/color][/b] [b][color=GREEN]([/color][/b]= [color=#2f4f4f]"C2"[/color] cmd[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]alert [color=#2f4f4f]"Please enter your Command 2:"[/color][b][color=GREEN])[/color][/b] [b][color=MAROON])[/color][/b]
  55.                 [b][color=MAROON]([/color][/b] [b][color=GREEN]([/color][/b]= [color=#2f4f4f]"C3"[/color] cmd[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]alert [color=#2f4f4f]"Please enter your Command 3:"[/color][b][color=GREEN])[/color][/b] [b][color=MAROON])[/color][/b]
  56.         [b][color=NAVY])[/color][/b]
  57. [b][color=FUCHSIA])[/color][/b]
  58. [b][color=FUCHSIA]([/color][/b]princ[b][color=FUCHSIA])[/color][/b]
  59. [b][color=BLACK])[/color][/b]

用法:
  1. [b][color=BLACK]([/color][/b]defun ButtonPromptBOX [b][color=FUCHSIA]([/color][/b] dlglabel StrCommandsLst / *error* fp fdcl dcl_id dlgRtn rtn [b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]defun *error* [b][color=NAVY]([/color][/b]m[b][color=NAVY])[/color][/b]
  3.         [b][color=NAVY]([/color][/b]and dcl_id [b][color=MAROON]([/color][/b]unload_dialog dcl_id[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]and fp [b][color=MAROON]([/color][/b]vl-file-delete fp[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  4.         [b][color=NAVY]([/color][/b]and m [b][color=MAROON]([/color][/b]print m[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  5.         [b][color=NAVY]([/color][/b]princ[b][color=NAVY])[/color][/b]
  6. [b][color=FUCHSIA])[/color][/b][color=#8b4513]; defun *error*[/color]
  7. [b][color=FUCHSIA]([/color][/b]setq fp [b][color=NAVY]([/color][/b]vl-filename-mktemp [color=#2f4f4f]"tempfile.dcl"[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  8. [b][color=FUCHSIA]([/color][/b]setq fdcl [b][color=NAVY]([/color][/b]open fp [color=#2f4f4f]"w"[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  9. [b][color=FUCHSIA]([/color][/b]write-line
  10.         [b][color=NAVY]([/color][/b]strcat
  11.                 [color=#2f4f4f]" dcl_test : dialog { label = "[/color][color=#2f4f4f]" dlglabel "[/color]\[color=#2f4f4f]"; "[/color]
  12.                 [b][color=MAROON]([/color][/b]apply 'strcat
  13.                         [b][color=GREEN]([/color][/b]mapcar
  14.                                 '[b][color=BLUE]([/color][/b]lambda [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b]
  15.                                         [b][color=RED]([/color][/b]strcat
  16.                                                 [color=#2f4f4f]"
  17.                                                 spacer;
  18.                                                 : button
  19.                                                 { key = "[/color][color=#2f4f4f]" [b][color=PURPLE]([/color][/b]car x[b][color=PURPLE])[/color][/b] "[/color]\[color=#2f4f4f]"; label = "[/color][color=#2f4f4f]" [b][color=PURPLE]([/color][/b]cdr x[b][color=PURPLE])[/color][/b] "[/color]\[color=#2f4f4f]"; }
  20.                                                 "[/color]
  21.                                         [b][color=RED])[/color][/b]
  22.                                 [b][color=BLUE])[/color][/b]
  23.                                 StrCommandsLst
  24.                         [b][color=GREEN])[/color][/b]
  25.                 [b][color=MAROON])[/color][/b]
  26.                 [color=#2f4f4f]" spacer; cancel_button; } "[/color]
  27.         [b][color=NAVY])[/color][/b][color=#8b4513]; strcat[/color]
  28.         fdcl
  29. [b][color=FUCHSIA])[/color][/b][color=#8b4513]; write-line[/color]
  30. [b][color=FUCHSIA]([/color][/b]close fdcl[b][color=FUCHSIA])[/color][/b]
  31. [b][color=FUCHSIA]([/color][/b]setq dcl_id [b][color=NAVY]([/color][/b]load_dialog fp[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  32. [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]new_dialog [color=#2f4f4f]"dcl_test"[/color] dcl_id[b][color=NAVY])[/color][/b]
  33.         [b][color=NAVY]([/color][/b]progn
  34.                 [b][color=MAROON]([/color][/b]foreach x [b][color=GREEN]([/color][/b]mapcar 'car StrCommandsLst[b][color=GREEN])[/color][/b]
  35.                         [b][color=GREEN]([/color][/b]action_tile x [b][color=BLUE]([/color][/b]strcat [color=#2f4f4f]"[b][color=RED]([/color][/b]setq rtn "[/color][color=#2f4f4f]" x "[/color]\[color=#2f4f4f]"[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]done_dialog 1[b][color=RED])[/color][/b]"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  36.                 [b][color=MAROON])[/color][/b]
  37.                 [b][color=MAROON]([/color][/b]setq dlgRtn [b][color=GREEN]([/color][/b]start_dialog[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [color=#8b4513]; If Cancel is pressed dlgRtn will be 0.[/color]
  38.                 [b][color=MAROON]([/color][/b]unload_dialog dcl_id[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]and fp [b][color=GREEN]([/color][/b]vl-file-delete fp[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [color=#8b4513]; unload and delete the tempfile[/color]
  39.         [b][color=NAVY])[/color][/b]
  40.         [b][color=NAVY]([/color][/b]progn [b][color=MAROON]([/color][/b]alert [color=#2f4f4f]"Can't load the dialog!"[/color][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]and fp [b][color=GREEN]([/color][/b]vl-file-delete fp[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  41. [b][color=FUCHSIA])[/color][/b]
  42. [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]= 1 dlgRtn[b][color=NAVY])[/color][/b] rtn[b][color=FUCHSIA])[/color][/b]
  43. [b][color=BLACK])[/color][/b][color=#8b4513];| defun ButtonPromptBOX |; [b][color=BLACK]([/color][/b]or vlax-get-acad-object [b][color=FUCHSIA]([/color][/b]vl-load-com[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] [b][color=BLACK]([/color][/b]princ[b][color=BLACK])[/color][/b][/color]

对不起,我的邮件有两个。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 17:40:18 | 显示全部楼层
您可以有一个子函数,根据需要创建任意多行dcl,无论是1行还是10行。只需从一个简单的列表(setq lst(list“Item 1”“Item 2”))开始,这将是一个2行dcl示例。
 
这是一篇关于同一件事的老帖子http://www.cadtutor.net/forum/showthread.php?92520-多行DCL自动代码生成器&突出显示=多
 
有一个新的帖子将试图找到它相当肯定大卫贝瑟尔张贴了一个完整的例程。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:42:04 | 显示全部楼层
  1. [color=#8b4513]; Test function of [color=#2f4f4f]"ButtonPromptBOX"[/color][/color]
  2. [b][color=BLACK]([/color][/b]defun C:test [b][color=FUCHSIA]([/color][/b] / StrCommandsLst r [b][color=FUCHSIA])[/color][/b]
  3. [b][color=FUCHSIA]([/color][/b]setq StrCommandsLst [color=#8b4513]; assoc List of [b][color=NAVY]([/color][/b] <key> . <label> [b][color=NAVY])[/color][/b][/color]
  4.         [b][color=NAVY]([/color][/b]list
  5.                 [b][color=MAROON]([/color][/b]cons [color=#2f4f4f]"key1"[/color] [color=#2f4f4f]"Command1"[/color][b][color=MAROON])[/color][/b]
  6.                 [b][color=MAROON]([/color][/b]cons [color=#2f4f4f]"key2"[/color] [color=#2f4f4f]"Command2"[/color][b][color=MAROON])[/color][/b]
  7.                 [b][color=MAROON]([/color][/b]cons [color=#2f4f4f]"key3"[/color] [color=#2f4f4f]"Command3"[/color][b][color=MAROON])[/color][/b]
  8.                 [b][color=MAROON]([/color][/b]cons [color=#2f4f4f]"key4"[/color] [color=#2f4f4f]"Command4"[/color][b][color=MAROON])[/color][/b]
  9.                 [b][color=MAROON]([/color][/b]cons [color=#2f4f4f]"key5"[/color] [color=#2f4f4f]"Command5"[/color][b][color=MAROON])[/color][/b]
  10.                 [b][color=MAROON]([/color][/b]cons [color=#2f4f4f]"key6"[/color] [color=#2f4f4f]"Command6"[/color][b][color=MAROON])[/color][/b]
  11.                 [b][color=MAROON]([/color][/b]cons [color=#2f4f4f]"key7"[/color] [color=#2f4f4f]"Command7"[/color][b][color=MAROON])[/color][/b]
  12.                 [b][color=MAROON]([/color][/b]cons [color=#2f4f4f]"key8"[/color] [color=#2f4f4f]"Command8"[/color][b][color=MAROON])[/color][/b]
  13.                 [b][color=MAROON]([/color][/b]cons [color=#2f4f4f]"key9"[/color] [color=#2f4f4f]"Command9"[/color][b][color=MAROON])[/color][/b]
  14.                 [b][color=MAROON]([/color][/b]cons [color=#2f4f4f]"key10"[/color] [color=#2f4f4f]"Command10"[/color][b][color=MAROON])[/color][/b]
  15.         [b][color=NAVY])[/color][/b]
  16. [b][color=FUCHSIA])[/color][/b]
  17. [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]setq r [b][color=MAROON]([/color][/b]ButtonPromptBOX [color=#2f4f4f]"Prompt for a command dialog"[/color] StrCommandsLst[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  18.         [b][color=NAVY]([/color][/b]alert [b][color=MAROON]([/color][/b]strcat [color=#2f4f4f]"Please enter your "[/color] [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc r StrCommandsLst[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [color=#2f4f4f]""[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  19. [b][color=FUCHSIA])[/color][/b]
  20. [b][color=FUCHSIA]([/color][/b]princ[b][color=FUCHSIA])[/color][/b]
  21. [b][color=BLACK])[/color][/b][color=#8b4513]; defun C:test[/color]
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 17:44:46 | 显示全部楼层
 
哇!
这就是我一直在寻找的。但是为什么单击按钮不会自动拾取与按钮关联的lisp。。。。。例如,单击按钮1应激活加法lisp
 
  1. (defun C:test( / cmd dcl ret)
  2. (setq dcl (load_dialog "test.DCL")) ; Load DCL.
  3. (if (new_dialog "dcl_test" dcl)
  4.    (progn
  5. [color="blue"]      (action_tile "C1" "(done_dialog 1)")
  6.      (action_tile "C2" "(done_dialog 2)")
  7.      (action_tile "C3" "(done_dialog 3)")[/color]
  8.      (setq ret (start_dialog)) ; If Cancel is pressed ret will be 0.
  9.      (unload_dialog dcl)
  10.    )
  11.    (alert "Can't load the dialog!")
  12. )
  13. (cond
  14. [color="blue"]        (        (zerop ret)(alert "\nFunction CANCELLED by user"))
  15.        (        (eval (cadr (assoc ret
  16.                             '( ( 1  (_func1 "Hey Dude"))
  17.                                       ( 2  (_func2 "What?"))
  18.                                       ( 3  (_func3 "Seriously"))
  19.                               )
  20.                             )
  21.                            )
  22.                      )
  23.         )[/color]
  24.      )
  25. (princ)
  26. )
  27. [color="blue"](defun _func1 (m)
  28.      (alert (strcat m " The Earth is FLAT")))
  29. (defun _func2 (m)
  30.      (alert (strcat m " No its NOT, The Earth is round")))
  31. (defun _func3 (m)
  32.      (alert (strcat m " Its actually a bumpy spheroid")))[/color]
回复

使用道具 举报

4

主题

24

帖子

20

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 17:49:20 | 显示全部楼层
 
这太棒了,比格尔。
要么我不知道,要么我以前看过,完全忘记了。
我将尝试修改/分析它。
 
 
尝试更改:
  1. (defun C:test ( / *error* fp fdcl dcl_id ret cmd )
  2. (defun *error* (m)
  3.         (and dcl_id (unload_dialog dcl_id)) (and fp (vl-file-delete fp))
  4.         (and m (print m))
  5.         (princ)
  6. ); defun *error*
  7. (setq fp (vl-filename-mktemp "tempfile.dcl"))
  8. (setq fdcl (open fp "w"))
  9. (write-line
  10.         "
  11.         dcl_test
  12.         : dialog
  13.         {
  14.                 label = "Test commands dialog";
  15.                 spacer;
  16.                 : button
  17.                 {
  18.                         key = "C1";
  19.                         label = "Command1";
  20.                 }
  21.                 spacer;
  22.                 : button
  23.                 {
  24.                         key = "C2";
  25.                         label = "Command2";
  26.                 }
  27.                 spacer;
  28.                 : button
  29.                 {
  30.                         key = "C3";
  31.                         label = "Command3";
  32.                 }
  33.                 spacer;
  34.                 cancel_button;
  35.         }
  36.         "
  37.         fdcl
  38. )
  39. (close fdcl)
  40. (setq dcl_id (load_dialog fp))
  41. (if (new_dialog "dcl_test" dcl_id)
  42.    (progn
  43.      (action_tile "C1" "(setq cmd "C1") (done_dialog 1)")
  44.      (action_tile "C2" "(setq cmd "C2") (done_dialog 1)")
  45.      (action_tile "C3" "(setq cmd "C3") (done_dialog 1)")
  46.      (setq ret (start_dialog)) ; If Cancel is pressed ret will be 0.
  47.      (unload_dialog dcl_id) (and fp (vl-file-delete fp)) ; unload and delete the tempfile
  48.         )
  49.    (progn (alert "Can't load the dialog!") (and fp (vl-file-delete fp)))
  50. )
  51. (if (= 1 ret)
  52.         (cond
  53.                 ( (= "C1" cmd) (alert "ADDJ:") )
  54.                 ( (= "C2" cmd) (alert "CJ:") )
  55.                 ( (= "C3" cmd) (alert "Please enter your Command 3:") )
  56.         )
  57. )
  58. (princ)
  59. )
  60. (defun c:CJ (/ p x y z ptcoord textloc)
  61. (while
  62. (setq p (getpoint "
  63. Pick Point: "))
  64. (setq textloc (getpoint "
  65. Pick Label Location: "))
  66. (setq x (rtos (car p)))
  67. (setq y (rtos (cadr p)))
  68. (setq x (strcat "E " x))
  69. (setq y (strcat "N " y))
  70. (command "_LEADER" p textloc "" x y "") ;
  71. )
  72. )
  73. ******************************************************************************************************
  74. ; To add a given value to numbers and also to add decimal places
  75. (defun c:ADDJ ( / ss)
  76. (vl-load-com)
  77. (if (and (setq ss (ssget (list (cons 0 "*text"))))
  78. (setq amt (getreal "\nPlease type the amount you would like to add: ")))
  79. (progn
  80. (mapcar '(lambda (z) (vla-put-textstring z (rtos (+ (atof (vla-get-textstring z)) amt) 2 )))
  81. (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))
  82. )
  83. )
  84. (princ)
  85. )

对此:
  1. (if (= 1 ret)
  2. (cond
  3.         ( (= "C1" cmd) (alert "ADDJ:") )
  4.         ( (= "C2" cmd) (alert "CJ:") )
  5.         ( (= "C3" cmd) (alert "Please enter your Command 3:") )
  6. )
  7. )

如果您收到警报错误,则意味着您没有此类命令ADDJ/CJ/test。
在同一个文件中定义函数并不重要,它们可以单独加载。lsp文件与往常一样:
 
  1. (if (= 1 ret)
  2. (cond
  3.         ( (= "C1" cmd)
  4.                 (if C:ADDJ (C:ADDJ) (alert "\nFunction "C:ADDJ" not loaded, or not defined!"))
  5.         )
  6.         ( (= "C2" cmd)
  7.                 (if C:CJ (C:CJ) (alert "\nFunction "C:CJ" not loaded, or not defined!"))
  8.         )
  9.         ( (= "C3" cmd)
  10.                 (if C:test (C:test) (alert "\nFunction "C:test" not loaded, or not defined!"))
  11.         )
  12. )
  13. )

 
  1. 13
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 17:50:32 | 显示全部楼层
太棒了作品非常感谢大家。这个论坛真的很有用……:拇指支撑:
回复

使用道具 举报

4

主题

24

帖子

20

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 17:54:42 | 显示全部楼层
对于Grr,我很抱歉,但我很确定基本代码来自David Bethel。
 
  1. 14

 
  1. 15
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:57:48 | 显示全部楼层
 
我对此并不怀疑,只是喜欢“list-prompt with dcl-maketemp dcl file”连接/组合的想法。
 
我甚至有“最喜欢的”子函数(LM:Listbox),这是相同的技术,尽管自从我开始使用LISP以来,我花了很长时间来找出如何正确使用它,甚至花了更多时间来“创建”类似的东西。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 18:00:10 | 显示全部楼层
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 08:12 , Processed in 0.930209 second(s), 70 queries .

© 2020-2025 乐筑天下

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