明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 924|回复: 7

[源码] 程序有问题 我是按书打的 但是不知道为什么错误

[复制链接]
发表于 2015-3-17 17:15:16 | 显示全部楼层 |阅读模式
有没有大神能帮忙看下

(Defun C:DrawRect()
  (setq return_value (load_dialog"rect.dcl"))
  (setq m_x 0)
  (setq m_y 0)
  (setq pt'(0 0))
  (setq what_next 2)
  (while(>= what_next 2)
    (if (null (new_dialog"rect"return_value))
      (exit)
    )
    (dispos)
    (action_tile"accept" "(getdata)(done_dialog 1)")
    (action_tile"key_selpos" "(done_dialog 4)")
    (action_tile"cancael" "(done_dialog -1)")
    (setq what_next (start_dialog))
    (cond
      ((= what_next 1)
         (FuncDrawRect)
       )
       ((= what_next 4)
         (setq pt(getpoint"\n Getpoint"))
       )
       ((= what_next 0)
         (prompt"\n用户禁用对话:")
       )
      )
    )
  (unload_dialog return_value)
  (princ)
  )
  ;初始化
  (defun dispos()
    (show)
    (setq m_x (car pt))
    (setq m_y (cadr pt))
    (set_tile"key_x"(rtos m_x 2 2))
    (set_tile"key_y"(rtos m_y 2 2))
  )
  ;绘制矩形框
  (defun FuncDrawRect()
    (command"rectang"(list m_x m_y)
            (list (+ m_x m_length) (+ m_y m_width)))
            )
    ;获取数据
    (defun getdata()
      (setq m_x (atof(get_tile "key_x")))
      (setq m_y (atof(get_tile "key_y")))
      (setq m_length (atof(get_tile "key_length")))
      (setq m_width (atof(get_tile "key_width")))
     )
    ;显示幻灯片
    (defun show()
      (setq x1 (dimx_tile "img_rect"))
      (setq y1 (dimy_tile "img_rect"))
      (start_image "img_rect")
      (slide_image 0 0 x1 y1 "rectangle.sld")
      (end_image)
      )

/*DCL文件/
rect : dialog{
     label = "绘制矩形图";
     :row{
            :image
            {
            width=30;
            heigth=2;
           //aspect_ratio=0.1;
            key="img_rect";
            color=-2;
            }
           :boxed_column{
                label="参数";
                :row{
                        :column{
                        :edit_box
                        {
                        label="起始位置X坐标:        ";
                        key="key_x";
                        width=8;
                        value="0";
                        }
                        :edit_box
                        {
                        label="起始位置Y坐标:        ";
                        key="key_y";
                        width=8;
                        value="0";
                        }
                        :button
                        {
                        label="选择屏幕坐标:        ";
                        key="key_selpos";
                        }
                              }
                   }
               :edit_box
               {
               label="长度:";
               key="key_length";
               width=8;
               value="0";
               }
               :edit_box
               {
               label="宽度:";
               key="key_width";
               width=8;
               value="0";
               }
          }
        }
    ok_cancel;
    }


发表于 2015-3-17 18:33:42 | 显示全部楼层
你程序的开头就告诉你了
(setq return_value (load_dialog"rect.dcl"))
把你的后面的/*DCL文件/另存为 rect.dcl。OK?
 楼主| 发表于 2015-3-17 18:54:22 | 显示全部楼层
newbuser 发表于 2015-3-17 18:33
你程序的开头就告诉你了
(setq return_value (load_dialog"rect.dcl"))
把你的后面的/*DCL文件/另存为 re ...

名字也要这样? 而不是说改下文件类型?
 楼主| 发表于 2015-3-17 19:11:30 | 显示全部楼层
newbuser 发表于 2015-3-17 18:33
你程序的开头就告诉你了
(setq return_value (load_dialog"rect.dcl"))
把你的后面的/*DCL文件/另存为 re ...

试过了还是有问题。。。
发表于 2015-3-18 09:22:07 | 显示全部楼层
xiangjinglai 发表于 2015-3-17 19:11
试过了还是有问题。。。

Lisp文件应这么写,(Load_dialog "d:\\rect.dcl")这句是带地址的,意思是运行d盘的rect.dcl文件,注意路径,可以自己任意修改
现复制抄送你的LISP文件如下
  1. (Defun C:DrawRect()
  2.   (setq return_value (load_dialog"d:\\rect.dcl"))
  3.   (setq m_x 0)
  4.   (setq m_y 0)
  5.   (setq pt'(0 0))
  6.   (setq what_next 2)
  7.   (while(>= what_next 2)
  8.     (if (null (new_dialog"rect"return_value))
  9.       (exit)
  10.     )
  11.     (dispos)
  12.     (action_tile"accept" "(getdata)(done_dialog 1)")
  13.     (action_tile"key_selpos" "(done_dialog 4)")
  14.     (action_tile"cancael" "(done_dialog -1)")
  15.     (setq what_next (start_dialog))
  16.     (cond
  17.       ((= what_next 1)
  18.          (FuncDrawRect)
  19.        )
  20.        ((= what_next 4)
  21.          (setq pt(getpoint"\n Getpoint"))
  22.        )
  23.        ((= what_next 0)
  24.          (prompt"\n用户禁用对话:")
  25.        )
  26.       )
  27.     )
  28.   (unload_dialog return_value)
  29.   (princ)
  30.   )
  31.   ;初始化
  32.   (defun dispos()
  33.     (show)
  34.     (setq m_x (car pt))
  35.     (setq m_y (cadr pt))
  36.     (set_tile"key_x"(rtos m_x 2 2))
  37.     (set_tile"key_y"(rtos m_y 2 2))
  38.   )
  39.   ;绘制矩形框
  40.   (defun FuncDrawRect()
  41.     (command"rectang"(list m_x m_y)
  42.             (list (+ m_x m_length) (+ m_y m_width)))
  43.             )
  44.     ;获取数据
  45.     (defun getdata()
  46.       (setq m_x (atof(get_tile "key_x")))
  47.       (setq m_y (atof(get_tile "key_y")))
  48.       (setq m_length (atof(get_tile "key_length")))
  49.       (setq m_width (atof(get_tile "key_width")))
  50.      )
  51.     ;显示幻灯片
  52.     (defun show()
  53.       (setq x1 (dimx_tile "img_rect"))
  54.       (setq y1 (dimy_tile "img_rect"))
  55.       (start_image "img_rect")
  56.       (slide_image 0 0 x1 y1 "rectangle.sld")
  57.       (end_image)
  58.       )
以下是扩展名为dcl的rect文件  
运行效果如下图

本帖子中包含更多资源

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

x
 楼主| 发表于 2015-3-18 09:35:47 | 显示全部楼层
newbuser 发表于 2015-3-18 09:22
Lisp文件应这么写,(Load_dialog "d:\\rect.dcl")这句是带地址的,意思是运行d盘的rect.dcl文件,注意路径 ...

恩啦 ,,谢谢
还有个问题就是img_rect要怎么修改才能显示出来 或者说加载我自己的图片
发表于 2015-3-18 10:06:34 | 显示全部楼层
xiangjinglai 发表于 2015-3-18 09:35
恩啦 ,,谢谢
还有个问题就是img_rect要怎么修改才能显示出来 或者说加载我自己的图片

这个需要制作幻灯片,调用SLD文件。我没做过,不懂这个领域的。关于dcl我也是一知半解的,没有太多的经验。请谅解。
 楼主| 发表于 2015-3-18 10:11:38 来自手机 | 显示全部楼层
newbuser 发表于 2015-3-18 10:06
这个需要制作幻灯片,调用SLD文件。我没做过,不懂这个领域的。关于dcl我也是一知半解的,没有太多的经验 ...

还是很感谢你 。。只能用SLD这个办法吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-22 04:24 , Processed in 0.157468 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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