明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4562|回复: 11

Autolisp和DCL结合是这样的吗,怎么出不来呢

  [复制链接]
发表于 2012-5-20 23:08:52 | 显示全部楼层 |阅读模式
DCL程序:
  1. box:dialog{label="瓦楞纸箱设计";
  2. :row{
  3. :boxed_column{
  4. label="请选择箱型:";
  5.    :row{
  6.       :radio_button{label="02型";value="1";key="rb1";}
  7.       :popup_list{key="pop2";edit_width=8;list="0201\n0202\n0203\n0204\n";}
  8. }
  9.    :row{
  10.       :radio_button{label="03型";key="rb2";}
  11.       :popup_list{key="pop3";edit_width=8;list="0301\n0302\n0303\n0304\n";}
  12. }
  13.    :row{
  14.       :radio_button{label="04型";key="rb3";}
  15.       :popup_list{key="pop4";edit_width=8;list="0401\n0402\n0403\n0404\n";}
  16. }
  17. }
  18. :boxed_column{
  19. label="请输入纸箱尺寸:";
  20.    :row{
  21.       :radio_button{label="内尺寸";key="rb4";}
  22.       :edit_box{label="长(L)";key="edit_l";edit_width=10;value="0";}
  23.       :text{label="mm";}
  24. }
  25.    :row{
  26.       :radio_button{label="外尺寸";key="rb5";}
  27.       :edit_box{label="宽(B)";key="edit_b";edit_width=10;value="0";}
  28.       :text{label="mm";}
  29. }
  30.    :row{
  31.       :radio_button{label="制造尺寸";value="1";key="rb6";}
  32.       :edit_box{label="高(H)";key="edit_h";edit_width=10;value="0";}
  33.       :text{label="mm";}
  34. }
  35. }
  36. }
  37. :row{
  38. :boxed_column{label="瓦楞纸箱信息:";
  39.    :row{
  40.       :text{label="瓦楞数量:";}
  41.       :radio_button{label="单瓦楞纸";value="1";key="rb7";}
  42.       :radio_button{label="双瓦楞纸";key="rb8";}
  43. }
  44.    :row{
  45.       :text{label="楞型:";}
  46.       :toggle{label="楞型A";value="1";}
  47.       :toggle{label="楞型B";value="0";}
  48. }
  49.    :row{
  50.       :toggle{label="楞型C";value="0";}
  51.       :toggle{label="楞型D";value="0";}
  52. }
  53.    :row{  
  54.       :edit_box{label="修正系数:";key="edit_x";edit_width=10;value="0";}  
  55.       :text{label="mm";}
  56. }
  57.    :row{
  58.       :edit_box{label="纸板厚度:";key="edit_z";edit_width=10;value="4.75";}
  59.       :text{label="mm(4.5-5mm)";}
  60. }
  61.    :row{
  62.       :edit_box{label="接头长度:";key="edit_j";edit_width=10;value="0";}
  63.       :text{label="mm";}
  64. }
  65. }
  66. :boxed_column{label="纸箱预览:";
  67.    :image{width=10;
  68.           height=10;
  69.           key="kimage";
  70.           color=-2;}
  71.    :row{
  72.      :text{label="设计者:小妖";}
  73.      :text{label="2012.05.20";}
  74.        }
  75.             }
  76. }  
  77. spacer_1;
  78. ok_cancel;   
  79. }
画图程序:
  1. (defun c:box0200()           ;0200型主程序
  2.    (setvar "cmdecho" 0)      ;关闭命令回显
  3.    (setq oldos (getvar "osmode"))   ;保存原有捕捉设置
  4.    (setvar "osmode" 0)           ;关掉捕捉
  5.    (get_input_data1)      ;调用子程序
  6.    (command "pline" p1 p6 p23 p22 p8 p9 p21 p20 p10 p11 p19 p18 p12 p13 p17 p16 p14 p15 "c")
  7.    (command "line" p2 p14 "")
  8.    (command "line" p3 p13 "")
  9.    (command "line" p4 p10 "")
  10.    (command "line" p5 p9 "")
  11.    (command "line" p7 p14 "")
  12.    (command "line" p1 p15 "")
  13.    (setvar "osmode" oldos)
  14.    (setvar "osmode" oldos)     ;还原捕捉
  15.    (setvar "cmdecho" 1)
  16.    (princ)
  17. )
  18. (defun c:box0201()           ;0201型主程序
  19.    (setvar "cmdecho" 0)      ;关闭命令回显
  20.    (setq oldos (getvar "osmode"))  ;保存原有捕捉设置
  21.    (setvar "osmode" 0)      ;关掉捕捉
  22.    (get_input_data1)      ;调用子程序
  23.    (command "pline" p1 p6 p23 p22 p8 p9 p21 p20 p10 p11 p19 p18 p12 p13 p17 p16 p14 p15 "c")
  24.    (command "pline" p24 p25 p3 p32 p26 p27 p33 p4 p28 p29 p5 p34 p30 p31 "c")
  25.    (command "line" p32 p12 "")
  26.    (command "line" p4 p10 "")
  27.    (command "line" p34 p8 "")
  28.    (command "line" p7 p14 "")
  29.    (command "line" p1 p15 "")
  30.    (command "line" p14 p24 "")
  31.    (command "line" p6 p31 "")
  32.    (setvar "osmode" oldos)   ;还原捕捉
  33.    (setvar "cmdecho" 1)
  34.    (princ)
  35. )
  36. (defun get_input_data1()
  37.    (setq l (getreal "长度L:"))
  38.    (setq b (getreal "\n宽度B:"))
  39.    (setq h (getreal "\n高度H:"))
  40.    (setq k (getreal "修正系数:"))
  41.    (setq m (getreal "纸板厚度:"))
  42.    (setq f (getreal "接头长度:"))
  43.    (setq p1 (getpoint "\n插入点:"))
  44.    (setq p2 (polar p1 0 f))
  45.    (setq p3 (polar p2 0 l))
  46.    (setq p4 (polar p3 0 b))
  47.    (setq p5 (polar p4 0 l))
  48.    (setq p6 (polar p5 0 b))
  49.    (setq p7 (polar p6 (- 0 (/ pi 2)) h))
  50.    (setq p8 (polar p7 pi (- b m)))
  51.    (setq p9 (polar p8 pi m))
  52.    (setq p10 (polar p9 pi l))
  53.    (setq p11 (polar p10 pi m))
  54.    (setq p12 (polar p11 pi (- b (* 2 m))))
  55.    (setq p13 (polar p12 pi m))
  56.    (setq p14 (polar p13 pi l))
  57.    (setq p15 (polar p14 pi f))
  58.    (setq p16 (polar p14 (- 0 (/ pi 2)) (/ b 2)))
  59.    (setq p17 (polar p16 0 l))
  60.    (setq p18 (polar p17 0 m))
  61.    (setq p19 (polar p18 0 (- b (* 2 m))))
  62.    (setq p20 (polar p19 0 m))
  63.    (setq p21 (polar p20 0 l))
  64.    (setq p22 (polar p21 0 m))
  65.    (setq p23 (polar p22 0 b))
  66.    (setq p24 (polar p2 (/ pi 2) (/ b 2)))
  67.    (setq p25 (polar p24 0 (- l m)))
  68.    (setq p26 (polar p25 0 m))
  69.    (setq p27 (polar p26 0 (- b m)))
  70.    (setq p28 (polar p27 0 m))
  71.    (setq p29 (polar p28 0 (- l m)))
  72.    (setq p30 (polar p29 0 m))
  73.    (setq p31 (polar p30 0 b))
  74.    (setq p32 (polar p26 (- 0 (/ pi 2)) (/ b 2)))
  75.    (setq p33 (polar p32 0 (- b m)))
  76.    (setq p34 (polar p5 0 m))
  77. )
  78.   
  79. 两者结合:
  80. (defun c:box()
  81.     (setvar "cmdecho" 0)  ;防止命令执行的过程显示
  82.     (dcl_box)             ;调用dcl_box子程序
  83.     (prinl)        ;防止nil
  84. )
  85. (defun dcl_box()
  86.    (setq dcl_id(load_dialog "box"))    ;载入DCL文件
  87.    (new_dialog "box" dcl_id)   ;启动新的dialog对话框box
  88.    (action_tile "rb1" "setq rb1\"1\"(setq rb2\"\0")(setq rb3\"\0")(mode)")
  89.    (action_tile "rb2" "setq rb2\"1\"(setq rb1\"\0")(setq rb3\"\0")(mode)")
  90.    (action_tile "rb3" "setq rb1\"1\"(setq rb1\"\0")(setq rb2\"\0")(mode)")
  91.    (action_tile "rb4" "setq rb4\"1\"(setq rb5\"\0")(set6 rb6\"\0")(mode)")
  92.    (action_tile "rb5" "setq rb5\"1\"(setq rb4\"\0")(setq rb6\"\0")(mode)")
  93.    (action_tile "rb6" "setq rb4\"1\"(setq rb5\"\0")(setq rb3\"\0")(mode)")
  94.    (setq n(get_tile "pop2"))
  95.    (action_tile "accept" "(ok_box)(done_dialog 1)")
  96.    (action_tile "cancel" "(done_dialog 0)")
  97.    (start_dialog)              ;将控制权交给DCL
  98.    (cond ((= n 0)(c:box0200))
  99.          ((= n 1)(c:box0201))
  100.          (t (alert "未完成任何动作!!!"))
  101. )
  102. )
  103. (defun mode()
  104.    (cond
  105.       ((=rb1"1")
  106.          (mode_tile "pop2" 0)
  107.          (mode_tile "pop3" 1)
  108.          (mode_tile "pop4" 1)
  109.       )
  110.       ((=rb2"1")
  111.          (mode_tile "pop2" 1)
  112.          (mode_tile "pop3" 0)
  113.          (mode_tile "pop4" 1)
  114.       )
  115.       ((=rb3"1")
  116.          (mode_tile "pop2" 1)
  117.          (mode_tile "pop3" 1)
  118.          (mode_tile "pop4" 0)
  119.       )
  120.       ((=rb6"1")
  121.          (mode_tile "edit_x" 1)
  122.          (mode_tile "edit_z" 0)
  123.          (mode_tile "edit_j" 0)
  124.       )
  125.    )
  126. )
  127. (dufun ok_box()
  128.    (setvar "l" (atof (get_tile "edit_l")))
  129.    (setvar "b" (atof (get_tile "edit_b")))
  130.    (setvar "h" (atof (get_tile "edit_h")))
  131.    (setvar "k" (atof (get_tile "edit_x")))
  132.    (setvar "m" (atof (get_tile "edit_z")))
  133.    (setvar "f" (atof (get_tile "edit_j")))
  134. )
  135. (defun c:box0200()           ;0200型主程序
  136.    (setvar "cmdecho" 0)      ;关闭命令回显
  137.    (setq oldos (getvar "osmode"))   ;保存原有捕捉设置
  138.    (setvar "osmode" 0)           ;关掉捕捉
  139.    (get_input_data1)      ;调用子程序
  140.    (command "pline" p1 p6 p23 p22 p8 p9 p21 p20 p10 p11 p19 p18 p12 p13 p17 p16 p14 p15 "c")
  141.    (command "line" p2 p14 "")
  142.    (command "line" p3 p13 "")
  143.    (command "line" p4 p10 "")
  144.    (command "line" p5 p9 "")
  145.    (command "line" p7 p14 "")
  146.    (command "line" p1 p15 "")
  147.    (setvar "osmode" oldos)
  148.    (setvar "osmode" oldos)     ;还原捕捉
  149.    (setvar "cmdecho" 1)
  150.    (princ)
  151. )
  152. (defun c:box0201()           ;0201型主程序
  153.    (setvar "cmdecho" 0)      ;关闭命令回显
  154.    (setq oldos (getvar "osmode"))  ;保存原有捕捉设置
  155.    (setvar "osmode" 0)      ;关掉捕捉
  156.    (get_input_data1)      ;调用子程序
  157.    (command "pline" p1 p6 p23 p22 p8 p9 p21 p20 p10 p11 p19 p18 p12 p13 p17 p16 p14 p15 "c")
  158.    (command "pline" p24 p25 p3 p32 p26 p27 p33 p4 p28 p29 p5 p34 p30 p31 "c")
  159.    (command "line" p32 p12 "")
  160.    (command "line" p4 p10 "")
  161.    (command "line" p34 p8 "")
  162.    (command "line" p7 p14 "")
  163.    (command "line" p1 p15 "")
  164.    (command "line" p14 p24 "")
  165.    (command "line" p6 p31 "")
  166.    (setvar "osmode" oldos)   ;还原捕捉
  167.    (setvar "cmdecho" 1)
  168.    (princ)
  169. )
  170. (defun get_input_data1()
  171.    ;(setq l (getreal "长度L:"))
  172.    ;(setq b (getreal "\n宽度B:"))
  173.    ;(setq h (getreal "\n高度H:"))
  174.    ;(setq k (getreal "修正系数:"))
  175.    ;(setq m (getreal "纸板厚度:"))
  176.    ;(setq f (getreal "接头长度:"))
  177.    (setq p1 (getpoint "\n插入点:"))
  178.    (setq p2 (polar p1 0 f))
  179.    (setq p3 (polar p2 0 l))
  180.    (setq p4 (polar p3 0 b))
  181.    (setq p5 (polar p4 0 l))
  182.    (setq p6 (polar p5 0 b))
  183.    (setq p7 (polar p6 (- 0 (/ pi 2)) h))
  184.    (setq p8 (polar p7 pi (- b m)))
  185.    (setq p9 (polar p8 pi m))
  186.    (setq p10 (polar p9 pi l))
  187.    (setq p11 (polar p10 pi m))
  188.    (setq p12 (polar p11 pi (- b (* 2 m))))
  189.    (setq p13 (polar p12 pi m))
  190.    (setq p14 (polar p13 pi l))
  191.    (setq p15 (polar p14 pi f))
  192.    (setq p16 (polar p14 (- 0 (/ pi 2)) (/ b 2)))
  193.    (setq p17 (polar p16 0 l))
  194.    (setq p18 (polar p17 0 m))
  195.    (setq p19 (polar p18 0 (- b (* 2 m))))
  196.    (setq p20 (polar p19 0 m))
  197.    (setq p21 (polar p20 0 l))
  198.    (setq p22 (polar p21 0 m))
  199.    (setq p23 (polar p22 0 b))
  200.    (setq p24 (polar p2 (/ pi 2) (/ b 2)))
  201.    (setq p25 (polar p24 0 (- l m)))
  202.    (setq p26 (polar p25 0 m))
  203.    (setq p27 (polar p26 0 (- b m)))
  204.    (setq p28 (polar p27 0 m))
  205.    (setq p29 (polar p28 0 (- l m)))
  206.    (setq p30 (polar p29 0 m))
  207.    (setq p31 (polar p30 0 b))
  208.    (setq p32 (polar p26 (- 0 (/ pi 2)) (/ b 2)))
  209.    (setq p33 (polar p32 0 (- b m)))
  210.    (setq p34 (polar p5 0 m))
  211. )
  
进入VisualLISP编辑器后发现字母的颜色不对,知道错了,但进去调试好像也没什么反应,不知道该怎么改过来。。。



该贴已经同步到 L。小妖。的微博
发表于 2012-5-21 07:32:42 | 显示全部楼层
你的程序要好好整理一下,变量和数值之间连个空格都没有,还有(action_tile "rb4" "setq rb4\"1\"(setq rb5\"\0")(set6 rb6\"\0")(mode)")
set6是什么函数?dufun是什么函数?还有对"l"进行系统变量设定?
自定义函数box和系统内部的box重名。妈呀,错误太多了,看不下去了。最好买本好一点的书学习,外面的垃圾程序太多了。
 楼主| 发表于 2012-5-21 09:50:28 | 显示全部楼层
cabinsummer 发表于 2012-5-21 07:32
你的程序要好好整理一下,变量和数值之间连个空格都没有,还有(action_tile "rb4" "setq rb4\"1\"(setq rb5 ...

把你说的改了一下。。好像还是有很多错误的样子。。。我买了本实例教程好像到不了了[em0]。。我做的这个东西是有时间限制的~
发表于 2012-5-21 12:55:50 | 显示全部楼层
程序太稀烂了,可读性太差了。应该对数据集中处理。
 楼主| 发表于 2012-5-21 20:54:49 | 显示全部楼层
hvac_wh 发表于 2012-5-21 12:55
程序太稀烂了,可读性太差了。应该对数据集中处理。

那你能看得懂么。。我不太会处理。。。
发表于 2012-5-21 20:55:05 | 显示全部楼层
本帖最后由 NetBee 于 2012-5-21 20:56 编辑

尽量少用command,多用entmake
非得用记得关捕捉。当然,用完记得开恢复捕捉。不然。。。。会被骂嘀。。。

 楼主| 发表于 2012-5-22 08:45:08 | 显示全部楼层
NetBee 发表于 2012-5-21 20:55
尽量少用command,多用entmake
非得用记得关捕捉。当然,用完记得开恢复捕捉。不然。。。。会被骂嘀。。。 ...

哦,这样啊。。。那你看看我那前两个程序怎么结合在一起哪~可以写下来么
发表于 2012-5-22 16:03:22 | 显示全部楼层
L。小妖。 发表于 2012-5-21 20:54
那你能看得懂么。。我不太会处理。。。

程序做死了,应该采用数据文件,这样可以对纸箱尺寸进行文本添加。程序启动时,读取数据文件,将值设定成表的型式。然后将表添加到popup_list中,另外纸箱预览,只需设定纸箱形状,不需要将纸箱尺寸精确到尺寸,可考虑采用幻灯的形式(用cad绘制不同形状的纸箱形式,制作成幻灯片,使每个不同的纸箱形式对应于不同的幻灯),这样做的目的可以让程序减少很多。另外,纸箱绘制可以使用CAD命令根据设定的尺寸数据进行绘制。这样做你可以减少很多工作量,也便于对数据进行修改。
发表于 2012-5-22 19:49:01 | 显示全部楼层
高手飘过~~
发表于 2012-5-23 21:16:10 | 显示全部楼层
高手给解决一下呗,帮帮人家小妖... ...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-25 19:09 , Processed in 0.217037 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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