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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Помогите решить задачу редактирования размеров или подскажите пути решения.

Помогите решить задачу редактирования размеров или подскажите пути решения.

Ответ
Поиск в этой теме
Непрочитано 29.01.2013, 10:33 #1
Помогите решить задачу редактирования размеров или подскажите пути решения.
Jonas
 
конструктор машиностроитель
 
Новосибирск
Регистрация: 14.05.2007
Сообщений: 893

Ситуация следующая:
- имею чертежи стандартных или часто-повторяющихся изделий,
- вставляю файл чертежа блоком - взрываю - удаляю блок,
- в чертеже есть исходный (или базовый) размер,
- размеры зависящие от исходного проставлены со значением как L(исходный) + 12 (22; 6 и т.д.),
- далее редактирую тексты зависящих размеров.

Так вот, одолела рутина, хочу чтобы при вставке был запрос "Введите исходный размер" и после ввода все зависящие размеры, волшебным образом, отредактировались.

С уважением Ионас.
__________________
Из честолюбия или чувства долга не может родиться ни чего ценного. А. Эйнштейн

Последний раз редактировалось Jonas, 29.01.2013 в 13:56.
Просмотров: 5009
 
Непрочитано 29.01.2013, 10:56
#2
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Поля формулы со ссылкой на некий аттрибут L прописанный где-либо (листе, документе, подшивке и пр).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 29.01.2013, 11:55
#3
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Jonas, выложили бы чертеж, с примером, что есть и что надо
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 29.01.2013, 12:33
#4
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Вот часть чертежа.
Вложения
Тип файла: dwg
DWG 2010
ось.dwg (124.4 Кб, 2139 просмотров)
__________________
Из честолюбия или чувства долга не может родиться ни чего ценного. А. Эйнштейн
Jonas вне форума  
 
Непрочитано 29.01.2013, 12:57
#5
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Jonas Посмотреть сообщение
хочу чтобы при вставке был запрос "Введите исходный размер" и после ввода все зависящие размеры, волшебным образом, отредактировались.
Т.е. ты хочешь, чтобы в твоём тексте вместо буквы "L" автоматом везде подставилось то значение, которое ты укажешь в ответ на обозначенный тобою выше запрос? Если "да", то чем не устроила команда _.FIND?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 29.01.2013 в 13:07.
hwd вне форума  
 
Автор темы   Непрочитано 29.01.2013, 13:11
#6
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Цитата:
Сообщение от hwd Посмотреть сообщение
Т.е. ты хочешь, чтобы в твоём тексте вместо буквы "L" автоматом везде подставилось то значение, которое ты укажешь в ответ на обозначенный тобою выше запрос? Если "да", то чем не устроила команда _.FIND?
Нет, хочу чтобы проставлялась сумма L+ХХХ.
__________________
Из честолюбия или чувства долга не может родиться ни чего ценного. А. Эйнштейн
Jonas вне форума  
 
Непрочитано 29.01.2013, 13:16
#7
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Jonas Посмотреть сообщение
Нет, хочу чтобы проставлялась сумма L+ХХХ.
Где XXX = ИсходноеЗначение + УказанноеТобойЗначение? В твоём чертеже под "ИсходнымЗначением" фигурируют 6, 19 и 13.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 29.01.2013, 13:31
#8
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Цитата:
Сообщение от hwd Посмотреть сообщение
Где XXX = ИсходноеЗначение + УказанноеТобойЗначение? В твоём чертеже под "ИсходнымЗначением" фигурируют 6, 19 и 13.
Как же я безтолков объясняю!
Исходным значением является L которое я должен ввести при вставке чертежа (это толщина пакета толщина пакета). Остальные, редактируемые размеры получаются сложением значения L и цифр указанных в чертеже.
__________________
Из честолюбия или чувства долга не может родиться ни чего ценного. А. Эйнштейн
Jonas вне форума  
 
Непрочитано 29.01.2013, 13:39
#9
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Jonas Посмотреть сообщение
Как же я безтолков объясняю!
Есть такое дело... Яснее не стало. Приведи примеры строк, которые есть изначально, а так же результат, который должен получиться на выходе. Не забудь указать число, которое ты вводишь в своём запросе. На примерах тебя понять будет проще.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 29.01.2013, 13:48
#10
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Вообще то думаю что из чертежа должно быть предельно ясно чего нужно.
СДАЮСЬ!!!
__________________
Из честолюбия или чувства долга не может родиться ни чего ценного. А. Эйнштейн
Jonas вне форума  
 
Непрочитано 29.01.2013, 13:52
#11
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Jonas Посмотреть сообщение
СДАЮСЬ!!!
хозяин - барин, как говорится.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 29.01.2013, 14:12
#12
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Ну и чем поля не устраивают - меняй значение L в кружке и регенерация - естественно L можно положить куда угодно.
Вложения
Тип файла: dwg
DWG 2010
ось.dwg (105.9 Кб, 1961 просмотров)
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 29.01.2013, 18:42
#13
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Завтра на службе буду разбираться можно ли реализовать -
Цитата:
Сообщение от Jonas Посмотреть сообщение
хочу чтобы при вставке был запрос "Введите исходный размер" и после ввода все зависящие размеры, волшебным образом, отредактировались.
__________________
Из честолюбия или чувства долга не может родиться ни чего ценного. А. Эйнштейн
Jonas вне форума  
 
Непрочитано 06.02.2013, 10:26
#14
Kirill_Ja


 
Регистрация: 28.07.2008
Мурманск
Сообщений: 208
<phrase 1=


Сделать все автоматически мудрено (не понятны критерии зависимости размеров). Т.е. не понятно как программа может определить, что размеры зависимы, а полуавтоматический способ - пожалуйста.
После исполнения программа запросит исходный размер, в потом будет запрашивать по-одному зависимые.
Вызов: (diment_l [точность])
Точность - количество знаков после запятой в размере. (L+1) или (L+1.00)

Код:
[Выделить все]
 (defun diment_l ( tochn / d_l d_curent d_value_cur dd_val)

(setq d_l (entget(car (entsel "/nУкажите исходный размер"))))
(setq d_curent d_l)
(setq d_l (cdr (assoc 42 d_l)));значение исходного размера

(while t

  (if (not d_curent)(setq d_curent (entget(car (entsel "/nУкажите зависимый размер"))))); end if
  (setq d_value_cur (cdr (assoc 42 d_curent)))
  (setq dd_val (- d_value_cur d_l))
  (cond
     ((< dd_val 0) (setq d_value_cur (strcat "L" (rtos dd_val 2 tochn))))
     ((> dd_val 0) (setq d_value_cur (strcat "L" "+" (rtos dd_val 2 tochn))))
     ((= dd_val 0) (setq d_value_cur "L"))

  );end cond

  (setq ass (cons 1 d_value_cur))
  (setq nass (assoc 1 d_curent))
  (setq d_curent (subst ass nass d_curent ))
  (entmod d_curent)
  (setq d_curent nil)
  
); end while
  
); end defun

Все размеры должны быть примитивами Размер (т.е. не линии с текстом)

Последний раз редактировалось Kirill_Ja, 06.02.2013 в 10:31.
Kirill_Ja вне форума  
 
Непрочитано 06.02.2013, 10:44
#15
pan

добрый человек
 
Регистрация: 23.02.2004
Глушь
Сообщений: 971


Здесь напрашивается применить параметризацию - создать пользовательскую переменную L и размерные зависимости.
__________________
Правильно сформулированный вопрос содержит 90% ответа.
pan вне форума  
 
Непрочитано 06.02.2013, 12:46
#16
Kirill_Ja


 
Регистрация: 28.07.2008
Мурманск
Сообщений: 208
<phrase 1=


ААА!!!
Что-то я перечитал задачу.
Я правильно понимаю, что чертеж оси это пример того чертежа, который вы вставляете, а потом нужно написать прогу, чтобы по заданному значению L она сама переправляла все размеры?
Kirill_Ja вне форума  
 
Непрочитано 11.02.2013, 16:50
#17
DimaNtr32


 
Регистрация: 23.08.2011
Сообщений: 12


в навеске AutoCAD Mechanical пишут есть зависимые размеры
DimaNtr32 вне форума  
 
Непрочитано 11.02.2013, 17:01
#18
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Offtop: "довески", "навески"... так могут появиться "перевески", или "недовески".
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 12.02.2013, 02:26
#19
Kirill_Ja


 
Регистрация: 28.07.2008
Мурманск
Сообщений: 208
<phrase 1=


Код:
[Выделить все]
 
(defun TG_List (i_str /)
;;;Строка в список строк
;;;Функция преобразует строку с разделителем пробел
;;;в список из строк
;;;i_str строка на входе
 
(if (/= (type i_str) 'str) (exit))
(setq i_str (read (strcat "(" i_str ")")))
(mapcar 'vl-princ-to-string i_str);end mapcar
  
); end defun


(defun Dim_correct_by_one  ( / d_current d_value_cur ass nass)

(while t

  (while (not (setq d_curent (entget(car (entsel "Укажите зависимый размер"))))))
  (setq d_value_cur (cdr (assoc 1 d_curent)))
  (setq d_value_cur (TG_List d_value_cur))

  (if (= (length d_value_cur) 3)

    (progn

    (setq d_value_cur (mapcar (function
	          		(lambda (x / symbol)
                      			(setq symbol (read x))
		      			(if (= (eval symbol) nil)
						(set symbol (getreal (strcat "Введите значение " (vl-princ-to-string symbol))))
					);end if
					(if (numberp (eval symbol))


					  (eval symbol)
					  symbol)
			   );end lambda

		  	);end function
	    d_value_cur);end mapcar
    		);end setq


	(setq d_value_cur (apply (nth 1 d_value_cur) (vl-remove (nth 1 d_value_cur) d_value_cur)))
  	(setq ass (cons 1 (vl-princ-to-string d_value_cur)))
 	(setq nass (assoc 1 d_curent))
  	(setq d_curent (subst ass nass d_curent ))
	(entmod d_curent)
  	(setq d_curent nil)
    
     );end progn
    

  );end if

  
 );end while

);end defun
Порядок работы. После запуска программа будет запрашивать размеры по одному. Если встретит переменные, будет запрашивать их значение один раз за сеанс редактирования документа.

Важные особенности:

Программа хранит значения переменных в глобальных переменных. Если надо сменить значение (L например) надо ее занилить (setq L nil)
Критично, чтобы между аргументами и функцией должен быть пробел. Запись L+1 неверна. Надо L + 1
Критично, что функцию можно применить только к примитивам, которые не содержат тегов форматирования => МТексты с форматированием типа \А1;L + 1 не подойдут. См. свойства объектов
Да и еще, запись L тоже не прокатит. Надо L + 0

Offtop: Можно сделать лучше. Я еще только учусь писать правильно.

Последний раз редактировалось Kirill_Ja, 12.02.2013 в 14:43.
Kirill_Ja вне форума  
 
Автор темы   Непрочитано 12.02.2013, 05:27
#20
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


В общем решил с использованием полей, оказалось самый короткий путь.
Пример файла чертежа и лиспа.
Вложения
Тип файла: lsp cpal.LSP (603 байт, 35 просмотров)
Тип файла: dwg
DWG 2010
Черте.dwg (101.1 Кб, 1469 просмотров)
__________________
Из честолюбия или чувства долга не может родиться ни чего ценного. А. Эйнштейн

Последний раз редактировалось Jonas, 12.02.2013 в 06:18.
Jonas вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Помогите решить задачу редактирования размеров или подскажите пути решения.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачу с остыванием образца в ANSYS dedmakar89 ANSYS 1 17.06.2010 10:44
Помогите решить задачу. Риф Разное 16 12.04.2010 14:53
Гидротехники, помогите решить задачу DENVER Поиск литературы, чертежей, моделей и прочих материалов 2 29.12.2009 18:54
Расчет закладной детали или научите правильно решить задачу.. Казбек Железобетонные конструкции 7 20.07.2009 17:38
Помогите решить задачу по строительной механике MIckl13 Разное 1 17.01.2008 17:37