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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > DCL: обновление поля

DCL: обновление поля

Ответ
Поиск в этой теме
Непрочитано 18.07.2022, 13:22 #1
DCL: обновление поля
Sege
 
Санкт-Петебург
Регистрация: 05.07.2007
Сообщений: 103

Есть простая задача: существует диалог DCL, в поле "newinf" которого вводится значание:
- либо вручную, указанным пользователем с клавиатуры
- либо берется из чертежа путем указания пользователем на нужный примитив *TEXT и после указания значения возвращается в диалог, где поле "newinf" обновляется на полученное значение

Не могу понять почему диалог вызывает зависание AutoCad

Код:
[Выделить все]
 (defun c:txt_info(/ dcl_id)
(setq dcl_id (load_dialog "txt_info.dcl"))
(if (new_dialog "txt_info" dcl_id)
(progn
(action_tile "ukaz_txt" "(setq ukaz_txt 1)")
(if (= ukaz_txt 1) ; если выбрана опция указания текста
(progn
(setq nabor (ssget '((0 . "*TEXT"))))
(setq txt (cdr (assoc 1 (entget (ssname nabor 0)))))
(set_tile "newinf" txt)
))
(action_tile "newinf" "(setq newinf $value)");иначе ручной ввод текстового значения
(start_dialog)
(unload_dialog dcl_id)
)
)
)
Ну и сам DCL

Код:
[Выделить все]
 txt_info: dialog {
label = "Enter text" ; 

: edit_box {
key = "newinf" ; 
label = "»нформаци¤:" ; 
allow_accept = true ; 
fixed_width = true ; 
width = 40;
} 

:button{
label="”казать текст на чертеже";
key="ukaz_txt";
}

ok_cancel ; 
}

Вложения
Тип файла: zip txt_info.zip (728 байт, 4 просмотров)


Последний раз редактировалось Sege, 18.07.2022 в 13:40.
Просмотров: 1728
 
Непрочитано 18.07.2022, 13:42
1 | #2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Попробуй найти на форуме "САПР на базе AutoCAD - как это делается", там рассматривался вопрос с диалогами такого уровня. Сейчас много работы, код писать не могу.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.07.2022, 13:23
1 | #3
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Цитата:
Сообщение от Sege Посмотреть сообщение
почему диалог вызывает зависание AutoCad
всё неправильно потому что)
Код:
[Выделить все]
 (defun c:txt_info (/ dcl_id)
	(setq dcl_id (load_dialog "txt_info.dcl")
		  loop_dialog t
		  string (if (null string) "Введите строку" string)
	)
	(while loop_dialog
		(if (new_dialog "txt_info" dcl_id)
			(progn
				(set_tile "newinf" string)
				(action_tile "ukaz_txt" "(done_dialog 2)")
				(action_tile "newinf" "(if (and (/= \"\" (setq string $value))
												(= 1 $reason)
										   )
										  		(progn
													(setq string (get_tile \"newinf\"))
													(done_dialog 1)
										   		)
									   )
									  "
				)
				(setq dialog_result (start_dialog))
				(cond
					(
						(= 2 dialog_result)
							(setq string (cdr (assoc 1 (entget (car (entsel "\nВыберите текст: "))))))
					)
					(
						t
							(setq loop_dialog nil) 
					)
				)
			)
		)
	)
	(unload_dialog dcl_id)
	(print string)
	(princ)
)
koMon вне форума  
 
Автор темы   Непрочитано 20.07.2022, 13:11
#4
Sege


 
Регистрация: 05.07.2007
Санкт-Петебург
Сообщений: 103


Огромное спасибо! =)
Sege вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > DCL: обновление поля

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Создание поля (field), ссылающегося на текстовое значение ячейки таблицы. skkkk Готовые программы 141 24.11.2023 15:49
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
Почему не происходит обновление поля атрибута после изменения параметра вхождения блока? Mr_dd Динамические блоки 0 03.04.2020 02:45
Программное обновление поля sdv79 Программирование 13 09.05.2012 23:06
Обновление поля в атрибуте при редактировании дин. блока молодой человек AutoCAD 5 10.11.2008 14:12