Тема: DCL и COMMAND?
У меня есть DCL окно, в котором можно редактировать однострочный текст. И вопрос - как сделать мне при принажатии клавиши :button{label="<<"; key="b_height";}, чтобы DCL окно закрывалась, затем вызывалась фукция COMMAND, например (command "CHANGE").После того как COMMAND отработает вызвать опять DCL окно с измененными значениями TEXTа . Ниже представлен текст DCL и LSP файла.
еdit_text: dialog {label="Редактирование текста";
:edit_box{label="Текст:"; edit_width=55; value=""; key="p_text"; edit_limit=50;}
spacer_1;
:row{
:column{
:text{label="Высота";}
:text{label="Угол";}
:text{label="Степень сжатия";}
}
:column{
:edit_box{value=""; key="p_height"; edit_limit=3; width=40;}
:edit_box{value=""; key="p_rotation"; edit_limit=3; width=40;}
:edit_box{value=""; key="p_width_factor"; edit_limit=3; width=40;}
}
:column {
:button{label="<<"; key="b_height";}
:button{label="<<"; key="b_rotation";}
}
}
spacer_1;
ok_cancel;
}
(defun change_height ()
(command "CHANGE" "prim")
; (edit_text)
);defun change_height
(defun edit_text (/ id)
(if (<(setq dcl_id (load_dialog "D:\\primer\\edit_text.dcl")) 0) (exit))
(if (not(new_dialog "еdit_text" dcl_id)) (exit))
(set_tile "p_text" (cdr (assoc 1 (entget prim))))
(set_tile "p_height" (rtos (cdr (assoc 40 (entget prim)))))
(action_tile "b_height"
(strcat
"(done_dialog)"
;; "(unload_dialog dcl_id)"
;; "(princ)"
;; "(change_height)"
);strcat
);action_tile "b_height"
(set_tile "p_rotation" (rtos (/ (* (cdr (assoc 50 (entget prim))) 180) pi)))
;(action_tile "b_rotation" "(done_dialog)")
(set_tile "p_width_factor" (rtos (cdr (assoc 41 (entget prim)))))
;(action_tile "b_width_factor" "(done_dialog)")
(action_tile "accept"
(strcat
"(setq Ptext_izm (cons 1 (get_tile \"p_text\")))"
"(setq list_prim (subst Ptext_izm (assoc 1 (entget prim)) (entget prim)))"
"(entmod list_prim)"
"(setq Pheight_izm (cons 40 (atof (get_tile \"p_height\"))))"
"(setq list_prim (subst Pheight_izm (assoc 40 (entget prim)) (entget prim)))"
"(entmod list_prim)"
"(setq P_rotation_izm (atof (get_tile \"p_rotation\")))"
"(setq P_rotation_izm (cons 50 (/ (* P_rotation_izm pi) 180)))"
"(setq list_prim (subst P_rotation_izm (assoc 50 (entget prim)) (entget prim)))"
"(entmod list_prim)"
"(setq Pwidth_factor_izm (cons 41 (atof (get_tile \"p_width_factor\"))))"
"(setq list_prim (subst Pwidth_factor_izm (assoc 41 (entget prim)) (entget prim)))"
"(entmod list_prim)"
"(done_dialog)"
);strcat
);action_tile "accept"
(start_dialog)
(unload_dialog dcl_id)
(princ)
);defun edit_text