找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 682|回复: 6

[求助] [求助]:请那位大哥帮忙看看这个程序,以前发的都没成功!!!

[复制链接]
发表于 2005-12-9 15:15:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
此程序功能:选择一直线后,出现以对话框,默认值为管,当选择板、环、锥或型钢后出现一新的对话框,但是现在当选择板、环、锥或型钢后,不出现对话框,而是提示错误,不知怎么回事,请那位大哥帮忙看看,谢谢了
有点着急!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-12-9 15:30:59 | 显示全部楼层

Re: [求助]:请那位大哥帮忙看看这个程序,以前发的都没成功!!!

最初由 frankxie 发布
[B]此程序功能:选择一直线后,出现以对话框,默认值为管,当选择板、环、锥或型钢后出现一新的对话框,但是现在当选择板、环、锥或型钢后,不出现对话框,而是提示错误,不知怎么回事,请那位大哥帮忙看看,谢谢了
有... [/B]

没看懂“此程序功能:选择一直线后,出现以对话框,默认值为管,当选择板、环、锥或型钢后出现一新的对话框,但是现在当选择板、环、锥或型钢后,不出现对话框,而是提示错误,不知怎么回事,请那位大哥帮忙看看,谢谢了!有点着急!”,请提供DWG文件加以说明!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-9 15:35:57 | 显示全部楼层
把备份文件加载后,输入命令input 就可以出来对话框
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-13 10:39:16 | 显示全部楼层
你是不是没有把第一个对话框结束或中断就调用第二个对话框啦?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-13 13:16:32 | 显示全部楼层
程序中第174行(unload_dialog input)不对,应改为(unload_dialog index_value),因为你在新建对话框new_dialog时是这样的用法!(if (new_dialog "input" index_value)!因为和你不一样的专业,不知你想要让程序完成什么?但你说的问题即“不出现对话框,而是提示错误”可能在这一句!
还有第86行(set_tile "type" (vl-princ-to-string lasttype))一句是什么意思,lasttype变量好像在程序前面并没有出现,运行到此步时其值为nil,所以以下程序中:
  1. (cond
  2.             ((= lasttype "pipe")
  3.              (progn
  4.                (pipestatus)
  5.                (set_tile "leftnode" (vl-princ-to-string lastleftnode))
  6.                (set_tile "leftboard" (vl-princ-to-string lastleftboard))
  7.                (set_tile "rightnode" (vl-princ-to-string lastrightnode))
  8.                (set_tile "rightboard"
  9.                          (vl-princ-to-string lastrightboard)
  10.                )
  11.                (set_tile "No" (vl-princ-to-string lastno))
  12.                (set_tile "length" (vl-princ-to-string lastlength))
  13. ;;;;;;;;;;;;;;;;;;
  14.                (set_tile "diameter" (vl-princ-to-string lastdiameter))
  15. ;;;;;;;;;;;;;;;;;;
  16.                (set_tile "thickness" (vl-princ-to-string lastthinkness))
  17. ;;;;;;;;;;;;;;;
  18.                (set_tile "material" (vl-princ-to-string lastmaterial))
  19. ;;;;;;;;;;;;;;;;;
  20.                                         ;(setq list1 lastlist)
  21.                                         ;(setq subtime lastsub)
  22.                                         ;(repeat lastsub
  23.                                         ;(setq lastlist2 (car lastlist))
  24.                                         ;(setq s1 (car lastlist2))
  25.                                         ;(setq s2 (cadr lastlist2))
  26.                                         ;(setq s3 (caddr lastlist2))
  27.                                         ;(setq s4 (last lastlist2))
  28.                                         ;(setq string (strcat s1 " " " " s2 " " " " s3 " " " " s4))
  29.                                         ;(start_list "popuplist" 2);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  30.                                         ;(add_list string)
  31.                                         ;(end_list)
  32.                                         ;(setq lastlist (cdr lastlist))
  33.                                         ;)
  34.              )
  35.             )
  36.             ((= lasttype "board")
  37.              (progn
  38.                (boardstatus)
  39.                (set_tile "angel" (vl-princ-to-string lastangel))
  40.                (set_tile "splint" (vl-princ-to-string lastsplint))
  41.              )
  42.             )
  43.             ((= lasttype "ring")
  44.              (progn
  45.                (ringstatus)
  46.                (set_tile "outdia" (vl-princ-to-string lastoutdia))
  47.                (set_tile "india" (vl-princ-to-string lastindia))
  48.              )
  49.             )
  50.             ((= lasttype "cone")
  51.              (progn
  52.                (conestatus)
  53.                (set_tile "outdia" (vl-princ-to-string lastbigdia))
  54.                (set_tile "india" (vl-princ-to-string lastsmalldia))
  55.              )
  56.             )
  57.             ((= lasttype "bar")
  58.              (progn
  59.                (barstatus)
  60.                (set_tile "height" (vl-princ-to-string lastheight))
  61.                (set_tile "width" (vl-princ-to-string lastwidth))
  62.                (set_tile "barthick1" (vl-princ-to-string lastbarthick1))
  63.                (set_tile "barthick2" (vl-princ-to-string lastbarthick2))
  64.                (set_tile "rad" (vl-princ-to-string lastrad))
  65.              )
  66.             )

  67.           )

所有类型都不符合,我在对话框中设置中输入radio_row时并不设置关键字key,而你的对话框文件中有一句,
  1. :label="杆件信息";
  2. :radio_row{
  3. key="type";
书上写单选行(即radio_row)的专有属性只介绍了value值属性,所以我认为:在这里key关键字属性是不起什么作用的!
所以要去掉lasttype这个变量,而将上述程序中各个cond语句加入
  1.           (action_tile "pipe" "(done_dialog 1)")
  2.           (action_tile "board" "(done_dialog 2)")
  3.           (action_tile "ring" "(done_dialog 3)")
  4.           (action_tile "cone" "(done_dialog 4)")
  5.           (action_tile "bar" "(done_dialog 5)")
复制代码

语句中,比如pipe改为
  1. (action_tile "pipe" "(boardstatus)  (done_dialog 1)"
复制代码
,并在(boardstatue)子程中加入你想要的内容!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-13 14:04:42 | 显示全部楼层
似水无痕 改后把完整的文件发上来吧:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-13 14:10:27 | 显示全部楼层
最初由 无痕 发布
[B]似水无痕 改后把完整的文件发上来吧:) [/B]

程序我并没有该好,因为我也在楼上提到,和楼主并非一个专业,不知道楼主的思路如何,只是完全基于lisp和dcl语句中出现的几个错误给楼主提出一下而已!
哈哈,你也无痕,我亦无痕么!
呵呵,一不小心,在我编辑这个帖子并发布时,又的到一分,在此感谢eachy斑竹!万分感谢!!

对了,楼主!我这里有一个书上介绍的程序,感觉到挺通用的,这里给你发过去一个,可以做一个参照(这里并没有给出全部的,只是提取对话框数据的,全部程序在附件里):
lisp程序
  1. ;;函数gi:getdialoginput()
  2. (defun gi:getdialoginput (/            shuruva   dcl_id        vallist
  3.                           do_what   dialogloaded        dialogshow
  4.                           xe            ye              ze        nxe
  5.                           nye            nze
  6.                          )
  7.                                         ;(alert
  8.                                         ;"函数gi:getdialoginput将通过消息框通知用户参数输入的结果及下一步的行动。"
  9.                                         ;)
  10.                                         ;t
  11.   (setq        dialogloaded t
  12.         dialogshow   t
  13.   )
  14.   (if (> 0 (setq dcl_id (load_dialog "jiaocao.dcl")))
  15.     (progn
  16.       (princ "\n未能加载对话框文件:jiaocao.dcl")
  17.       (setq dialogloaded nil)
  18.     )
  19.   )                                        ;结束if
  20.   (setq        nxe "0.0"
  21.         nye "0.0"
  22.         nze "0.0"
  23.   )
  24.   (setq do_what 2)
  25.   (while (>= do_what 2)
  26.     (if        (= null (new_dialog "jiancao" dcl_id))
  27.       (progn
  28.         (princ "\n未能显示输入键槽参数对话框。")
  29.         (setq dialogshow nil)
  30.         (exit)
  31.       )                                        ;progn结束
  32.     )                                        ;if结束
  33.     (set_tile "yuanxinx" nxe)
  34.     (set_tile "yuanxiny" nye)
  35.     (set_tile "yuanxinz" nze)
  36.     (action_tile "lungua" "(gshendu)")
  37.     (action_tile "lunzhou" "(zshendu)")
  38.     (action_tile
  39.       "accept"
  40.       "(setq shuruvar (ok)) (done_dialog 1)"
  41.     )
  42.     (action_tile "cancel" "(done_dialog 0)")
  43.     (action_tile "shiqudian" "(done_dialog 4)")
  44.     (setq do_what (start_dialog))
  45.     (cond
  46.       ((= do_what 4)
  47.        (setq centre (getpoint "\n输入圆心点:"))
  48.        (setq xe        (car centre)
  49.              ye        (cadr centre)
  50.              ze        (caddr centre)
  51.        )
  52.        (setq nxe (rtos xe))
  53.        (setq nye (rtos ye))
  54.        (setq nze (rtos ze))
  55.       )
  56.       ((= what_next 0)
  57.        (prompt "\n对话框被取消。")
  58.       )
  59.     )                                        ;结束cond
  60.   )                                        ;结束while
  61.   (unload_dialog dcl_id)
  62.   shuruvar
  63. )

dcl对话框
  1. jiancao:dialog {
  2.         label = "输入键槽参数对话框";
  3.         spacer;
  4.         :boxed_column {
  5.                 label = "选择绘制键槽参数";
  6.                 spacer;
  7.                 :boxed_radio_row {
  8.                         label = "选择绘制键槽类型";
  9.                         :radio_button {
  10.                                 label = "绘制轮毂";
  11.                                 key = "lungua";
  12.                                 value = "1";
  13.                         }
  14.                         :radio_button {
  15.                                 label = "绘制轮轴";
  16.                                 key = "lunzhou";
  17.                         }
  18.                 }
  19.                 spacer;
  20.                 :boxed_row {
  21.                         label = "输入键槽参数";
  22.                         spacer;
  23.                         :boxed_column {
  24.                                 label = "输入轮毂或轮轴的圆心坐标";
  25.                                 :edit_box {
  26.                                         label = "圆心的X坐标值:";
  27.                                         key = "yuanxinx";
  28.                                         edit_width = 10;
  29.                                 }
  30.                                 :edit_box {
  31.                                         label = "圆心的Y坐标值:";
  32.                                         key = "yuanxiny";
  33.                                         edit_width = 10;
  34.                                 }
  35.                                 :edit_box {
  36.                                         label = "圆心的Z坐标值:";
  37.                                         key = "yuanxinz";
  38.                                         edit_width = 10;
  39.                                 }
  40.                                 :button {
  41.                                         label = "拾取点...";
  42.                                         key = "shiqudian";
  43.                                 }
  44.                         }
  45.                         :boxed_column {
  46.                                 label = "输入参数";
  47.                                 :edit_box {
  48.                                         label = "输入圆的半径r:";
  49.                                         key = "banjing";
  50.                                         value = "0.0";
  51.                                         edit_width = 14;
  52.                                 }
  53.                                 :popup_list {
  54.                                         label = "输入键槽宽度b:";
  55.                                         key = "kuandu";
  56.                                         width = 14;
  57.                                         list = "2\n3\n4\n5\n6\n8\n10\n12\n14\n16\n18\n20\
  58.                                         22\n25\n28\n32\n36\n40\n45\n50\n56\n63\n70\n80\
  59.                                         90\n100 ";
  60.                                         value = "";
  61.                                 }
  62.                                 :popup_list {
  63.                                         label = "轮毂键槽深度t:";
  64.                                         key = "gushendu";
  65.                                         width = 12;
  66.                                         list = "1.0\n1.4\n1.8\n2.3\n2.8\n3.3\n3.8\n4.3\
  67.                                         4.4\n4.9\n5.4\n6.4\n7.4\n8.4\n9.4\n10.4\n11.4\
  68.                                         12.4\n14.4\n15.4\n17.4\n19.5 ";
  69.                                         value = "";
  70.                                 }
  71.                                 :popup_list {
  72.                                         label = "轮轴键槽深度t:";
  73.                                         key = "zoshendu";
  74.                                         width = 12;
  75.                                         list = "1.2\n1.8\n2.5\n3.0\n3.5\n4.0\n5.0\n5.5\
  76.                                         6.0\n7.0\n7.5\n9.0\n10.0\n12.0\n13.0\n15.0\
  77.                                         17.0\n20.0\n22.0\n25.0\n28.0\n31.0 ";
  78.                                         value = "";
  79.                                         is_enabled = "false";
  80.                                 }
  81.                                 :edit_box {
  82.                                         label = "键槽角度αC°:";
  83.                                         key = "jiaodu";
  84.                                         value = "0.0";
  85.                                         edit_width = 14;
  86.                                 }
  87.                         }
  88.                 }
  89.         }
  90.         spacer;
  91.         ok_cancel;
  92. }
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 22:08 , Processed in 0.181782 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表