明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1382|回复: 8

求助!!!!

[复制链接]
发表于 2005-11-16 20:37 | 显示全部楼层 |阅读模式

请各位帮我看看下面的代码错在哪里?应该怎样改?

(defun c:bh(/ fjh dcl_id)
  (setq pt (getpoint "\n请指定标注点:"))
  (while pt
    (setq dcl_id (load_dialog "fjmc.dcl"))
  (if (new_dialog "fjmc" dcl_id)
    (progn
      (set_tile "fjmc" "")  ;缺省
       (mode_tile "fjmc" 2)         ;2 将焦点设置到控件 
       (mode_tile "fjmc" 3)             ; 3 选择框中的内容

      (action_tile "zt1" "(command \"-style\"  \"\" \"txt\" \"\" \"\" \"\" \"\" \"\" \"\")")

      (action_tile "zt2" "(command \"-style\"  \"\" \"仿宋_GB2312\" \"\" \"\" \"\" \"\" \"\" \"\")")

      (action_tile "fjmc" "(setq fjh $value)")
      (action_tile "fjmc" "(setq fjh $value)")
      (action_tile "accept" "(done_dialog) (setq UserClick T)")
      (action_tile "cancel" "(done_dialog) (setq UserClick nil)")
      (start_dialog)
      (unload_dialog dcl_id)
    )
    (princ "Error: Unable to load fjmc.DCL. ")
  )

  (command "text" pt 250 "" fjh)
  (setq fjh nil)
  (setq pt (getpoint "\n 继续选点 :"))
  );end while
  (command "-layer" "s" "0" "")
 (princ)
)

对话框文件:

fjmc : dialog {
    label = "房间名称";
    : text {
      label = "请输入房间名称";
    }
    : boxed_radio_column {
    label="字体选择";
  : radio_button {
    label = "English";
    key = "zt1";
    value = "1";
   }
     : radio_button {
    label = "Chinese";
    key = "zt2";
    }
   }
    :edit_box {
    edit_limit=20;
    key= "fjmc";
    }
    :row {
    :button {label = "确  定";
    is_default = true;
    key = "accept";
    width = 12;
    fixed_width = true;
  }
  : button {   
    label = "退  出";
    key = "cancel";
    width = 12;
    fixed_width = true;
  }
}
}

发表于 2005-11-17 15:09 | 显示全部楼层

将程序改成以下就可以了:

(defun c:bh(/ fjh dcl_id)
  (setq pt (getpoint "\n请指定标注点:"))
  (setq what 3.0)
  (while pt
    (setq what 3.0)
  (while (>= what 2.0)
    (if (/= bh-zt1 nil) (bh-rsetc))
    (setq dcl_id (load_dialog "fjmc.dcl"))
  (if (new_dialog "fjmc" dcl_id)
    (progn
      (action_tile "zt1" "(bh-setc)(done_dialog 4)(command \"-style\" \"\" \"txt\" \"\" \"\" \"\" \"\" \"\" \"\")")
      (action_tile "zt2" "(bh-setc)(done_dialog 3)(command \"-style\" \"\" \"仿宋_GB2312\" \"\" \"\" \"\" \"\" \"\" \"\")")
      (set_tile "fjmc" "")  ;缺省
       (mode_tile "fjmc" 2)         ;2 将焦点设置到控件 
       (mode_tile "fjmc" 3)             ; 3 选择框中的内容
      (action_tile "fjmc" "(setq fjh $value)")
      (action_tile "accept" "(done_dialog 1) ")
      (action_tile "cancel" "(done_dialog) (setq UserClick nil)")
      (setq what (start_dialog))
      (unload_dialog dcl_id)
    )
    (princ "Error: Unable to load fjmc.DCL. ")
  )

  (command "text" pt 250 "" fjh)
    )
  (setq fjh nil)
  (setq pt (getpoint "\n 继续选点 :"))
  );end while
  (command "-layer" "s" "0" "")
 (princ)
)

(defun bh-setc()
  (setq bh-zt1 (get_tile "zt1")
 bh-zt2 (get_tile "zt2")
 bh-fjmc(get_tile "fjmc")
 )
  )

(defun bh-rsetc()
        (set_tile "zt1" bh-zt1)
   (set_tile "zt2" bh-zt2)
 (set_tile "fjmc" bh-fjmc)
 
  )

 楼主| 发表于 2005-11-17 20:11 | 显示全部楼层

还是不行哦!按单选按纽就死!

楼上的DX你试过有用?

发表于 2005-11-17 20:33 | 显示全部楼层

action_tile函数里面不能直接调用command,ssget之类的函数

回家咯.

 楼主| 发表于 2005-11-18 12:19 | 显示全部楼层

原来是这样!!

那么怎样改呢?

发表于 2005-11-18 13:24 | 显示全部楼层
(defun S_dialog-pro (/)
  (setq S_dcl (load_dialog "D:/LispTemp/A.Cad/SingleModel/Scr.dcl"))
  (setq S_log 2)
  (while (> S_log 1)
    (if (null (new_dialog "Scr" S_dcl "" '(250 100)))
      (exit)
    )
    (action_tile "ButInsert" "(done_dialog 3)")
    (setq S_log (start_dialog))
    (if (< S_log 0)
      (exit)
      (if (= S_log 3)
 (progn
   ;;把Command 放在这里,或在这里调用子程序里的Command
 )
      )
    )
  )
  (princ)
)
 楼主| 发表于 2005-11-19 15:46 | 显示全部楼层

我很菜的,看不明白! 楼上的高手能解释一下不?

发表于 2005-11-19 16:42 | 显示全部楼层

(defun c:bh(/ fjh dcl_id)
  (setq pt (getpoint "\n请指定标注点:"))
  (while pt
    (setq dcl_id (load_dialog "fjmc.dcl"))
  (if (new_dialog "fjmc" dcl_id)
    (progn
      (set_tile "fjmc" "")  ;缺省
       (mode_tile "fjmc" 2)         ;2 将焦点设置到控件 
       (mode_tile "fjmc" 3)             ; 3 选择框中的内容
      (action_tile "accept" "(YH_getdata)(done_dialog)")
      (start_dialog)
      (unload_dialog dcl_id)
    )
    (princ "Error: Unable to load fjmc.DCL. ")
  )
  (if (= YH_zt1 "1") (command "-style" "" "txt" "" "" "" "" "" ""))
  (if (= YH_zt2 "1") (command "-style" "" "仿宋_GB2312" "" "" "" "" "" ""))
  (command "text" pt 250 "" fjh)
  (setq fjh nil)
  (setq pt (getpoint "\n 继续选点 :"))
  );end while
  (command "-layer" "s" "0" "")
 (princ)
)

(defun YH_getdata ()
  (setq YH_zt1 (get_tile "zt1")
 YH_zt2 (get_tile "zt2")
 fjh (get_tile "fjmc")
 )
)

把下面的程序改成ok_cancel;

:row {
    :button {label = "确  定";
    is_default = true;
    key = "accept";
    width = 12;
    fixed_width = true;
  }
  : button {   
    label = "退  出";
    key = "cancel";
    width = 12;
    fixed_width = true;
  }
}

 

 楼主| 发表于 2005-11-19 20:31 | 显示全部楼层

多谢各位高手指点!

受益非浅啊!

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-21 12:49 , Processed in 0.241001 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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