乐筑天下

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

[编程交流] 基本lisp+dcl=(条件

[复制链接]

2

主题

16

帖子

14

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 08:02:49 | 显示全部楼层 |阅读模式
好的,我们又来了,
我对它上瘾了。
我一直在努力。
 
我给DCL 3个选项开始,从左,右或从顶部打开窗扇。
 
我理解我必须处理IF条件。我试了几次,没有前进。
有人能帮我吗?请.=)
 
Lisp程序
  1. (defun c:w1 ()
  2. (setq dcl_id (load_dialog "w1_dcl.dcl"))
  3. (if (not (new_dialog "w1_dcl" dcl_id))
  4.    (exit)
  5. )
  6. (action_tile "LL" "(setq LW (distof $value))")
  7. (action_tile "HH" "(setq HW (distof $value))")
  8. (action_tile "OO" "(setq OW (distof $value))")
  9. [i][b]; NOW THAT WONT MAKE ANY SENSE, BUT ITS PART OF ME TRYING[/b][/i]
  10. [i][b]  (action_tile "SL" "(setq SL (getvar)")[/b][/i]
  11. [i][b]  (action_tile "SR" "(setq SR (getvar)")[/b][/i]
  12. [i][b]  (action_tile "ST" "(setq ST (getvar)")[/b][/i]
  13. (action_tile "accept" "(done_dialog 1)")
  14. (start_dialog)
  15. (unload_dialog dcl_id)
  16. (defun dtr (x) (* pi (/ x 180.0)))
  17. (defun w1_act ()
  18. (setq b1 (getpoint "\nPick Point: "))
  19. (setq b2 (polar B1 (dtr 90.0) HW))
  20. (setq b3 (polar b2 (dtr 0.0) LW))
  21. (setq b4 (polar B1 (dtr 0.0) LW))
  22. (setq bi1 (polar B1 (dtr 0.0) OW))
  23. (setq i1 (polar bi1 (dtr 90.0) OW))
  24. (setq i2 (polar i1 (dtr 90.0) (- HW (* 2 OW))))
  25. (setq i3 (polar i2 (dtr 0.0) (- LW (* 2 OW))))
  26. (setq i4 (polar i1 (dtr 0.0) (- LW (* 2 OW))))
  27. (setq SIL (polar i1 (dtr 90.0) (- (/ HW 2) OW)))
  28. (setq SIR (polar i4 (dtr 90.0) (- (/ HW 2) OW)))
  29. (setq SIT (polar i2 (dtr 0.0) (- (/ LW 2) OW)))
  30. (setq is1 (polar i1 (dtr 0.0) OW))
  31. (setq s1 (polar is1 (dtr 90.0) OW))
  32. (setq s2 (polar s1 (dtr 90.0) (- HW (* 4 OW))))
  33. (setq s3 (polar s2 (dtr 0.0) (- LW (* 4 OW))))
  34. (setq s4 (polar s1 (dtr 0.0) (- LW (* 4 OW))))
  35. (command "._Layer" "M" "APL Frame" "C" "150" "" "")
  36. ; DRAWS THE MAIN FRAME
  37. (command
  38. "PLine" B1 b2 b3 b4 "c"
  39. "PLine" i1 i2 i3 i4 "c"
  40. "PLine" B1 i1 ""
  41. "PLine" b2 i2 ""
  42. "PLine" b3 i3 ""
  43. "PLine" b4 i4 ""
  44. )
  45. ; DRAWS SASH TO LEFT - CONDITION TO VARIABLE "SL"
  46. (command
  47. "PLine" s1 s2 s3 s4 "c"
  48. "PLine" i4 SIL i3 ""
  49. )
  50. ; DRAWS SASH TO RIGHT - CONDITION TO VARIABLE "SR"
  51. (command
  52. "PLine" s1 s2 s3 s4 "c"
  53. "PLine" i1 SIR i2 ""
  54. )
  55. ; DRAWS SASH TO TOP - CONDITION TO VARIABLE "ST"
  56. (command
  57. "PLine" s1 s2 s3 s4 "c"
  58. "PLine" i1 SIT i4 ""
  59. )
  60. (princ)
  61. )
  62. (w1_act)
  63. (princ)
  64. )

 
DCL
  1. w1_dcl
  2. : dialog
  3. {
  4. label = "SASHED 1 PANEL";
  5. :row
  6. {
  7. :column
  8.   {
  9. : edit_box
  10. {
  11. label = "Lenght :";
  12. mnemonic = "L";
  13. key = "LL";
  14. alignment = centered;
  15. edit_limit = 5;
  16. edit_width = 5;
  17. }
  18. : edit_box
  19. {
  20. label = "Height :";
  21. mnemonic = "H";
  22. key = "HH";
  23. alignment = centered;
  24. edit_limit = 5;
  25. edit_width = 5;
  26. value = "";
  27. }
  28. : edit_box
  29. {
  30. label = "Frame :";
  31. mnemonic = "O";
  32. key = "OO";
  33. alignment = centered;
  34. edit_limit = 5;
  35. edit_width = 5;
  36. value = "50";
  37. }
  38. : button{
  39. key = "accept";
  40. label = "Insert";
  41. mnemonic = "I";
  42. is_default = true;
  43. fixed_width = true;
  44. alignment = right;
  45. }
  46.   }
  47. :column
  48.   {
  49. :radio_button{label="Left";
  50. key="SL";
  51. }
  52. :radio_button{label="Right";
  53. key="SR";
  54. }
  55. :radio_button{label="Top";
  56. key="ST";
  57. }
  58. : button{
  59. key = "cancel";
  60. label = "Cancel";
  61. mnemonic = "C";
  62. fixed_width = true;
  63. alignment = right;
  64. }
  65.   }
  66. }
  67. }
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:06:44 | 显示全部楼层
  1. (action_tile "SL" "(setq SL[color=blue] $value[/color])")
  2. (action_tile "SR" "(setq SR [color=blue]$value[/color])")
  3. (action_tile "ST" "(setq ST [color=blue]$value[/color])")

 
 
  1.   ; DRAWS SASH TO LEFT - CONDITION TO VARIABLE "SL"
  2. [color=blue](cond[/color]
  3.      [color=blue]((eq SL "1")[/color](command "PLine" s1 s2 s3 s4 "c"
  4.    "PLine" i4 SIL i3 "")
  5.    [color=blue])[/color]
  6. ; DRAWS SASH TO RIGHT - CONDITION TO VARIABLE "SR"
  7.      [color=blue]((eq SR "1")[/color](command "PLine" s1 s2 s3 s4 "c"
  8.   "PLine" i1 SIR i2 "")
  9.    [color=blue])[/color]
  10. ; DRAWS SASH TO TOP - CONDITION TO VARIABLE "ST"
  11.      [color=blue]((eq ST "1")[/color](command"PLine" s1 s2 s3 s4 "c"
  12.   "PLine" i1 SIT i4 "")
  13.   [color=blue])[/color]
  14.      [color=blue])[/color]
回复

使用道具 举报

2

主题

16

帖子

14

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 08:11:03 | 显示全部楼层
在我能理解一切之前,我先复制并粘贴尝试。
但是它不起作用。
我复制、粘贴、保存例程,再次加载,然后尝试,但没有成功。
=(
 
对不起,我不知道我做错了什么。
我甚至尝试添加另一个cond(se用户想要斜接角落)
 
检查整个代码:
 
  1. (defun c:w1 ()
  2. (setq dcl_id (load_dialog "w1_dcl.dcl"))
  3. (if (not (new_dialog "w1_dcl" dcl_id))
  4.    (exit)
  5. )
  6. (action_tile "LL" "(setq LW (distof $value))")
  7. (action_tile "HH" "(setq HW (distof $value))")
  8. (action_tile "OO" "(setq OW (distof $value))")
  9. (action_tile "SL" "(setq SL $value)")
  10. (action_tile "SR" "(setq SR $value)")
  11. (action_tile "ST" "(setq ST $value)")
  12. (action_tile "M" "(setq M $value)")
  13. (action_tile "accept" "(done_dialog 1)")
  14. (start_dialog)
  15. (unload_dialog dcl_id)
  16. (defun dtr (x) (* pi (/ x 180.0)))
  17. (defun w1_act ()
  18. (setq b1 (getpoint "\nPick Point: "))
  19. (setq b2 (polar B1 (dtr 90.0) HW))
  20. (setq b3 (polar b2 (dtr 0.0) LW))
  21. (setq b4 (polar B1 (dtr 0.0) LW))
  22. (setq bi1 (polar B1 (dtr 0.0) OW))
  23. (setq i1 (polar bi1 (dtr 90.0) OW))
  24. (setq i2 (polar i1 (dtr 90.0) (- HW (* 2 OW))))
  25. (setq i3 (polar i2 (dtr 0.0) (- LW (* 2 OW))))
  26. (setq i4 (polar i1 (dtr 0.0) (- LW (* 2 OW))))
  27. (setq SIL (polar i1 (dtr 90.0) (- (/ HW 2) OW)))
  28. (setq SIR (polar i4 (dtr 90.0) (- (/ HW 2) OW)))
  29. (setq SIT (polar i2 (dtr 0.0) (- (/ LW 2) OW)))
  30. (setq is1 (polar i1 (dtr 0.0) OW))
  31. (setq s1 (polar is1 (dtr 90.0) OW))
  32. (setq s2 (polar s1 (dtr 90.0) (- HW (* 4 OW))))
  33. (setq s3 (polar s2 (dtr 0.0) (- LW (* 4 OW))))
  34. (setq s4 (polar s1 (dtr 0.0) (- LW (* 4 OW))))
  35. (command "._Layer" "M" "APL Frame" "C" "150" "" "")
  36. ; DRAWS THE MAIN FRAME
  37. (command
  38. "PLine" B1 b2 b3 b4 "c"
  39. "PLine" i1 i2 i3 i4 "c"
  40. "PLine" s1 s2 s3 s4 "c"
  41. )
  42. (cond
  43. ((eq M "1")
  44. (command
  45.   "PLine" B1 i1 ""
  46. "PLine" b2 i2 ""
  47. "PLine" b3 i3 ""
  48. "PLine" b4 i4 ""
  49.   ))
  50. )
  51. (cond
  52. ; DRAWS SASH TO LEFT
  53.      (
  54.      (eq SL "1")
  55.      (command "PLine" i4 SIL i3 "")
  56.      )
  57. ; DRAWS SASH TO RIGHT
  58.      (
  59.      (eq SR "1")
  60.      (command "PLine" i1 SIR i2 "")
  61.      )
  62. ; DRAWS SASH TO TOP
  63.      (
  64.      (eq ST "1")
  65.      (command "PLine" i1 SIT i4 "")
  66.      )
  67. )  
  68. (princ)
  69. )
  70. (w1_act)
  71. (princ)
  72. )

 
  1. w1_dcl
  2. : dialog
  3. {
  4. label = "SASHED 1 PANEL";
  5. :row
  6. {
  7. :column
  8.   {
  9. : edit_box
  10. {
  11. label = "Lenght :";
  12. mnemonic = "L";
  13. key = "LL";
  14. alignment = centered;
  15. edit_limit = 5;
  16. edit_width = 5;
  17. }
  18. : edit_box
  19. {
  20. label = "Height :";
  21. mnemonic = "H";
  22. key = "HH";
  23. alignment = centered;
  24. edit_limit = 5;
  25. edit_width = 5;
  26. value = "";
  27. }
  28. : edit_box
  29. {
  30. label = "Frame :";
  31. mnemonic = "O";
  32. key = "OO";
  33. alignment = centered;
  34. edit_limit = 5;
  35. edit_width = 5;
  36. value = "50";
  37. }
  38. : button{
  39. key = "accept";
  40. label = "Insert";
  41. mnemonic = "I";
  42. is_default = true;
  43. fixed_width = true;
  44. alignment = right;
  45. }
  46.   }
  47. :column
  48.   {
  49. :radio_button{label="Left";
  50. key="SL";
  51. }
  52. :radio_button{label="Right";
  53. key="SR";
  54. }
  55. :radio_button{label="Top";
  56. key="ST";
  57. }
  58. : button{
  59. key = "cancel";
  60. label = "Cancel";
  61. mnemonic = "C";
  62. fixed_width = true;
  63. alignment = right;
  64. }
  65.   }
  66. }
  67.       :toggle{
  68.    key="M";
  69.    label="Mitre corners";
  70.    value="1";
  71.    }
  72.   
  73. }
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:14:15 | 显示全部楼层
我希望你还记得你在之前的帖子里学到了什么?
 
真的棒PP,它怎么可能不工作(假设它在修改之前为您工作),当我所做的只是更换了几行。
 
再试一次,伙计。相信我,你需要了解这里的情况。
回复

使用道具 举报

2

主题

16

帖子

14

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 08:18:14 | 显示全部楼层
pBe,
...伙计。。。谢谢你的光临。。但是曼。。。它不起作用。不知道为什么。
使用上述代码,我已经改变了一些事情,添加了新的“cond”的东西,以米特选项,因为我说。。。
但是
斜接无法绘制,它仅将窗扇绘制到左侧。其他人不会改变任何事情。
=(
 
 
另外,如果我按ESC键,或者单击Cancel,它也不起作用,我只是注意到了它。我总是要插入。
*叹气*
 
伙计。。。。英雄联盟这是我的第三天。。。不容易。呵呵
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:21:20 | 显示全部楼层
 
这就是最终的结果吗
090249kf3bsltjy6bfjf5a.jpg
 
 
您尚未定义“取消”键的操作。
回复

使用道具 举报

2

主题

16

帖子

14

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 08:22:38 | 显示全部楼层
还有一件事。。。
事实上,如果我试着从左到右不同的东西,它是有效的。。
例如,如果我插入一个带有斜接的1000x1000x50顶部。。它确实画得很完美,顶部,没有斜接角。
然后,我尝试插入一个1000x1000x50左与斜接。。它有时没有内框,有时没有外框,总是没有斜接角,然后总是使用左。。一旦我使用LEFT,即使我选择了TOP或RIGHT,它也不会改变。
这有意义吗?
有时候台词非常疯狂。
 
请参见下图中的疯狂线条:

                               
登录/注册后可看大图

与ImageShack一起上载。我们
回复

使用道具 举报

2

主题

16

帖子

14

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 08:27:11 | 显示全部楼层
是的,应该是这样的。。英雄联盟
 
我试图在这里添加一条附有图片的消息,但我需要版主的许可才能显示它。
但是。。
 
我的结果和你的不一样。
=(
有时内部框架无法绘制
有时外部框架无法绘制
有时这些线非常疯狂,不垂直于任何东西,将点连接在一起。
斜接的角落永远也画不出来。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:30:05 | 显示全部楼层
它确实很吸引人,我猜你有活跃的睡眠。
(setvar“osmode 0)
 
你能处理“取消”这件事吗?
 
  1. (defun c:w1 ( / [color=blue]SL SR ST)[/color]
  2. (setq dcl_id (load_dialog "w1_dcl.dcl"))
  3. (if (not (new_dialog "w1_dcl" dcl_id))
  4.    (exit)
  5. )   
  6. [color=blue] (set_tile "LL" (if (null LW) "0.00" (rtos LW 2 2)))[/color]
  7. [color=blue] (set_tile "HH" (if (null HW) "0.00" (rtos HW 2 2)))[/color]
  8. [color=blue] (set_tile "OO" (if (null OW) "0.00" (rtos OW 2 2)))    [/color]
  9. (action_tile "LL" "(setq LW (distof $value))")
  10. (action_tile "HH" "(setq HW (distof $value))")
  11. (action_tile "OO" "(setq OW (distof $value))")
  12. ; NOW THAT WONT MAKE ANY SENSE, BUT ITS PART OF ME TRYING
  13. [color=blue] (action_tile "SL" "(setq SL $value)")[/color]
  14. [color=blue] (action_tile "SR" "(setq SR $value)")[/color]
  15. [color=blue] (action_tile "ST" "(setq ST $value)")[/color]
  16. (action_tile "accept" "[color=blue](setq pik T)[/color](done_dialog 1)")
  17. [color=blue] (action_tile "cancel" "(setq pik nil)(done_dialog 0)")[/color]   
  18. (start_dialog)
  19. (unload_dialog dcl_id)
  20. (defun dtr (x) (* pi (/ x 180.0)))
  21. (defun w1_act ()
  22. (setq b1 (getpoint "\nPick Point: "))
  23. (setq b2 (polar B1 (dtr 90.0) HW))
  24. (setq b3 (polar b2 (dtr 0.0) LW))
  25. (setq b4 (polar B1 (dtr 0.0) LW))
  26. (setq bi1 (polar B1 (dtr 0.0) OW))
  27. (setq i1 (polar bi1 (dtr 90.0) OW))
  28. (setq i2 (polar i1 (dtr 90.0) (- HW (* 2 OW))))
  29. (setq i3 (polar i2 (dtr 0.0) (- LW (* 2 OW))))
  30. (setq i4 (polar i1 (dtr 0.0) (- LW (* 2 OW))))
  31. (setq SIL (polar i1 (dtr 90.0) (- (/ HW 2) OW)))
  32. (setq SIR (polar i4 (dtr 90.0) (- (/ HW 2) OW)))
  33. (setq SIT (polar i2 (dtr 0.0) (- (/ LW 2) OW)))
  34. (setq is1 (polar i1 (dtr 0.0) OW))
  35. (setq s1 (polar is1 (dtr 90.0) OW))
  36. (setq s2 (polar s1 (dtr 90.0) (- HW (* 4 OW))))
  37. (setq s3 (polar s2 (dtr 0.0) (- LW (* 4 OW))))
  38. (setq s4 (polar s1 (dtr 0.0) (- LW (* 4 OW))))
  39. [color=blue] (setvar 'osmode 0)[/color]   
  40. (command "._Layer" "M" "APL Frame" "C" "150" "" "")
  41. ; DRAWS THE MAIN FRAME
  42. (command
  43. "PLine" B1 b2 b3 b4 "c"
  44. "PLine" i1 i2 i3 i4 "c"
  45. "PLine" B1 i1 ""
  46. "PLine" b2 i2 ""
  47. "PLine" b3 i3 ""
  48. "PLine" b4 i4 ""
  49. )
  50. [color=blue](cond[/color]
  51. ; DRAWS SASH TO RIGHT - CONDITION TO VARIABLE "Sl"      
  52.     [color=blue]((eq SL "1")[/color]
  53.       (command "PLine" s1  s2 s3 s4 "c"
  54.             "PLine" i4  SIL i3 "")[color=blue])[/color]
  55.      [color=blue]((eq SR "1")[/color]
  56.       (command "PLine" s1 s2  s3 s4 "c"
  57.             "PLine" i1  SIR i2 "")[color=blue])[/color]
  58. ; DRAWS SASH TO TOP - CONDITION TO VARIABLE "ST"
  59.    [color=blue]  ((eq ST "1")[/color]
  60.       (command "PLine"  s1  s2  s3  s4 "c"
  61.             "PLine" i1  SIT i4 "")[color=blue])[/color]
  62. [color=blue]     )[/color]
  63. (princ)
  64. )
  65. [color=blue] (if pik [/color](w1_act)[color=blue])[/color]
  66. (princ)
  67. )

 
  1. w1_dcl
  2. : dialog {
  3. label = "SASHED 1 PANEL";
  4. :row
  5. {
  6. :column
  7.   {
  8. : edit_box {
  9. label = "Lenght :"; mnemonic = "L"; key = "LL"; alignment = centered;
  10. edit_limit = 5; edit_width = 5; [color=blue]value = "";[/color]
  11. }
  12. : edit_box { label = "Height :"; mnemonic = "H"; key = "HH"; alignment = centered;
  13. edit_limit = 5; edit_width = 5; [color=blue]value = "";[/color]
  14. }
  15. : edit_box {
  16. label = "Frame :"; mnemonic = "O"; key = "OO"; alignment = centered;
  17. edit_limit = 5; edit_width = 5;[color=blue] value = "";[/color]
  18. }
  19. : button{ key = "accept"; label = "Insert"; mnemonic = "I"; is_default = true;
  20. fixed_width = true; alignment = right;
  21. }
  22.   }
  23. :column {
  24. :radio_button{label="Left"; key="SL";}
  25. :radio_button{label="Right"; key="SR";}
  26. :radio_button{label="Top"; key="ST";}
  27. : button{
  28. key = "cancel"; label = "&Cancel"; mnemonic = "C";
  29. fixed_width = true; alignment = right; [color=blue]is_cancel = true;[/color]
  30. }
  31.   }
  32. }
  33. }
回复

使用道具 举报

2

主题

16

帖子

14

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 08:33:08 | 显示全部楼层
我没用!呵呵
我已经按照你上面的建议添加了osmode。
 
好的,取消这件事。。不。老实说,我还没试过。
 
在加载AutoCAD和加载例程后,我第一次尝试插入。。什么都不起作用,DCL很好,例程不运行,如果我再试一次,它就会起作用。
 
左、右、顶部选项。。。如果我不使用Left作为第一个选项,它就会起作用。一旦我选择了左,所有其他人只能在左选项中画图。
 
斜接仍不工作。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 21:52 , Processed in 0.557420 second(s), 74 queries .

© 2020-2025 乐筑天下

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