Детский вопрос по DCL :-)
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Детский вопрос по DCL :-)

Детский вопрос по DCL :-)

Ответ
Поиск в этой теме
Непрочитано 26.12.2005, 10:07 #1
Детский вопрос по DCL :-)
===AAA===
 
г. Норильск
Регистрация: 15.08.2005
Сообщений: 616

Всем привет!

Эта область для меня новая, подскажите, плиз, чуток.

Создал вот такое окно.
==============================
get_var_job_ibl : dialog {
label = "Задание параметров обработки блоков"; // Заголовок окна.
:spacer { width = 2; }
:radio_row { label = "Атрибуты обрабатываемых блоков"; key="b1";
:radio_button {label = "Сохранить"; key="b11"; value = "1";}
:radio_button {label = "Повторить"; key="b12"; value = "0";}
:radio_button {label = "Очистить"; key="b13"; value = "0";}
}
:spacer { width = 2; }
:radio_row {
// fixed_width = true;
alignment = centered;
label = "Что нужно заменить"; key="b2";
:radio_button {label = "Блоки"; key="b21"; value = "1";}
:radio_button {label = "Только Атрибуты"; key="b22"; value = "0";}
}
ok_cancel_help;
}
==============================

Не могу понять

1. Как прочитать из ЛИСП-программы состояние "радиоклавиш"
при выходе из окна.

2. Как сделать, чтобы блок "b2" был доступен только при выборе
кнопки "Повторить" в первом блоке.

Спасибо.
__________________
Счастливо, Алексей!
Просмотров: 3400
 
Автор темы   Непрочитано 26.12.2005, 10:31
#2
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


C 1-м уже разобрался, остался лишь 2-й вопрос...
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 26.12.2005, 10:44
#3
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от ===AAA===
C 1-м уже разобрался, остался лишь 2-й вопрос...
Попробуй

Код:
[Выделить все]
(defun do_it_1 ()
  (alert "Выбран \"b11\""))
(defun do_it_2 ()
  (alert "Выбран \"b12\""))
(defun do_it_3 ()
  (alert "Выбран \"b13\""))
(defun do_it_4 ()
  (alert "Выбран \"b2\""))
(defun do_it_5 ()
  (alert "Выбран \"b21\""))

  (defun run-dcl (/ idx val1 val2 val3 val4 val5)
  (setq idx (load_dialog "DWG-RU.dcl"))
  (if (not (new_dialog "get_var_job_ibl" idx))
    (exit)
  )
(action_tile "b11" "(setq val1 $key)")
  (action_tile "b12" "(setq val2 $key)")
    (action_tile "b13" "(setq val3 $key)")
      (action_tile "b2" "(setq val4 $key)")
	(action_tile "b21" "(setq val5 $key)")

  (action_tile
    "accept"
  (strcat "(progn"	    
       "(done_dialog)"
	    "(setq userclick T))"
))

  (action_tile "cancel"
    (strcat "(progn"
		"(done_dialog)"
		  "(setq userclick nil))"))
  (start_dialog)
  (unload_dialog idx)
  (list val1 val2 val3 val4 val5)
  )

(defun C:test ()
  (setvar "cmdecho" 0)
  (setq ret_list (run-dcl))
  (foreach itm (vl-remove-if 'not ret_list)
    (cond ((eq itm "b11")(do_it_1))
	  ((eq itm "b12")(do_it_2))
	  ((eq itm "b13")(do_it_3))
	  ((eq itm "b2")(do_it_4))
	  ((eq itm "b21")(do_it_5))
	  ))
  (setvar "cmdecho" 1)
  (princ)
  )
~'J'~
fixo вне форума  
 
Непрочитано 26.12.2005, 11:26
#4
Jurasic


 
Регистрация: 10.01.2005
Москва
Сообщений: 89
<phrase 1=


Думаю надо чуть-чуть добавить в код Fatty:
DCL (назвать DWG-RU.dcl):
Код:
[Выделить все]
get_var_job_ibl : dialog { 
label = "Задание параметров обработки блоков"; // Заголовок окна. 
:spacer { width = 2; } 
:radio_row { label = "Атрибуты обрабатываемых блоков"; key="b1"; 
:radio_button {label = "Сохранить"; key="b11"; value = "1";} 
:radio_button {label = "Повторить"; key="b12"; value = "0";} 
:radio_button {label = "Очистить"; key="b13"; value = "0";} 
} 
:spacer { width = 2; } 
:radio_row { 
// fixed_width = true; 
alignment = centered; 
label = "Что нужно заменить"; key="b2"; 
:radio_button {label = "Блоки"; key="b21"; value = "1"; is_enabled = "0";} 
:radio_button {label = "Только Атрибуты"; key="b22"; value = "0"; is_enabled = "0";} 
} 
ok_cancel_help; 
}
LSP
Код:
[Выделить все]
(defun CHANGE ()
  (setq *vkl_vykl* (atoi (get_tile "b12")))
  (if (= *vkl_vykl* 1)
    (progn
      (mode_tile "b21" 0)
      (mode_tile "b22" 0)
    )
    (progn
      (mode_tile "b21" 1)
      (mode_tile "b22" 1)
    )
  )
)

(defun do_it_1 ()
  (alert "Выбран \"b11\"")
)
(defun do_it_2 ()
  (alert "Выбран \"b12\"")
)
(defun do_it_3 ()
  (alert "Выбран \"b13\"")
)
(defun do_it_4 ()
  (alert "Выбран \"b2\"")
)
(defun do_it_5 ()
  (alert "Выбран \"b21\"")
)

(defun run-dcl (/ idx val1 val2 val3 val4 val5)
  (setq idx (load_dialog "DWG-RU.dcl"))
  (if (not (new_dialog "get_var_job_ibl" idx))
    (exit)
  )

  (action_tile "b11" (strcat "(setq val1 $key)" "(CHANGE)"))

  (action_tile "b12" (strcat "(setq val2 $key)" "(CHANGE)"))

  (action_tile "b13" (strcat "(setq val3 $key)" "(CHANGE)"))

  (action_tile "b2" "(setq val4 $key)")
  (action_tile "b21" "(setq val5 $key)")

  (action_tile
    "accept"
    (strcat "(progn"
	    "(done_dialog)"
	    "(setq userclick T))"
    )
  )

  (action_tile
    "cancel"
    (strcat "(progn"
	    "(done_dialog)"
	    "(setq userclick nil))"
    )
  )
  (start_dialog)
  (unload_dialog idx)
  (list val1 val2 val3 val4 val5)
)


(defun C:test ()
  (setvar "cmdecho" 0)
  (setq ret_list (run-dcl))
  (foreach itm (vl-remove-if 'not ret_list)
    (cond ((eq itm "b11") (do_it_1))
	  ((eq itm "b12") (do_it_2))
	  ((eq itm "b13") (do_it_3))
	  ((eq itm "b2") (do_it_4))
	  ((eq itm "b21") (do_it_5))
    )
  )
  (setvar "cmdecho" 1)
  (princ)
)
Jurasic вне форума  
 
Автор темы   Непрочитано 26.12.2005, 11:26
#5
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


Спасибочки!

Правда, уже сам собрал "альтернативную" конструкцию, без
дополнительных (defun ...) А оно всегда так - бьешься, бьешся,
а как напишешь "Хелп!", так сразу мысль идет. :-)

Выглядит это так:
======================================
Загрузка, проверка...
--------------------------
(mode_tile "b2" 1)
(action_tile "b11"
(strcat
"(mode_tile \"b2\" (atoi $value) )" "(setq p0 1)"
))
(action_tile "b12"
(strcat
"(mode_tile \"b2\" (- 1 (atoi $value)) )" "(setq p0 2)"
))
(action_tile "b13"
(strcat
"(mode_tile \"b2\" (atoi $value) )" "(setq p0 3)"
))
(action_tile "b21" "(setq p1 1)")
(action_tile "b22" "(setq p1 2)")
(setq i (start_dialog)) ;Выполнить диалоговое окно.
======================================

Вроде все работает, как надо, но если где "накосячил" или
не учел чего (это дело для меня новое) - поправьте, плиз.

Успехов, Алексей.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 26.12.2005, 11:31
#6
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от Jurasic
Думаю надо чуть-чуть добавить в код Fatty:
DCL (назвать DWG-RU.dcl):
И очень мудро

~'J'~
fixo вне форума  
 
Непрочитано 26.12.2005, 11:40
#7
Jurasic


 
Регистрация: 10.01.2005
Москва
Сообщений: 89
<phrase 1=


Fatty
Цитата:
И очень мудро
Перечитал три раза и так и не понял - то ли похвалил,
то ли подколол!!
Jurasic вне форума  
 
Непрочитано 26.12.2005, 12:59
#8
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от Jurasic
Fatty
Цитата:
И очень мудро
Перечитал три раза и так и не понял - то ли похвалил,
то ли подколол!!
Конечно похвалил, я человек без многоточий

~'J'~
fixo вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Детский вопрос по DCL :-)