明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1256|回复: 6

[源码] 帮我看一下哪里有问题?

[复制链接]
发表于 2014-7-17 14:30:01 | 显示全部楼层 |阅读模式
lisp文件如下。运行时总是提示缺少函数
(DEFUN C:e00(/DT DT1 DT2 DT3);标注加前后缀
(setvar "cmdecho" 0)
(setq sys (getvar "osmode"))
(setvar "osmode" 0)
(setq  dcl_id (load_dialog "e00"))
  (new_dialog "e00" dcl_id)
  (action_tile "DT1" "(setq DT1 $value)")
  (action_tile "DT2" "(setq DT2 $value)")
  (start_dialog)
(setq DT3 "<>")
(setq DT (STRCAT DT1 DT3  DT2 ))
(COMMAND "_DIMOVERRIDE" "DIMPOST" DT  "")
(setvar "osmode" sys)
(setvar "cmdecho" 1)
(PRINC)
)

对话框文件
e00:dialog{
label="添加标注前后缀";
    :edit_box{
    label="标注前缀";
    edit_width=10;
    key="DT1";
   }   
    :edit_box{
   label="标注后缀";
   edit_width=10;
    key="DT2";
   }
    ok_cancel;  
}

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-7-17 15:18:53 | 显示全部楼层
问题出在第一行声明局部参数的时候/后面少一个空格,另外,在strcat一句前面应该对dt1和dt2是否为空进行判别。
 楼主| 发表于 2014-7-18 09:04:23 | 显示全部楼层
ll_j 发表于 2014-7-17 15:18
问题出在第一行声明局部参数的时候/后面少一个空格,另外,在strcat一句前面应该对dt1和dt2是否为空进行判别 ...

O(∩_∩)O谢谢。再问一下在strcat一句前面应该对dt1和dt2是否为空进行判别怎么做?
下面的程序是不是不用加?
(DEFUN C:e00(/ DT DT1 DT2 DT3)
(setvar "cmdecho" 0)
(setq sys (getvar "osmode"))
(setvar "osmode" 0)
(setq DT1 (getstring"标注前缀"))
(setq DT2 (getstring"标注后缀"))
(setq DT3 "<>")
(setq DT (STRCAT DT1 DT3  DT2 ))
(COMMAND "_DIMOVERRIDE" "DIMPOST" DT  "")
(setvar "osmode" sys)
(setvar "cmdecho" 1)
(PRINC)
)
发表于 2014-7-18 09:23:14 | 显示全部楼层
zkq1212 发表于 2014-7-18 09:04
O(∩_∩)O谢谢。再问一下在strcat一句前面应该对dt1和dt2是否为空进行判别怎么做?
下面的程序是不是不用 ...


getstring是允许空输入的,空输入返回空字符串"",所以不需要判别,前面的对话框没做判别,空输入则返回nil,程序出错,所以在strcat一句之前,应该加上判别,可以这样:
  1. (if (not dt1) (setq dt1 ""))
  2. (if (not dt2) (setq dt2 ""))
  3. (setq dt (strcat...
 楼主| 发表于 2014-7-18 10:11:14 | 显示全部楼层
ll_j 发表于 2014-7-18 09:23
getstring是允许空输入的,空输入返回空字符串"",所以不需要判别,前面的对话框没做判别,空输入则返回 ...

O(∩_∩)O谢谢,全部改好了。

(DEFUN C:EDIM2(/ DT DT1 DT2 DT3)
(vl-load-com)
  (setvar "cmdecho" 0)
  (setq sys (getvar "osmode"))
  (setvar "osmode" 0)
(setq dclname (vl-filename-mktemp "re-dcl-tmp.dcl"))
               (setq filen (open dclname "w"))
               (write-line "RENAME:dialog {" filen)
               (write-line "    label = \"标注添加前后缀\" ;" filen)
               (write-line "        :edit_box {  label = \" 前缀:\";    key = \"DT1\" ;  }" filen)
               (write-line "        :edit_box {  label = \" 后缀:\";    key = \"DT2\" ;  }" filen)
               (write-line "    :row {" filen)
               (write-line "        :button {is_default = true ; key = \"done_dialog \" ; label = \"确认\" ; }" filen)
               (write-line "        :button { is_cancel = true ; key = \"btn_cancle\" ; label = \"取消\" ; }" filen)
               (write-line "        }}" filen)
               (close filen)
               (setq dcl_re (load_dialog dclname))
               (new_dialog "RENAME" dcl_re)
               (action_tile "DT1" "(setq DT1 $value)")
               (action_tile "DT2" "(setq DT2 $value)")
               (start_dialog)
               (unload_dialog dcl_re)
               (vl-file-delete dclname)
(if (= NIL dt1) (setq dt1 " "))
(if (= NIL dt2) (setq dt2 " "))
(setq DT3 "<>")
(setq DT (STRCAT DT1 DT3  DT2 ))
(COMMAND "_DIMOVERRIDE" "DIMPOST" DT  "")
(setvar "osmode" sys)
(setvar "cmdecho" 1)
(PRINC)
)
发表于 2014-7-18 10:41:37 | 显示全部楼层
  1. (defun c:tt (/ ilst)
  2.   (defun main-pro (/ dt)
  3.     (setq dt (strcat t1 "<>" t2))
  4.     (command "_dimoverride" "dimpost" dt "")
  5.   )
  6.   (xyp-initSet '(t1 t2) '("" ""))
  7.   (setq ilst '(("t1" "前缀" "str" "12")
  8.                ("t2" "后缀" "str" "12")
  9.                "spacer;"
  10.               )
  11.   )
  12.   (if (= (xyp-Dcl-Init Ilst "【标注添加前后缀】" t) 1)
  13.     (main-pro)
  14.   )
  15.   (princ)
  16. )
 楼主| 发表于 2014-7-18 10:43:14 | 显示全部楼层
本帖最后由 zkq1212 于 2014-7-18 11:59 编辑
xyp1964 发表于 2014-7-18 10:41

对方没有e派工具箱,我一个朋友,cad小白一个尺寸经常被改的很乱。

点评

对方是哪位?!  发表于 2014-7-18 11:18
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-24 09:32 , Processed in 0.148019 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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