明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 683|回复: 3

[讨论] 关于对话框设计问题

[复制链接]
发表于 2015-10-22 21:11 | 显示全部楼层 |阅读模式
最近在学习dcl对话框设计,有些问题一直困惑,以吴永进老是书中源程序为例,希望热心的前辈们帮忙答疑解惑
1.运行lisp程序后对话框窗口是无法预览幻灯片的,以L型为例,如何实现动态预览幻灯片,即随着参数hh,ww的改变,预览窗口中幻灯片图形大小会随之改变
2.对程序做改进,使参数“高度hh”的值等于“宽度ww”的值,即当用户在对话框输入ww值后,高度hh同步更新为ww的值
3.在对话框底部增加一行文字“L型宽度ww=xx”其中xx为用户输入的数值
恳请各位前辈指点迷津
***********************以下为dcl对话框设计程序***********************
dia8a:dialog{
                label="柱配筋程序";
                :row{
                        :boxed_radio_column{
                                                label="设计样式";
                                                :radio_button{label="L基本型";key="rb1";}
                                                :radio_button{label="L+圆形";key="rb2";}
                                                :radio_button{label="L+双圆形";key="rb3";}
                                                :radio_button{label="L+圆形";key="rb4";}
                                            }
                        :image{
                                key="kimage";
                                color=-2;
                                width=30;
                                aspect_ratio=0.66;
                               }
                     }
                     :row{
                                :edit_box{label="宽度ww";key="kww";}
                                :edit_box{label="高度hh";key="khh";}
                          }
                        spacer_1;
                        ok_cancel;
}

***********************以下为lisp程序***********************
(defun c:dia8a()
        (setvar "cmdecho" 0)
        (dcl_dia8a)
        (prin1)
)
(defun dcl_dia8a()
        (setq dcl_id (load_dialog "dia8a"))
        (new_dialog "dia8a" dcl_id)
        (sub_rb1)
        (set_title "rb1" "1")
        (set_title "kww" "100")
        (set_title "khh" "100")
        (action_title "rb1" "(sub_rb1)")
        (action_title "rb2" "(sub_rb2)")
        (action_title "rb3" "(sub_rb3)")
        (action_title "rb4" "(sub_rb4)")
        (action_title "accept" "(ok_dia8a) (done_dialog 1)")
        (setq dd(start_dialog))
        (if (= dd 1) (draw_dia8a))
)
(defun sub_rb1()
        (setq ddtype 1)
        (show_sld "kimage"  "dia8a1")
)
(defun sub_rb2()
        (setq ddtype 2)
        (show_sld "kimage"  "dia8a2")
)
(defun sub_rb3()
        (setq ddtype 3)
        (show_sld "kimage"  "dia8a3")
)
(defun sub_rb4()
        (setq ddtype 4)
        (show_sld "kimage"  "dia8a4")
)
(defun show_sld(key sld)
        (setq x (dimx_tile key))
        (setq y (dimy_tile key))
        (start_image key)
        (fill_image 0 0 x y -2)
        (slide_image 0 0 x y sld)
        (end_image)
)
(defun ok_dia8a()
        (setq ww (atof (get_tile "kww")))
        (setq hh (atof (get_tile "khh")))
)
(defun draw_dia8a()
        (setq pt1 (getpoint "左下角基准点:"))
        (setq pt2 (polar pt1 0 ww))
        (setq pt3 (polar pt2 (/ pi 2) hh))
        (setq pt4 (polar pt3 pi (* ww 0.5)))
        (setq pt5 (polar pt4 (* pi 1.5) (* hh 0.5)))
        (setq pt6 (polar pt5 pi (* ww 0.5)))
        (cond ((= ddtype 1) (command "pline" pt1 pt2 pt3 pt4 pt5 pt6 "C"))
                ((= ddtype 2) (command "pline" pt6 pt1 pt2 pt3 pt4 "C")
                                (command "circle" "2p" pt4 pt6))
                ((= ddtype 3) (command "pline" pt1 pt2 pt3 "")
                                (command "pline" pt4 pt5 pt6 "")
                                (command "circle" "2p" pt3 pt4)
                                (command "circle" "2p" pt6 pt1))
                ((= ddtype 4) (command "pline" pt1 pt2 pt3 pt4 "a" "a" -180 pt6 "L" "C"))
        )

)

点评

代码中的tile均输入错误  发表于 2015-10-23 09:18
发表于 2015-10-23 09:17 | 显示全部楼层
原程序只是在用户选择后显示固定的幻灯片。如果想要图形随输入的尺寸而变化,需要编程根据尺寸的长宽比例动态画出来。要使用函数VECTOR_IMAGE函数在控件上画向量。
 楼主| 发表于 2015-10-24 19:21 | 显示全部楼层
谢谢指点,看来还有很多要学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-25 03:23 , Processed in 0.235028 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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