| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > установка начальных параметров в диалоговом окне (.dcl)

установка начальных параметров в диалоговом окне (.dcl)

Ответ
Поиск в этой теме
Непрочитано 03.08.2009, 00:57
установка начальных параметров в диалоговом окне (.dcl)
paradoxvaha
 
проектирование противооползневых сооружений
 
Yalta
Регистрация: 06.04.2007
Сообщений: 50

Доброй ночи! Подскажите пожалуйста что нужно прописать lisp-файле чтобы диалоговое окно, загружаемое этим файлом выглядело так как показано на рисунке (это касается только вкладки ВЫРАВНИВАНИЕ). То есть проблема в том, что при загрузке диалогового окна галочки напротив ВЫРАВНИВАНИЕ я не ставлю, но всё равно радио-кнопки ЛЕВЫЙ КРАЙ ЦЕНТР ПРАВЫЙ КРАЙ остаются активными. После того как я ставлю галочку ВЫРАВНИВАНИЕ (уже в саомом диалоговом окне, при работе программы) а потом её снова убираю, радио-кнопки ЛЕВЫЙ КРАЙ ЦЕНТР ПРАВЫЙ КРАЙ становятся неактиными... Что можно сделать чтобы они и при начальной загрузке были неактивными?

вот что у меня в lisp-файле написано

Код:
[Выделить все]
(action_tile "uchet_pdop" "(setq uchetpdop (get_tile \"uchet_pdop\"))
                       (if (= uchetpdop \"1\")
                           (mode_tile \"choice1\" 0)
                           (mode_tile \"choice1\" 1))")
Заранее благодарен.

Миниатюры
Нажмите на изображение для увеличения
Название: D091.gif
Просмотров: 246
Размер:	10.4 Кб
ID:	24294  

Просмотров: 7495
 
Непрочитано 30.03.2012, 09:00
#21
Pavel_GP

Инженер-гидрограф
 
Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170


Цитата:
Сообщение от Do$ Посмотреть сообщение
Не понял смысла этого пояснения.
Нужен весь код обработки диалога? Или уже есть какие-то наработки?
Все расчеты основного построения есть - все есть. У меня не получается в Lisp-коде прописать команды, которые отвечали за radio.
А именно при выборе в диалоге 1 радио-пункта, в лиспе работает одна функция (мною созданная), а при выборе в диалоге 2 радио-пункта, в лиспе работает другая функция.
Пример:
Код:
[Выделить все]
 test :dialog {label="Вычисление";
      :radio_row {label="Выбрать";
        : radio_button {label="Сложение"; key ="plus"; value="1";}
      : radio_button {label="Умножение"; key ="umn"; value="0";}
      }//end of radio_row
       :edit_box {label="Введите:"; key="t1";
 edit_width=12;}
 :edit_box {label="Введите:"; key="t2";
 edit_width=12;}
  :row {
  :ok_button {label="Создать";}
  :cancel_button {label="Отмена";}
  }//end of row
}//end of dialog 
Код:
[Выделить все]
 (defun c:test (/ t1 t2)
(setq dcl_id (load_dialog "test.dcl"))

  (if (not (new_dialog "test" dcl_id))
    (exit)
  )
  (action_tile "t1" "(setq t1 (atof $value))")
  (action_tile "t2" "(setq t2 (atof $value))")
   (start_dialog)            
  (unload_dialog dcl_id)        
  (princ)
  (if (= plus)
    (progn
      (setq sum (+ t1 t2))
      )
      (progn
    (setq proizv (* t1 t2))
    )
    )
  );end defun
Теперь куда и какую вставить команду отвечающую за radio
Pavel_GP вне форума  
 
Непрочитано 30.03.2012, 11:45
1 | #22
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Если по-быстрому, то можно так:
Код:
[Выделить все]
 test :dialog {label="Вычисление";
      :radio_row {label="Выбрать"; key="sign"; //добавил key
        : radio_button {label="Сложение"; key ="plus"; value="1";}
        : radio_button {label="Умножение"; key ="umn"; value="0";}
      }//end of radio_row
       :edit_box {label="Введите:"; key="t1";
 edit_width=12;}
 :edit_box {label="Введите:"; key="t2";
 edit_width=12;}
  :row {
  :ok_button {label="Создать";}
  :cancel_button {label="Отмена";}
  }//end of row
}//end of dialog

Код:
[Выделить все]
 
(defun c:test (/ t1 t2 dcl_id sign rez ddn)
  (if (< 0 (setq dcl_id (load_dialog "test.dcl")))
    (progn
      (if (new_dialog "test" dcl_id)
	(progn
	  (action_tile
	    "accept"
	    "(setq sign (get_tile \"sign\")) (done_dialog 1)"
	  ) ;_ end of action_tile
	  (action_tile "t1" "(setq t1 (atof $value))")
	  (action_tile "t2" "(setq t2 (atof $value))")
	  (setq ddn (start_dialog))
	) ;_ end of progn
      ) ;_ end of if
      (unload_dialog dcl_id)
      (if (= 1 ddn)
	(progn
	  (if (= sign "plus")
	    (progn
	      (setq rez (+ t1 t2))
	    ) ;_ end of progn
	    (progn
	      (setq rez (* t1 t2))
	    ) ;_ end of progn
	  ) ;_ end of if
	  (alert (strcat "Результат: " (vl-princ-to-string rez)))
	) ;_ end of progn
      ) ;_ end of if
    ) ;_ end of progn
  ) ;_ end of if
) ;_ end of defun
Do$ вне форума  
 
Непрочитано 30.03.2012, 14:09
#23
Pavel_GP

Инженер-гидрограф
 
Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170


спс за проделанную работу.
Вопрос 1. Возможно ли предоставить лисп-код в другом в виде, если не менять мою шапку до
(action_tile
"accept"
"(setq sign (get_tile \"sign\")) (done_dialog 1)"
) ;_ end of action_tile
Вопрос 2. За что отвечает эта команда (= 1 ddn), а именно цифра 1
Вопрос 3. Когда я выбираю "умножение", можете расписать, что происходит в лисп-коде (я так понимаю value меняются с 0 на 1 и sign становится = umn)
спс

Последний раз редактировалось Pavel_GP, 30.03.2012 в 14:54.
Pavel_GP вне форума  
 
Непрочитано 31.03.2012, 10:33
#24
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Pavel_GP Посмотреть сообщение
Вопрос 1. Возможно ли предоставить лисп-код в другом в виде, если не менять мою шапку до
(action_tile
"accept"
"(setq sign (get_tile \"sign\")) (done_dialog 1)"
) ;_ end of action_tile
Нельзя А если серьезно, то я только добавил проверку на загрузку диалога. Если он загрузился - происходят дальнейшие действия, а если не загрузился (не найден файл, файл поврежден), то работа программы прекращается без ошибок. Считаете это лишним - убирайте.
Цитата:
Сообщение от Pavel_GP Посмотреть сообщение
За что отвечает эта команда (= 1 ddn), а именно цифра 1
Если вкратце - то это проверка на то, что была нажата кнопка "Создать" а не "Отмена". Подробнее - смотрите описание функций done_dialog и start_dialog.
Цитата:
Сообщение от Pavel_GP Посмотреть сообщение
Вопрос 3. Когда я выбираю "умножение", можете расписать, что происходит в лисп-коде (я так понимаю value меняются с 0 на 1 и sign становится = umn)
value какого элемента диалога?
Выбираете умножение -> value элемента radio_row становится равным значению key выбранной радиокнопки, то есть строке "umn".
Do$ вне форума  
 
Непрочитано 02.04.2012, 12:50
#25
Pavel_GP

Инженер-гидрограф
 
Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170


Спс большое Do$.
Я тут сам протормозил=) бывает.
Я же привел пример, но сам делаю лисп другой. И у меня по примеру не робило. Я понял где ток сегодня=) . Два раза у меня использовался (action_tile
"accept"..........done_dialog).
Теперь все норм.

Последний раз редактировалось Pavel_GP, 02.04.2012 в 12:56.
Pavel_GP вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > установка начальных параметров в диалоговом окне (.dcl)

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема со шрифтом в диалоговом окне Autocad 2009 ait AutoCAD 1 25.12.2008 14:51
вопросики в диалоговом окне snk AutoCAD 3 15.03.2007 09:54
большие отступы в диалоговом окне Александер Программирование 12 05.06.2006 14:58