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

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

Как взорвать все блоки на листах разом.

Ответ
Поиск в этой теме
Непрочитано 08.11.2014, 21:48
Как взорвать все блоки на листах разом.
zmejsan
 
Регистрация: 27.06.2013
Сообщений: 58

Дорогие знатоки случилась вот такая штука с которой я не смог справиться самостоятельно:
В модели работаю с блоками (обычными, динамическими) с таблицами и расчетами в них. А в листах имеются таблицы ссылающиеся на таблицы в модели и денамические блоки. С этим со всем работать умею только я. И в компании требуют это все взрывать перед сдачей. Работа трудоемкая и долгая. Нужно сделать так чтобы при нажатии 1 кнопки запустился процесс поиска и взрыва. Причем не просто взорвать блоки динамические командой автокада а командой экспрестулса. т.е. все отребуты при это перевести в текст.
Надеюсь будут хоть какие нибудь идеи для сокращения моего времени. Все заранее спасибо!!!
Просмотров: 27710
 
Непрочитано 09.11.2014, 14:13
#21
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от skkkk Посмотреть сообщение
То ли из-за нелюбви взрывать блоки форумчане не хотят подсказать, то ли я чего-то не пойму, но ведь все решается одной строчкой. Я имею в виду выбор блоков на всем чертеже: и в модели, и в листах. Вот эта строчка:
Это или в модели, или в одном листе. И речь, если судить по топику ветки - идет не только о расчленении блоков) Насчет самой операции расчленения блоков - сейчас это стало своего рода символом дилетанства, имхо.. не разбираясь, все расчленить и рисовать в примитивах. Еще и в нулевом слое желательно)

----- добавлено через ~4 мин. -----
Цитата:
Сообщение от zmejsan Посмотреть сообщение
Нет)) Так черчу только я. И на листах динамически сделаны рамки, условные обозначения и другая мелочь.
Зачем на листах динамические форматы? Или не печатаете сами?
А условные обозначения и прочая мелочь на листе - даже говорить не хочется)
На листе должна быть рамка со штампом и видовые экраны, и все. имхо.
Сергей812 вне форума  
 
Непрочитано 09.11.2014, 14:20
#22
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Ах вот в чем тут дело, а я думаю сижу тут, что самый умный. На кнопочку-то на детонаторе я-то и не нажал! А оказалось, надо еще провода протягивать на листы. Сам блоки взрывать ненавижу просто... Ну по возможности гляну, что тут можно сделать.
skkkk вне форума  
 
Непрочитано 09.11.2014, 14:25
#23
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Интересно, если пост #10 скрестить с постом #19, добавив команду расчленения блоков - работать будет?)
Сергей812 вне форума  
 
Автор темы   Непрочитано 09.11.2014, 14:25
#24
zmejsan


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
То ли из-за нелюбви взрывать блоки форумчане не хотят подсказать, то ли я чего-то не пойму, но ведь все решается одной строчкой. Я имею в виду выбор блоков на всем чертеже: и в модели, и в листах. Вот эта строчка:
Код:
[Выделить все]
(sssetfirst nil (ssget "_X" '((0 . "INSERT"))))
Она заминирует все блоки
Хорошая команда. Я не знал про нее. Подкрепил к кнопке перед взрывом и немного ускорило мне это. Спасибо!
zmejsan вне форума  
 
Непрочитано 09.11.2014, 14:27
#25
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


правда еще надо проверку делать или принудительно разблокировать слои перед расчленением..
Сергей812 вне форума  
 
Непрочитано 09.11.2014, 15:12
#26
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Вобще из конторы в которой не работают с блоками, а тех кто работае заставляют взрывать вместо того что бы хоть одну кнопку выучить и взрывать самому, заставляют автора взрывать блоки, бежать нужно, всёравно это будет не работа а мучение. У меня тут одна умная рвёт всё подряд, я стал закрывать блоки от возможности взрывать.
Valery Brelovsky вне форума  
 
Автор темы   Непрочитано 09.11.2014, 15:14
#27
zmejsan


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


Цитата:
Сообщение от Valery Brelovsky Посмотреть сообщение
Вобще из конторы в которой не работают с блоками, а тех кто работае заставляют взрывать вместо того что бы хоть одну кнопку выучить и взрывать самому, заставляют автора взрывать блоки, бежать нужно, всёравно это будет не работа а мучение. У меня тут одна умная рвёт всё подряд, я стал закрывать блоки от возможности взрывать.
А я и ищу как раз)) Можете подсказать мне где лучше
zmejsan вне форума  
 
Непрочитано 09.11.2014, 15:28
#28
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Offtop:
Цитата:
Сообщение от zmejsan Посмотреть сообщение
А я и ищу как раз)) Можете подсказать мне где лучше
Главное, помните - в первую очередь выгоняют из шаражек тех, кто не вписывается в общую корпоративную струю - чтобы не наводил смуту Если будете нажатием трех кнопок делать работу половины отдела за неделю-сживут..
Сергей812 вне форума  
 
Непрочитано 09.11.2014, 20:40
#29
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Вот, для всеобщего взрыва всех блоков во всех пространствах:
Код:
[Выделить все]
 (defun C:ALLSPACESBURST	(/ layout-list current-tab ss)
  (setq	layout-list
		    (mapcar 'cdr
			    (vl-remove-if-not
			      (function
				(lambda (x) (= (car x) 3))
			      ) ;_ end of function
			      (dictsearch (namedobjdict) "ACAD_LAYOUT")
			    ) ;_ end of vl-remove-if-not
		    ) ;_ end of mapcar
	current-tab (getvar "CTAB")
  ) ;_ end of setq
  (repeat (setq i (length layout-list))
    (setvar "CTAB" (nth (setq i (1- i)) (reverse layout-list)))
    (setq
      ss (ssget	"_X"
		(list (cons 0 "INSERT") (cons 410 (getvar "CTAB")))
	 ) ;_ end of ssget
    ) ;_ end of setq
    (sssetfirst nil ss)
    (if	ss
      (C:BURST)
    ) ;_ end of if
  ) ;_ end of repeat
  (setvar "CTAB" current-tab)
) ;_ end of defun
Программа откроет по очереди все вкладки чертежа, включая модель, и взорвет в каждой их них все блоки, которые сможет, командой BURST, затем вернется на первоначально открытую вкладку. Проверок никаких не делал, поэтому сначала лучше разблокировать слои, на которых есть блоки. Бегло потестировал, некоторые блоки команда BURST почему-то не взрывает, пишет: "Невозможно расчленить этот блок." С чем это связано - не разбирался. Тестируем, в общем, если что - подправлю. Главное - случайно не нажать в том чертеже в котором не надо. Может вопрос в начале добавить, типа "Вы уверены?"??
skkkk вне форума  
 
Непрочитано 09.11.2014, 21:08
#30
Andrey_13

Инженер-проектировщик РЗА, ПА, ВК
 
Регистрация: 06.02.2014
Екатеринбург
Сообщений: 32


Код:
[Выделить все]
  (setq	layout-list
		    (mapcar 'cdr
			    (vl-remove-if-not
			      (function
				(lambda (x) (= (car x) 3))
			      ) ;_ end of function
			      (dictsearch (namedobjdict) "ACAD_LAYOUT")
			    ) ;_ end of vl-remove-if-not
		    ) ;_ end of mapcar
	current-tab (getvar "CTAB")
  ) ;_ end of setq
Возвращает список вкладок листов? Можно заменить на более изящное
Код:
Andrey_13 вне форума  
 
Автор темы   Непрочитано 09.11.2014, 21:12
#31
zmejsan


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


Друзья большое спасибо! Маленькая просьба. немогли бы собрать все в один файл и сказать как пользоваться. Я с лиспами вообще не лады(((
Еще просьба взрывать блоки с переводом отребутов в текст. И взорвать все таблицы как обычным взрывом. Т.е. упростить все до линий и текста. Большое спасибо!
zmejsan вне форума  
 
Непрочитано 09.11.2014, 21:13
#32
Кулик Алексей aka kpblc
Moderator

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


skkkk, посмотри: команда burst обращается к внутренней функции burst-one. Так что можно и ее попробовать использовать по мере надобности.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.11.2014, 21:43
#33
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от skkkk Посмотреть сообщение
Главное - случайно не нажать в том чертеже в котором не надо. Может вопрос в начале добавить, типа "Вы уверены?"??
Может, лучше сначала скопировать/сохранить как в %имя файла%_burst.dwg ?

----- добавлено через ~41 мин. -----
Типа такого
Код:
[Выделить все]
 ( vl-load-com )
	( setq lDoc (vla-get-activedocument (vlax-get-acad-object)) )
	( setq lFullNameFile (vla-get-fullname lDoc))
	( setq lNewNameFile (strcat ( vl-filename-directory lFullNameFile) "\\"
		( vl-filename-base lFullNameFile) "_burst" ( vl-filename-extension lFullNameFile)) )
  	( vla-SaveAs lDoc lNewNameFile acNative)
давно уже не рассчитываю - что пользователь что-то читает..)
Сергей812 вне форума  
 
Непрочитано 09.11.2014, 23:39
#34
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от skkkk Посмотреть сообщение
"Невозможно расчленить этот блок."
два варианта :
1. блоку "запрещено" взрываться (vla-get-explodable)
2. не равные коэффициенты по x y z
+
3. В штатной команде есть много глюков и при большом кол-ве блоков может долго выполняться. см Express Tools Bugs ( Ошибки Express Tools )
еще полезная ссылка
4. Нюансы _EXPLODE (РАСЧЛЕНИТЬ)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 10.11.2014, 14:25
#35
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Цитата:
Сообщение от zmejsan Посмотреть сообщение
Т.е. упростить все до линий и текста
Есть ещё _wmfin всё упростится и текст до линий.
Valery Brelovsky вне форума  
 
Непрочитано 12.11.2014, 16:43
#36
Composter

Отопление и вентиляция
 
Регистрация: 31.10.2008
Москва
Сообщений: 445


еще немного советов.
после того как вам тут соберут лисп ,который будет все делать.
далее закидываете в какую нить папку , создаете батник в нем пишете аля
Код:
[Выделить все]
FOR %%f in (D:\111\*.dwg) DO START /wait C:\"Program Files"\"AutoCAD 2009"\acad.exe "%%f" /b D:\111\222.scr
222.src это обычный текстовый файл переименованный в котором будет только надпись "ALLSPACESBURST" (без кавычек, если так будет в конце обзываться конечный лисп)
не забудьте добавить этот лисп в автозагрузку
ну и в конце лиспа надо добавить
Код:
[Выделить все]
 (vla-save(vla-get-activedocument(vlax-get-acad-object)))
(vla-quit(vlax-get-acad-object))
тогда при запуске батника будут открываться все файлы dwg по очереди в этой папке , врываться все блоки (если вам допишут до конца лисп),сохранятся и закрываться. а вы сможете пойти чайку попить
Composter вне форума  
 
Автор темы   Непрочитано 12.11.2014, 16:57
#37
zmejsan


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


Спасибо за совет, но лисп мой ни как не напишут... Сложно наверное.
zmejsan вне форума  
 
Непрочитано 12.11.2014, 19:02
#38
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от Andrey_13 Посмотреть сообщение
Возвращает список вкладок листов? Можно заменить на более изящное
Да, именно их возвращает. Согласен, можно, забыл я об этой функции, просто такая конструкция в моих функциях получает список объектов любых словарей: не только список листов, но и список групп, фильтров слоев, стилей мультивыносок, мультилиний и т.д. Более универсально просто, а так, спасибо, учту.
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
skkkk, посмотри: команда burst обращается к внутренней функции burst-one. Так что можно и ее попробовать использовать по мере надобности.
Насколько я понял, она тоже не повзрывает блоки в другом пространстве, тогда какой в этом смысл? Или я не так понял? Сейчас нет возможности проверить. Но по возможности попробую.
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Может, лучше сначала скопировать/сохранить как в %имя файла%_burst.dwg ?
Думаю, это не лишено смысла.
Цитата:
Сообщение от VVA Посмотреть сообщение
два варианта :
Спасибо, Володь, тут все теперь предельно понятно. Кроме одного. Взрывать все-таки невзрываемые блоки или нет? Это к вопросу о Правильном Техническом Задании.
Цитата:
Сообщение от VVA Посмотреть сообщение
3. В штатной команде есть много глюков и при большом кол-ве блоков может долго выполняться. см Express Tools Bugs ( Ошибки Express Tools )
еще полезная ссылка
За эти ссылки особое спасибо. Очень приятно осознавать, что VVA и Do$ утёрли нос америкосов.
Цитата:
Сообщение от VVA Посмотреть сообщение
4. Нюансы _EXPLODE (РАСЧЛЕНИТЬ)
Ну это ты вообще... как шахматист. На несколько ходов вперёд . Я еще споткнуться не успел, а уже все тут мне на блюдечке с золотой каёмочкой.
Цитата:
Сообщение от Valery Brelovsky Посмотреть сообщение
Есть ещё _wmfin всё упростится и текст до линий
В смысле связка _WMFOUT -> _WMFIN?
Цитата:
Сообщение от Composter Посмотреть сообщение
будут открываться все файлы dwg по очереди в этой папке , врываться все блоки (если вам допишут до конца лисп),сохранятся и закрываться.
Вот это вообще сможет стать опасной гранатой в руках какой-нибудь обезьяны. Ясное дело, эта обезьяна может и просто файлы все поудалять или вообще компьютер уронить с четвертого этажа, но я бы под таким подписываться не стал.
Цитата:
Сообщение от zmejsan Посмотреть сообщение
лисп мой ни как не напишут...
zmejsan, а как продвигается тестирование лиспа из #29? Как работает? Медленно ли? А не быстрее ли с замененным burst.lsp из ссылок VVA в #34? Какие замечания и предложения кроме обработки таблиц? Сложно-то - не сложно, но когда от "Заказчика" не слышно обратной связи, то и делать вроде как нечего, не так ли? Может, вообще уже и не надо...
skkkk вне форума  
 
Автор темы   Непрочитано 21.11.2014, 21:53
#39
zmejsan


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


skkkk, спасибо за старания! Я писал в посте #31, что я не умею пользоваться лиспами. Попробовал, но не заработало. Если не сложно сварганить готовый лисп и написать какую команду вводить для работы буду примного благодарен.
За труд СПАСИБО!!!
zmejsan вне форума  
 
Непрочитано 21.11.2014, 23:01
#40
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от zmejsan Посмотреть сообщение
Попробовал, но не заработало. Если не сложно сварганить готовый лисп и написать какую команду вводить для работы буду примного благодарен
Что не заработало то? И по вашему в посте #29 не готовый лисп?
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как взорвать все блоки на листах разом.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поменяли плоттер. Как заменить разом плоттер на всех листах, в параметрах листов, на другой плоттер? Palomnic AutoCAD 5 14.12.2012 12:41
Динамические блоки при копировании перестают быть динамическими. *Voland* Динамические блоки 11 04.07.2012 10:51
ЛИСП слои цвета преобразование Gotch LISP 97 08.11.2011 10:22
Разбиение черечежа откоса на геологические блоки в VBA Skyper Программирование 1 18.03.2010 08:54
Взорвать все блоки файла сразу Red Nova AutoCAD 9 26.05.2009 11:16