您的位置:首页 > 其它

AutoLISP对话框DCL按钮Button设计实例

2011-04-24 21:37 387 查看
AutoLISP对话框DCL按钮设计实例,绘制三种形式的图形,DCL对话框设计代码如下。

dia5b:dialog {
    label = "按钮测试" ;
    :boxed_row {
        label = "图形尺寸" ;
        :edit_box {
            edit_width = 8 ;
            key="kww";
            label = "宽度WW:" ;
        }
        :edit_box {
            edit_width = 8 ;
            key="khh";
            label = "高度HH:" ;
        }
    }
    :button {
        key = "bb1" ;
        label = "DIA5B1-L型" ;
    }
    :button {
        key = "bb2" ;
        label = "DIA5B2-X型" ;
    }
    :button {
        key = "bb3" ;
        label = "DIA5B3-漏斗型" ;
    }
    spacer_1;
    cancel_button;
}

LSP程序控制代码如下。

(defun c:dia5b ()
    (setvar "cmdecho" 0)
    (dcl_dia5b)
    (prin1)
)
(defun dcl_dia5b ()
    (setq dcl_id (load_dialog "dia5b"))
    (new_dialog "dia5b" dcl_id)
    (set_tile "kww" "50")
    (set_tile "khh" "50")
    (action_tile "bb1" "(get_ww_hh) (done_dialog 1)")
    (action_tile "bb2" "(get_ww_hh) (done_dialog 2)")
    (action_tile "bb3" "(get_ww_hh) (done_dialog 3)")
    (setq dd (start_dialog))
    (cond ((= dd 1) (c:dia5b1))
      ((= dd 2) (c:dia5b2))
      ((= dd 3) (c:dia5b3))
      (t (alert "未完成任何动作!!!"))
    )
)
(defun get_ww_hh ()
    (setq ww (atof (get_tile "kww")))
    (setq hh (atof (get_tile "khh")))
)
(defun c:dia5b1    ()
    (setvar "cmdecho" 0)
    (get_input_data)
    (command "pline" p1 p2 p3 pm34 pm pm14 "c")
    (prin1)
)
(defun c:dia5b2    ()
    (setvar "cmdecho" 0)
    (get_input_data)
    (command "pline" p1 p2 p3 p4 "c")
    (command "line" P1 P3 "")
    (command "line" p2 p4 "")
    (prin1)
)
(defun c:dia5b3    ()
    (setvar "cmdecho" 0)
    (get_input_data)
    (command "pline" p1 p2 p4 p3 "c")
    (prin1)
)
(defun get_input_data ()
    (setq p1 (getpoint "\n插入点:"))
    (setq p2 (polar p1 0 ww))
    (setq p3 (polar p2 (* pi 0.5) hh))
    (setq p4 (polar p3 pi ww))
    (setq pm (inters p1 p3 p2 p4))
    (setq pm12 (polar p1 0 (* ww 0.5)))
    (setq pm34 (polar p3 pi (* ww 0.5)))
    (setq pm23 (polar p2 (* pi 0.5) (* hh 0.5)))
    (setq pm14 (polar p1 (* pi 0.5) (* hh 0.5)))
)

代码完。

指甲长了打字很不舒服。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: