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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Сбор блоков, расстановка и выравнивание блоков

Сбор блоков, расстановка и выравнивание блоков

Ответ
Поиск в этой теме
Непрочитано 17.03.2014, 09:18 #1
Сбор блоков, расстановка и выравнивание блоков
Andrey_nadym
 
Регистрация: 22.02.2008
Сообщений: 174

Здравствуйте!
Подскажите пожалуйста есть ли lisp для "сбора", расстановки и выравнивания блоков?

На чертеже расставлены блоки. У каждого блока свое имя, но нумерация блоков идет по возрастанию с разными префиксами. Базовые точки блоков по центру графической части блока.

Можно ли как-нибудь их расставить в порядке возрастания вдоль линии или полилинии?
Файл прилагаю

Спасибо!

Вложения
Тип файла: dwg
DWG 2010
Структурная_схема.dwg (65.5 Кб, 1836 просмотров)

Просмотров: 4678
 
Непрочитано 17.03.2014, 12:44
#2
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


вряд ли найдешь готовый лисп (частный случай), но можно написать.
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Автор темы   Непрочитано 17.03.2014, 12:58
#3
Andrey_nadym


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


Сам в lisp не силен. Что нужно для написания . Рассмотрю варианты- можно и через личку
Andrey_nadym вне форума  
 
Непрочитано 17.03.2014, 13:09
#4
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


есть такой вариант http://forum.dwg.ru/showthread.php?t=8707&page=4
zamtmn вне форума  
 
Автор темы   Непрочитано 17.03.2014, 15:05
#5
Andrey_nadym


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


Ув. zamtmn Преклоняюсь перед Вами за проделанную и проделываемую Вами работу
Да видел Вашу разработку, но пока остаюсь на AutoCade и поэтому возникают всякого рода вопросы по ускорению процесса черчения проектов.
Так же есть ряд и других ПО для проектирования ОПС, но вопрос все же в дополнении AutoCada.
Если кто-то сможет помочь буду очень признателен, а так пока приходится вручную делать эту монотонную работу.

Последний раз редактировалось Andrey_nadym, 17.03.2014 в 15:15.
Andrey_nadym вне форума  
 
Непрочитано 17.03.2014, 15:17
#6
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


По хорошему эта тема должна быть не тут, а в этой ветке: http://forum.dwg.ru/forumdisplay.php?f=33
(я в лиспе не силен, так что лицо не заинтересованное )
Boxa вне форума  
 
Непрочитано 17.03.2014, 22:23
#7
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


http://dwg.ru/dnl/11290
Команда "blin".
Единственное, что необходимо, соединить блоки полилинией так, как вам требуется.
roaa вне форума  
 
Автор темы   Непрочитано 17.03.2014, 23:03
#8
Andrey_nadym


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


roaa, Спасибо огромное то, что нужно. Я так долго это искал.
Andrey_nadym вне форума  
 
Непрочитано 17.03.2014, 23:53
#9
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Цитата:
Сообщение от Andrey_nadym Посмотреть сообщение
roaa, Спасибо огромное то, что нужно. Я так долго это искал.
Для отрисовки структурной схемы попробуйте команду "schemdiag" с этой же программы. Специально для этого создана.
roaa вне форума  
 
Автор темы   Непрочитано 18.03.2014, 07:59
#10
Andrey_nadym


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


Ув. roaa, при выполнении команды schemdiag блоки расставляются, но при этом сбрасываются текущие параметры текста атрибута например такие как высота и текстовый стиль, можете попробовать на примере из первого поста.
Andrey_nadym вне форума  
 
Непрочитано 18.03.2014, 11:44
#11
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


Andrey_nadym
Дело хозяйское, но уходить из автокада ненадо. Наружу переносятся только некоторые операции - расстановка, прокладка кабелей, нумерация, получение схемы - дальше обратно в автокад
zamtmn вне форума  
 
Непрочитано 18.03.2014, 18:10
#12
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Цитата:
Сообщение от Andrey_nadym Посмотреть сообщение
...при этом сбрасываются текущие параметры текста атрибута например такие как высота и текстовый стиль, можете попробовать на примере из первого поста.
Попробовал...дась... Вы и при вставке следите за размером и постановкой атрибута? По-моему, лишняя забота, да и неправильно... Как выход - атрибут "NUM_DEVICE" (который Вы активно используете) в редакторе блоков установить в нужное место и используемыми размерами. Текстовый стиль назначить по блоку. И таким использовать в дальнейшем. Переделывать программу из-за этого просто не вижу смысла.
roaa вне форума  
 
Автор темы   Непрочитано 18.03.2014, 21:14
#13
Andrey_nadym


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


Цитата:
Сообщение от roaa Посмотреть сообщение
Попробовал...дась... Вы и при вставке следите за размером и постановкой атрибута? По-моему, лишняя забота, да и неправильно... Как выход - атрибут "NUM_DEVICE" (который Вы активно используете) в редакторе блоков установить в нужное место и используемыми размерами. Текстовый стиль назначить по блоку. И таким использовать в дальнейшем. Переделывать программу из-за этого просто не вижу смысла.
Ув. roaa. По вопросу переделки решайте сами - программа Ваша.
Но не всегда можно прибегать к редактированию уже готовой базы блоков.
Если не использовать schemdiag, то меня устраивает, Спасибо за отзыв на проблему. Ускорение процесса проектирования заметное.

----- добавлено через ~7 мин. -----
Цитата:
Сообщение от Andrey_nadym Посмотреть сообщение
Дело хозяйское, но уходить из автокада ненадо. Наружу переносятся только некоторые операции - расстановка, прокладка кабелей, нумерация, получение схемы - дальше обратно в автокад
Ув. zamtmn. Попробую Вашу методику, но чуть позже, когда будет свободное время, а пока немного "загружен". Спасибо.

Последний раз редактировалось Andrey_nadym, 18.03.2014 в 21:22.
Andrey_nadym вне форума  
 
Непрочитано 22.03.2014, 00:03
#14
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


вот, вроде как, решение проблемы
Код:
[Выделить все]
 
(defun c:88 (/ p_cons doc ll rakez kav galay osm_old cmd_old p *error*)
					(defun *error* (msg)
						(setvar "osmode" osm_old)
						(setvar "cmdecho" cmd_old)
						(princ)
					)
(vl-load-com)
(setq p_cons (getpoint "\nSET START POINT "))
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(vlax-for b (vla-get-layouts doc)
	(vlax-for i (vla-get-block b)
		(if (and (= (vla-get-objectname i) "AcDbBlockReference")
					(not (vlax-property-available-p i 'Path))
				)
			(if (vlax-property-available-p i 'Hasattributes)
				(if (= (vla-get-hasattributes i) :vlax-true)
					(mapcar '(lambda (a) (if (= (vla-get-tagstring a) "NUM_DEVICE")
										(setq ll (cons (list i (vla-get-textstring a)) ll))))
							(vlax-safearray->list (vlax-variant-value (vla-getattributes i)))
					)
				)
			)
		)
	)
)
(setq ll (vl-sort ll '(lambda (x y) (< (l-str-int (cadr x)) (l-str-int (cadr y))))))
(setq rakez (substr (itoa (l-str-int (cadar ll))) 1 1))
(setq kav (substr (itoa (l-str-int (cadar ll))) 2 1))
(setq galay (substr (itoa (l-str-int (cadar ll))) 3 3))
(setq osm_old (getvar "osmode"))
(setq cmd_old (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(mapcar '(lambda (x)
					(if (zerop (- (l-str-int (cadr x)) (atoi (strcat rakez kav galay))))
						(setq p p_cons)
						(if (> (atoi (substr (itoa (l-str-int (cadr x))) 1 1)) (atoi rakez))
							(progn
								(setq p (list (car p_cons) (- (cadr p) 2000)))
								(setq rakez (substr (itoa (l-str-int (cadr x))) 1 1))
							)
							(if (> (atoi (substr (itoa (l-str-int (cadr x))) 2 1)) (atoi kav))
								(progn
									(setq p (list (car p_cons) (- (cadr p) 1000)))
									(setq kav (substr (itoa (l-str-int (cadr x))) 2 1))
								)
								(if (> (atoi (substr (itoa (l-str-int (cadr x))) 3 3)) (atoi galay))
									(setq p (list (+ 1500 (car p)) (cadr p)))
								)
							)
						)
					)
					(vla-move (vla-copy (car x))
						(vla-get-insertionpoint (car x))
						(vlax-3d-point p)
					)
				)
		ll
)
(setvar "osmode" osm_old)
(setvar "cmdecho" cmd_old)
(princ)
)

;;;;;;;;;;;;;;;;;;;;;;;;;
(defun L-str-int (s)
(atoi (vl-list->string (vl-remove-if-not '(lambda (x) (and (<= (ascii "0") x) (>= (ascii "9") x))) (vl-string->list s))))
)
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Автор темы   Непрочитано 23.03.2014, 20:51
#15
Andrey_nadym


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


ДА УРА!!!, все работает, СПАСИБО, nolte.
Andrey_nadym вне форума  
 
Непрочитано 23.03.2014, 21:42
#16
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 190
Отправить сообщение для nolte с помощью Skype™


не за что. приходи еще.
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Сбор блоков, расстановка и выравнивание блоков



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
Lisp. Расстановка блоков на пересечении линий. wetr LISP 22 03.04.2018 10:54
Выравнивание текста и блоков относительно кривой. Jeriko Программирование 18 11.06.2014 14:43
Выравнивание блоков saturnaly07 AutoCAD 5 13.12.2010 16:20
Тормозит команда расчленения набора блоков batmax Программирование 4 31.08.2010 17:37