乐筑天下

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

[编程交流] 尝试使用COND

[复制链接]

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 14:15:59 | 显示全部楼层 |阅读模式
您好,我正在为我们办公室的服务编写程序。我已经编写了一个DCL文件,其中包含单选按钮和四个选项,这很好。现在,我想根据选择的4个单选按钮中的哪一个加载lisp。这就是我所拥有的,但我真的很感谢你的帮助。我尝试使用COND,但不确定是否正确调用了以下例程。当我运行lisp时,我没有得到函数定义:T。
ESS1500、ESS1350、ESS1200、ESS1050是我要调用的函数。
(defun C:samp4();定义函数
(vl load com)
(setq dcl\U id(加载对话框“samp3.dcl”);“加载”对话框
(setq T TB2)?????不确定我是否需要这个
 
(如果(不是)(新建对话框“samp3”dcl\U id);对话框测试
);不
(退出);如果没有对话框,则退出
);如果
(action_tile“T1”“(setq hole“TB1”)*存储孔类型
(action_tile“T2”“(setq hole“TB2”)*存储孔类型
(action_tile“T3”“(setq hole“TB3”)*存储孔类型
(action_tile“T4”“(设置孔“TB4”)*存储孔类型
 
(action_tile)
“取消”;如果按下取消按钮
“(done_对话框)(setq userclick nil)”;关闭对话框,设置标志
);action\u互动程序
(action_tile)
“接受”;如果按下“OK”
“(done_dialog)(setq userclick T))”;???这是标准代码。
 
(条件(=(T“TB1”)ESS1500)
(=(T“TB2”)ESS1350)
(=(T“TB3”)ESS1200)
(=(T“TB4”)ESS1050)
('t)
(princ“\n未更改任何内容。”)
) ;_ 可选else条件结束
) ;_ 条件结束语句
 
);动作互动程序
 
(start_对话框);开始对话框
(unload\u对话框dcl\u id);卸载
 
(普林斯)
);定义C:samp
(普林斯)
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 14:19:54 | 显示全部楼层
伙计,如果你能提供dcl文件,这将使你更容易了解你在做什么,
我想你用的是单选按钮
问候flower
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 14:25:01 | 显示全部楼层
如果我犯了什么错误,请原谅,我是个盲人,
 
但是
  1. (cond (=(T "TB1")ESS1500)
  2. (=(T "TB2")ESS1350)
  3. (=(T "TB3")ESS1200)
  4. (=(T "TB4")ESS1050)
  5. ('t
  6. (princ "\nNothing changed.")
  7. ) ;_ end of optional else condition
  8. )

 
应该是
 
 
  1. (cond (=(hole "TB1")ESS1500)
  2. (=(hole "TB2")ESS1350)
  3. (=(hole "TB3")ESS1200)
  4. (=(hole "TB4")ESS1050)
  5. ('t
  6. (princ "\nNothing changed.")
  7. ) ;_ end of optional else condition
  8. )
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 14:27:21 | 显示全部楼层
嗨,弗劳尔,
 
这是DCL:
 
samp3:对话框{//对话框名称
label=“结构孔”//给它贴个标签
:boxed\u radio\u列{//*define radio列
label=“选择类型”//*给它贴个标签
:单选按钮{//*定义单选按钮
键=“T1”//*给它起个名字
label=“类型1”//*给它贴个标签
值=“1”//*打开它
}//*结束定义
:单选按钮{//*定义单选按钮
键=“T2”//*给它起个名字
label=“类型2”//*给它贴个标签
}//*结束定义
:单选按钮{//*定义单选按钮
键=“T3”//*给它起个名字
标签=“类型3”//*给它贴个标签
}//*结束定义
:单选按钮{//*定义单选按钮
键=“T4”//*给它起个名字
label=“类型4”//*给它贴上标签
}//*结束定义
}//*结束单选列
ok\u取消//预定义确定/取消
:行{//定义行
 
:段落{//定义段落
:text\u部分{//定义文本
label=“由BD设计”//给它一些文字
}//结束文本
:text\u部分{//定义更多文本
label=“用于CCC NNRDO”//更多文字
}//结束文本
}//结束段落
}//结束行
 
}//结束对话框
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 14:32:22 | 显示全部楼层
伙计,看了一眼,没跑,普林斯派尔应该没事
 
真的没有太多变化,如果你想让我解释为什么我改变了事情,我很乐意解释
 
只有一个音符
 
张贴代码时,请将#键和所有格式****放在回复框顶部的代码标签中。
它只是保持了格式和容易的眼睛
 
  1. (defun C:samp4 () ;define function
  2. (vl-load-com)
  3. (setq dcl_id (load_dialog "samp3.dcl")) ;load dialog
  4. ; (setq T TB2); ?????Not sure if i need this
  5. ;not sure what you want from this, but i belive its not needed, but i do not know your varibles
  6. (if (not (new_dialog "samp3" dcl_id) ;test for dialog
  7.   );not
  8.    (progn
  9.       (alert "Can not find you dcl file")
  10.       (exit) ;exit if no dialog
  11.   )
  12. );if
  13. (action_tile "T1" "(setq hole "TB1")") ;*store hole type
  14. (action_tile "T2" "(setq hole "TB2")") ;*store hole type
  15. (action_tile "T3" "(setq hole "TB3")") ;*store hole type
  16. (action_tile "T4" "(setq hole "TB4")") ;*store hole type
  17. (action_tile
  18. "cancel" ;if cancel button pressed
  19. "(done_dialog) (setq userclick nil)" ;close dialog, set flag
  20. );action_tile
  21. (action_tile
  22. "accept" ;if O.K. pressed
  23. "(done_dialog)(setq userclick T))" ;??? Is this standard code.
  24. );action tile
  25. (start_dialog) ;start dialog
  26. (unload_dialog dcl_id) ;unload
  27. (if userclick
  28. (cond
  29.   (=(hole "TB1")ESS1500)
  30.   (=(hole "TB2")ESS1350)
  31.   (=(hole "TB3")ESS1200)
  32.   (=(hole "TB4")ESS1050)
  33.   (t (princ "\nNothing changed.")
  34.    ) ;_ end of optional else condition
  35. ) ;_ end of cond statement
  36. )
  37. (princ)
  38. );defun C:samp
  39. (princ "\nThis loaded fine")
  40. (princ)

 
 
和dcl,它是不变的
 
  1. samp3 : dialog { //dialog name
  2. label = "Structural Holes" ; //give it a label
  3. :boxed_radio_column { //*define radio column
  4. label = "Choose a Type" ; //*give it a label
  5. : radio_button { //*define radion button
  6.   key = "T1" ; //*give it a name
  7.   label = "Type &1" ; //*give it a label
  8.   value = "1" ; //*switch it on
  9. } //*end definition
  10. : radio_button { //*define radio button
  11.   key = "T2" ; //*give it a name
  12.   label = "Type &2" ; //*give it a label
  13. } //*end definition
  14. : radio_button { //*define radio button
  15.   key = "T3" ; //*give it a name
  16.   label = "Type &3" ; //*give it a label
  17. } //*end definition
  18. : radio_button { //*define radio button
  19.   key = "T4" ; //*give it a name
  20.   label = "Type &4" ; //*give it a label
  21. } //*end definition
  22. } //*end radio column
  23. ok_cancel ; //predifined OK/Cancel
  24. : row { //define row
  25. : paragraph { //define paragraph
  26.   : text_part { //define text
  27.    label = "Designed by BD"; //give it some text
  28.   } //end text
  29.   : text_part { //define more text
  30.    label = "for CCC NNRDO"; //some more text
  31.   } //end text
  32. } //end paragraph
  33. } //end row
  34. } //end dialog

 
对不起,由于某种原因,我的粘贴格式相当****。
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 14:34:55 | 显示全部楼层
谢谢你的花,
 
它已经消除了错误,但仍然没有运行任何ESS例程。我有他们在同一个。lsp文件。我需要用不同的方式给他们打电话吗。
 
我从命令行运行了一个ESS例程,它运行得很好。
 
如果有任何想法,我将不胜感激。。
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 14:37:08 | 显示全部楼层
是否将它们设置为同一文件中的函数?
 
如果是这样,您可以这样做:
 
  1. (cond (=(hole "TB1") (C:ESS1500))
  2. (=(hole "TB2") (C:ESS1350))
  3. (=(hole "TB3") (C:ESS1200))
  4. (=(hole "TB4") (C:ESS1050))
  5. ('t
  6. (princ "\nNothing changed.")
  7. ) ;_ end of optional else condition
  8. )

 
既然您说过可以从命令行运行例程,那么您也可以简单地执行以下操作:
 
  1. (cond (=(hole "TB1") (command "ESS1500"))
  2. (=(hole "TB2") (command "ESS1350")
  3. (=(hole "TB3") (command "ESS1200"))
  4. (=(hole "TB4") (command "ESS1050"))
  5. ('t
  6. (princ "\nNothing changed.")
  7. ) ;_ end of optional else condition
  8. )
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 14:41:30 | 显示全部楼层
对不起,伙计,我昨晚错过了
 
  1. (cond
  2.   (=(hole "TB1")(ESS1500))
  3.   (=(hole "TB2")(ESS1350))
  4.   (=(hole "TB3")(ESS1200))
  5.   (=(hole "TB4")(ESS1050))
  6.   (t (princ "\nNothing changed.")) ;_ end of optional else condition
  7. )

 
 
 
 
以及
你总是从命令行调用routenes吗?
或者只是为了测试。就像我骑“c”部分一样。
那么上述方法应该有效
 
  1. (defun ESS1350 ()
  2. "the code here"
  3. )

 
 
或者按照PHPGator做
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 14:44:58 | 显示全部楼层
谢谢大家,刚刚到办公室,尝试了你的解决方案,但没有乐趣。我犯了一个错误;错误:功能不好:“TB3”取决于我选择的单选按钮。任何想法,这是完整的代码。再次感谢。
 
 
  1. (defun C:samp4 () ;define function
  2. (vl-load-com)
  3. (setq dcl_id (load_dialog "samp3.dcl")) ;load dialog
  4. ;not sure what you want from this, but i belive its not needed, but i do not know your varibles
  5. (if (not (new_dialog "samp3" dcl_id) ;test for dialog
  6.   );not
  7.    (progn
  8.       (alert "Can not find you dcl file")
  9.       (exit) ;exit if no dialog
  10.   )
  11. );if
  12. (action_tile "T1" "(setq hole "TB1")") ;*store hole type
  13. (action_tile "T2" "(setq hole "TB2")") ;*store hole type
  14. (action_tile "T3" "(setq hole "TB3")") ;*store hole type
  15. (action_tile "T4" "(setq hole "TB4")") ;*store hole type
  16. (action_tile
  17. "cancel" ;if cancel button pressed
  18. "(done_dialog) (setq userclick nil)" ;close dialog, set flag
  19. );action_tile
  20. (action_tile
  21. "accept" ;if O.K. pressed
  22. "(done_dialog)(setq userclick T))" ;??? Is this standard code.
  23. );action tile
  24. (start_dialog) ;start dialog
  25. (unload_dialog dcl_id) ;unload
  26. (if userclick
  27. (cond
  28.   (=(hole "TB1")  (command "ESS1500"))
  29.   (=(hole "TB2")  (command "ESS1350"))
  30.   (=(hole "TB3")  (command "ESS1200"))
  31.   (=(hole "TB4")  (command "ESS1050"))
  32.   (t (princ "\nNothing changed.")
  33.    ) ;_ end of optional else condition
  34. ) ;_ end of cond statement
  35. )
  36. (princ)
  37. );defun C:samp
  38. (princ "\nThis loaded fine")
  39. (princ)
  40. (defun c:ESS1500()
  41. (setq a "CCC_DR_1500")
  42. (if (= (tblsearch "ltype" a) nil)  
  43.       (command "-linetype" "l" a "acadiso.lin" "")
  44.             (princ))
  45. (graphscr)
  46. (command "._-layer"   "N"   "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1500"   "M"   "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1500"   "L"   
  47. "CCC_DR_1500"  "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1500"   "C"   "84"   "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1500"   "LW"   
  48. "0.3"   "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1500"    "" )
  49. (command "pline" pause "width" "0.0" "0.0" pause "width" "0.0" "0.0")
  50. (setvar "cmdecho" 1)
  51. (princ)
  52. )
  53. ;;;;;;;;;;Existing Storm_Sewer 1500mm;;;;;;;;;; End
  54. ;;;;;;;;;;Existing Storm_Sewer 1350mm;;;;;;;;;; Start
  55. (defun c:ESS1350()
  56. (setq a "CCC_DR_1350")
  57. (if (= (tblsearch "ltype" a) nil)  
  58.       (command "-linetype" "l" a "acadiso.lin" "")
  59.             (princ))
  60. (graphscr)
  61. (command "._-layer"   "N"   "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1350"   "M"   "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1350"   "L"   
  62. "CCC_DR_1350"  "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1350"   "C"   "84"   "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1350"   "LW"   
  63. "0.3"   "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1350"    "" )
  64. (command "pline" pause "width" "0.0" "0.0" pause "width" "0.0" "0.0")
  65. (setvar "cmdecho" 1)
  66. (princ)
  67. )
  68. ;;;;;;;;;;Existing Storm_Sewer 1350mm;;;;;;;;;; End
  69. ;;;;;;;;;;Existing Storm_Sewer 1200mm;;;;;;;;;; Start
  70. (defun c:ESS1200()
  71. (setq a "CCC_DR_1200")
  72. (if (= (tblsearch "ltype" a) nil)  
  73.       (command "-linetype" "l" a "acadiso.lin" "")
  74.             (princ))
  75. (graphscr)
  76. (command "._-layer"   "N"   "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1200"   "M"   "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1200"   "L"   
  77. "CCC_DR_1200"  "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1200"   "C"   "84"   "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1200"   "LW"   
  78. "0.3"   "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1200"    "" )
  79. (command "pline" pause "width" "0.0" "0.0")
  80. (setvar "cmdecho" 1)
  81. (princ)
  82. )
  83. ;;;;;;;;;;Existing Storm_Sewer 1200mm;;;;;;;;;; End
  84. ;;;;;;;;;;Existing Storm_Sewer 1050mm;;;;;;;;;; Start
  85. (defun c:ESS1050()
  86. (setq a "CCC_DR_1050")
  87. (if (= (tblsearch "ltype" a) nil)  
  88.       (command "-linetype" "l" a "acadiso.lin" "")
  89.             (princ))
  90. (graphscr)
  91. (command "._-layer"   "N"   "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1050"   "M"   "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1050"   "L"   
  92. "CCC_DR_1050"  "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1050"   "C"   "84"   "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1050"   "LW"   
  93. "0.3"   "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_1050"    "" )
  94. (command "pline" pause "width" "0.0" "0.0")
  95. (setvar "cmdecho" 1)
  96. (princ)
  97. )
  98. ;;;;;;;;;;Existing Storm_Sewer 1050mm;;;;;;;;;; End
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 14:48:58 | 显示全部楼层
对不起,伙计,没接电话,喝醉了或挂了电话
 
尝试使用
 
  1. (cond
  2.   (= hole "TB1")  (command "ESS1500"))
  3.   (= hole "TB2")  (command "ESS1350"))
  4.   (= hole "TB3")  (command "ESS1200"))
  5.   (= hole "TB4")  (command "ESS1050"))
  6.   (t (princ "\nNothing changed.")
  7.    ) ;_ end of optional else condition
  8. )

 
 
请注意,如果你不选择任何东西,它将不会返回任何更改。
但是,单选按钮的缺点是启用一个选项,或者使用切换按钮,并将额外选项设置为“none”或其他选项,或者不使用该选项
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 03:10 , Processed in 0.738266 second(s), 83 queries .

© 2020-2025 乐筑天下

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