乐筑天下

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

[编程交流] 尝试使用COND

[复制链接]

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 14:51:03 | 显示全部楼层
这是否意味着我根本不能使用单选按钮??我可以让对话框加载,没有预先选择。加载并运行lsp后,当我选择其中一个按钮时,仍然会出现错误的功能错误。没有一个ESS命令会运行,但它们会在直接输入命令行时运行,就像测试一样。我一定错过了什么!
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 14:55:08 | 显示全部楼层
兄弟就像我之前说的
  1. (cond
  2.   (= hole "TB1")  (ESS1500))
  3.   (= hole "TB2")  (ESS1350))
  4.   (= hole "TB3")  (ESS1200))
  5.   (= hole "TB4")  (ESS1050))
  6.   (t (princ "\nNothing changed.")
  7.    ) ;_ end of optional else condition
  8. )

 
其他的都是。这个格式应该有效
 
  1. (defun ESS1350 ()
  2. "the code here"
  3. )
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 14:57:21 | 显示全部楼层
或者像这样的东西
 
  1. (defun C:samp4 (/ hole)
  2. (vl-load-com)
  3. (setvar "cmdecho" 0)
  4. (defun MkLay (Nme Col lTyp lWgt Plt / lays lay) ;thank lee for this one
  5. (setq lays
  6.   (vla-get-layers
  7.    (vla-get-ActiveDocument
  8.     (vlax-get-acad-object)
  9.    )
  10.   )
  11. lay
  12.   (cond
  13.    ((tblsearch "LAYER" Nme)
  14.     (vla-item lays Nme)
  15.    )
  16.    (t (vla-add lays Nme))
  17.   )
  18. )
  19. (and Col (vla-put-Color lay Col))
  20. (and lTyp (lTload lTyp) (vla-put-Linetype lay lTyp))
  21. (and lWgt  (vla-put-LineWeight lay (eval (read (strcat "acLnWt" lWgt)))))
  22. (and (not Plt) (vla-put-Plottable lay :vlax-false))
  23. )
  24. (defun lTload (lTyp)
  25. (or (tblsearch "LTYPE" lTyp)
  26.   (vla-load
  27.    (vla-get-Linetypes
  28.     (vla-get-ActiveDocument
  29.      (vlax-get-acad-object)
  30.     )
  31.    )
  32.    lTyp "acad.lin"
  33.   )
  34. )
  35. )
  36. (defun drawingstuff(a layername /)
  37. (if (not(tblsearch "layer" layername))
  38.   (MkLay layername 84 a 030 nil)
  39. )
  40. (setvar "clayer" layername)
  41. (command "pline" '(0 0 0) "width" "0.0" "0.0" //)
  42. (setvar "cmdecho" 1)
  43. (command "pline")
  44. )
  45. (setq dcl_id (load_dialog "samp3.dcl"))
  46. (if (not (new_dialog "samp3" dcl_id) )
  47. (progn
  48.     (alert "Can not find you dcl file")
  49.     (exit)
  50. )
  51. )
  52. (action_tile "T1" "(setq hole "TB1")(set_tile "T2" "0")(set_tile "T3" "0")(set_tile "T4" "0")(if (= (get_tile "T1") "0")(setq hole nil)))")
  53. (action_tile "T2" "(setq hole "TB2")(set_tile "T1" "0")(set_tile "T3" "0")(set_tile "T4" "0")(if (= (get_tile "T2") "0")(setq hole nil)))")
  54. (action_tile "T3" "(setq hole "TB3")(set_tile "T1" "0")(set_tile "T2" "0")(set_tile "T4" "0")(if (= (get_tile "T3") "0")(setq hole nil)))")
  55. (action_tile "T4" "(setq hole "TB4")(set_tile "T1" "0")(set_tile "T2" "0")(set_tile "T3" "0")(if (= (get_tile "T4") "0")(setq hole nil)))")
  56. (action_tile "cancel" "(done_dialog)(setq userclick nil)")
  57. (action_tile "accept" "(done_dialog)(setq userclick T))")
  58. (start_dialog)
  59. (unload_dialog dcl_id)
  60. (if userclick
  61. (cond
  62.   ((= hole "TB1") (drawingstuff "CCC_DR_1500""CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1500"))
  63.   ((= hole "TB2") (drawingstuff "CCC_DR_1350" "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1350"))
  64.   ((= hole "TB3") (drawingstuff "CCC_DR_1200" "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1200"))
  65.   ((= hole "TB4") (drawingstuff "CCC_DR_1050" "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1050"))
  66.   (t (princ "\nNothing changed."))
  67. )
  68. )
  69. (princ)
  70. )
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 15:01:58 | 显示全部楼层
woops公司
 
这是dcl
 
  1. samp3 : dialog { //dialog name
  2. label = "Structural Holes" ;
  3. :boxed_radio_column {
  4. label = "Choose a Type" ;
  5. :toggle {key = "T1" ; label = "Type &1"; }
  6. :toggle {key = "T2" ; label = "Type &2"; }
  7. :toggle {key = "T3" ; label = "Type &3"; }
  8. :toggle {key = "T4" ; label = "Type &4"; }
  9. } //*end radio column
  10. ok_cancel ; //predifined OK/Cancel
  11. : row { //define row
  12. : paragraph { //define paragraph
  13.   : text_part {
  14.    label = "Designed by BD";
  15.   } //end text
  16.   : text_part { //define more text
  17.    label = "for CCC NNRDO";
  18.   } //end text
  19. } //end paragraph
  20. } //end row
  21. } //end dialog
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 15:05:19 | 显示全部楼层
这很好地完成了工作。谢谢你。我所做的有一个根本性的问题吗?或者只是visual lisp编码更好??
谢谢
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 15:07:53 | 显示全部楼层
如果你不需要什么都不做的选择,你几乎就成功了。
 
除了cond
这不太正确,离tho不远。
 
我所做的就是把它改成一个开关,可以接受零。
使用不同的方法创建层
使用不同的方式加载线型。
我将多个命令简化为一个。
使用cond将值传递给它。
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 15:12:07 | 显示全部楼层
谢谢你,但问题是我不明白那里发生了什么。我不能按照代码来修改它以用于我想要运行的其他例程。我知道我有一个,但不知道为什么它不会加载其他ESS例程。
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 15:15:19 | 显示全部楼层
伙计,希望这有帮助
如果需要,请告诉我,这里有一些注释
  1. (defun C:samp4 (/ hole)
  2. (vl-load-com)
  3. (setvar "cmdecho" 0)
  4. ;this creates the layer, Give it, name , colour , lintype. lineweight eg 030 and plot (t or nil)
  5. (defun MkLay (Nme Col lTyp lWgt Plt / lays lay) ;thank lee for this one
  6. (setq lays
  7.   (vla-get-layers
  8.    (vla-get-ActiveDocument
  9.     (vlax-get-acad-object)
  10.    )
  11.   )
  12. lay
  13.   (cond
  14.    ((tblsearch "LAYER" Nme)
  15.     (vla-item lays Nme)
  16.    )
  17.    (t (vla-add lays Nme))
  18.   )
  19. )
  20. (and Col (vla-put-Color lay Col))
  21. (and lTyp (lTload lTyp) (vla-put-Linetype lay lTyp))
  22. (and lWgt  (vla-put-LineWeight lay (eval (read (strcat "acLnWt" lWgt)))))
  23. (and (not Plt) (vla-put-Plottable lay :vlax-false))
  24. )
  25. ;this just searchs for line type, adds it if needed
  26. (defun lTload (lTyp)
  27. (or (tblsearch "LTYPE" lTyp)
  28.   (vla-load
  29.    (vla-get-Linetypes
  30.     (vla-get-ActiveDocument
  31.      (vlax-get-acad-object)
  32.     )
  33.    )
  34.    lTyp "acad.lin"
  35.   )
  36. )
  37. )
  38. ;this is your draw function
  39. ;because your codes where all the similar except layer & linetype
  40. (defun drawingstuff(a layername /)
  41. ;This searchs for layer
  42. (if (not(tblsearch "layer" layername))
  43. (MkLay layername 84 a 030 nil)
  44. )
  45. ;this changes the layer
  46. (setvar "clayer" layername)
  47. ;this sets up the width then exits it
  48. (command "pline" '(0 0 0) "width" "0.0" "0.0" //)
  49. ;returns cmdecho back, so it has promps for commands
  50. (setvar "cmdecho" 1)
  51. ;runs pline & lets user do what they want with it
  52. (command "pline")
  53. )
  54. ;loadinc dcl
  55. (setq dcl_id (load_dialog "samp3.dcl"))
  56. (if (not (new_dialog "samp3" dcl_id) )
  57. (progn
  58.     (alert "Can not find you dcl file")
  59.     (exit)
  60. )
  61. )
  62. ;will set the the flag to respected vale, and will set all the tiles to bank
  63. ;because there toggle boxes, they can be on all at once, so it stops it,
  64. ;it will the cheack if current tile is nil or not
  65. ;if it is set the flag nil
  66. (action_tile "T1" "(setq hole "TB1")(set_tile "T2" "0")(set_tile "T3" "0")(set_tile "T4" "0")(if (= (get_tile "T1") "0")(setq hole nil)))")
  67. (action_tile "T2" "(setq hole "TB2")(set_tile "T1" "0")(set_tile "T3" "0")(set_tile "T4" "0")(if (= (get_tile "T2") "0")(setq hole nil)))")
  68. (action_tile "T3" "(setq hole "TB3")(set_tile "T1" "0")(set_tile "T2" "0")(set_tile "T4" "0")(if (= (get_tile "T3") "0")(setq hole nil)))")
  69. (action_tile "T4" "(setq hole "TB4")(set_tile "T1" "0")(set_tile "T2" "0")(set_tile "T3" "0")(if (= (get_tile "T4") "0")(setq hole nil)))")
  70. (action_tile "cancel" "(done_dialog)(setq userclick nil)")
  71. (action_tile "accept" "(done_dialog)(setq userclick T))")
  72. (start_dialog)
  73. (unload_dialog dcl_id)
  74. ;if accepted
  75. ;search which flag is done, will the pass the line type value and layer  name to the funtion
  76. (if userclick
  77. (cond
  78.   ((= hole "TB1") (drawingstuff "CCC_DR_1500""CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1500"))
  79.   ((= hole "TB2") (drawingstuff "CCC_DR_1350" "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1350"))
  80.   ((= hole "TB3") (drawingstuff "CCC_DR_1200" "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1200"))
  81.   ((= hole "TB4") (drawingstuff "CCC_DR_1050" "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1050"))
  82.   (t (princ "\nNothing changed."))
  83. )
  84. )
  85. (princ)
  86. )
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 15:18:52 | 显示全部楼层
谢谢你。李和巴扎德帮我整理了一下。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 03:13 , Processed in 1.075803 second(s), 68 queries .

© 2020-2025 乐筑天下

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