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

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

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

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

Дорогие знатоки случилась вот такая штука с которой я не смог справиться самостоятельно:
В модели работаю с блоками (обычными, динамическими) с таблицами и расчетами в них. А в листах имеются таблицы ссылающиеся на таблицы в модели и денамические блоки. С этим со всем работать умею только я. И в компании требуют это все взрывать перед сдачей. Работа трудоемкая и долгая. Нужно сделать так чтобы при нажатии 1 кнопки запустился процесс поиска и взрыва. Причем не просто взорвать блоки динамические командой автокада а командой экспрестулса. т.е. все отребуты при это перевести в текст.
Надеюсь будут хоть какие нибудь идеи для сокращения моего времени. Все заранее спасибо!!!
Просмотров: 27704
 
Непрочитано 15.11.2017, 17:37
#61
VVA

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


posetitel, Поставил в начало. Обновил #59
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 15.11.2017, 17:42
#62
posetitel


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


Команда: ARMAGEDON _-LAYER
Текущий слой: "0"
Задайте параметр [?/Создать/Установить/Новый/переименоватЬ/Вкл/Откл/Цвет/Тип/вЕс/Прозрачность/Материал/пеЧать/Заморозить/Разморозить/Блок/рАзблок/Конфигурация/опИсание/соГласовать]: _Unlock
Список имен слоев для разблокирования или <выбрать объекты>: Шаблон_Рамка_модель Задайте параметр [?/Создать/Установить/Новый/переименоватЬ/Вкл/Откл/Цвет/Тип/вЕс/Прозрачность/Материал/пеЧать/Заморозить/Разморозить/Блок/рАзблок/Конфигурация/опИсание/соГласовать]:
Команда: _LAYDEL
Выберите объект на слое для удаления или [Имя]: _NAME
Введите имя слоя или [?]: Шаблон_Рамка_модель
Выбранные слои: Шаблон_Рамка_модель.
Выберите объект на слое, который требуется удалить, или [Имя/оТменить]:
******** ПРЕДУПРЕЖДЕНИЕ********

Имеется 4 определений блоков, которые вставляются на слой(и) для удаления.
Блок(и) будут переопределены, а объекты, входящие в слой(и),
будут удалены из определения(й) блока(ов).

Сейчас произойдет удаление слоя "Шаблон_Рамка_модель" из этого чертежа.

Продолжить? [Да/Нет] <Нет>: _Y
Переопределение блока "Рамка_и_штамп_лист".
Переопределение блока "Рамка_и_штамп_модель".
Переопределение блока "*U4".
Переопределение блока "*U5".

Идет удаления слоя "Шаблон_Рамка_модель".
Слои 1 удалены.
Команда: ; ошибка: Возникло исключение: 0xC0000005 (Нарушение доступа)
; предупреждение: раскрутка пропущена для исключение


дальше лисп не выполняется
posetitel вне форума  
 
Непрочитано 15.11.2017, 17:58
#63
VVA

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


Судя по логу слой удалился. Поэтому сделай 2 кнопки (2 разные команды). Удаления слоя и чистки. и пользуйся старой версией
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 15.11.2017, 18:21
#64
skkkk


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


По мне, так куда удобнее выключить все ненужные слои перед чисткой, а затем - BGLAYDEL
skkkk вне форума  
 
Непрочитано 15.11.2017, 18:27
1 | #65
VVA

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


Немного изменил код в #59
Пробуй снова

----- добавлено через 32 сек. -----
Цитата:
Сообщение от skkkk Посмотреть сообщение
По мне, так куда удобнее выключить все ненужные слои перед чисткой, а затем - BGLAYDEL
По такому пути и пошел, только слой заморозил
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 15.11.2017, 19:21
#66
skkkk


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


Я имел в виду, что для заказчика порой многие слои не нужны. Разного рода вспомогательные и т.д. Более того, зачастую лишние слои даже "запрещены", а в файле куча ненужных слоев, которые вообще непонятно как удалить, искать объекты, в том числе внутри блоков, и т.д. Поэтому, программа по удалению определенного слоя не очень эффективна. Лучше - отключить все ненужное и поудалять это. А нужное - пообъединять с "разрешенными" слоями командой _LAYMRG
skkkk вне форума  
 
Непрочитано 15.11.2017, 20:22
#67
posetitel


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


Новый код на рабочем месте протестирую.
Всегда удалял командой СЛОЙУДАЛ, при ее вызове слой выбирается мышкой, поэтому думал, что добавить одну команду в лисп будет несложно. Но раз появились такие сложности (заморозка всех слоев, потом удаление их), лисп не с первого раза заработал, то проще, действительно, по старинке.
А вот лисп по взрыванию блоков, о чем собственно тема, взрывает только однократно, т.е. если в блоке есть еще один блок, то внутренний блок не расчленяется. Как сделать (какую команду скопировать), чтобы блоки взрывались хотя бы трижды? При этом, например, текст не распадался на отдельные буквы.
posetitel вне форума  
 
Непрочитано 15.11.2017, 21:16
1 | #68
skkkk


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


Цитата:
Сообщение от posetitel Посмотреть сообщение
ак сделать (какую команду скопировать), чтобы блоки взрывались хотя бы трижды?
Вероятно, должен сработать тройной (C:ALLSPACESBURST). Не проверял. Сколько времени это может занять на тяжелых файлах, предсказать трудно.
skkkk вне форума  
 
Непрочитано 16.11.2017, 09:42
#69
posetitel


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


VVA, skkkk, спасибо
(по правилам вроде нельзя благодарить отдельным сообщением, а как удалить это сообщение - не знаю)
posetitel вне форума  
 
Непрочитано 16.11.2017, 13:20
#70
posetitel


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


заметил такой глюк:
если в блоке атрибут скрытый или есть блок с параметром "видимость" и на разных видимостях есть атрибуты, то при выполнении лиспа C:ALLSPACESBURST эти атрибуты появляются на чертеже. так быть не должно. прилагаю файл
Вложения
Тип файла: dwg
DWG 2013
Чертеж1.dwg (48.8 Кб, 24 просмотров)
posetitel вне форума  
 
Непрочитано 16.11.2017, 14:59
1 | #71
VVA

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


posetitel, Попробуй в коде C:ALLSPACESBURST в строке №22 вместо (C:BURST) вписать (C:BGBLEXP)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 16.11.2017, 15:54
#72
posetitel


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


оно! даже тройной запуск (C:ALLSPACESBURST) удалил, т.к. BGBLEXP делает все за один проход.

Последний раз редактировалось posetitel, 16.11.2017 в 16:03.
posetitel вне форума  
 
Непрочитано 01.10.2018, 14:48
#73
Duero


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


туго с программированием. Можете подсказать куда в код дописать какие команды, что бы дополнительно взорвать блоки AutoDesk'ового СПДС, штриховки и Мтекст?
Забыл, еще по хорошему надо выделить все на чертеже и переместить на 0 слой с установкой цвета черного...

Последний раз редактировалось Duero, 01.10.2018 в 15:00.
Duero вне форума  
 
Непрочитано 01.10.2018, 15:36
#74
Boxa

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


Цитата:
Сообщение от Duero Посмотреть сообщение
туго с программированием. Можете подсказать куда в код дописать какие команды, что бы дополнительно взорвать блоки AutoDesk'ового СПДС, штриховки и Мтекст?
Забыл, еще по хорошему надо выделить все на чертеже и переместить на 0 слой с установкой цвета черного...
А с какой целью это делать то? Зачем взрывать штриховки и мтексты?
Boxa вне форума  
 
Непрочитано 01.10.2018, 15:46
#75
Duero


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


Увы, есть программа на разработчиков которой я не могу ни как повлиять, а они использую древние компоненты, которые могут отображать только файл DWG 2007, и только в виде разбитых примитивов, если не разбить текст или штриховку, то чертеж может "разбегаться"
Duero вне форума  
 
Непрочитано 07.11.2018, 11:31
#76
posetitel


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Как-то так. Без проверки
Код:
[Выделить все]
(defun C:ARMAGEDON ()
;;;BGTOOLS и ALLSPACESBURST должны быть загружены
;;; http://forum.dwg.ru/showthread.php?p=1671168#post1671168
(vl-load-com)
(VL-CATCH-ALL-APPLY
  '(lambda( / lay)
     (if(setq lay(mydcl "Выберите слой для удаления" (acad_strlsort(vl-remove "0"(tablelist "LAYER")))))
       (progn
         (if (= (getvar "CLAYER") lay)(setvar "CLAYER" "0"))
         (bg:layer-status-save)
         (vla-put-Freeze (vla-item (vla-get-Layers (vla-get-ActiveDocument(vlax-get-acad-object))) lay) :vlax-true)
         (bg:delete-from-layer)
         (bg:layer-status-restore)
         )
       )
     )
  )  
(bg:progress-clear)
(bg:progress-init "Работаю..." 6)
(bg:progress 1)
(ConvField->Text nil) ;_(C:BGCFT) Без запроса
(bg:progress 2)
(C:BGBLALLDYN2S)
(bg:progress 3)
(bg:blfix (cons 49444 (tablelist "BLOCK"))) ;_устанавливаем у всех блоков разрешить расчленение - Да
(bg:progress 4) 
(C:ALLSPACESBURST)
(bg:progress 5)  
(repeat 3 (vla-purgeall (vla-get-activedocument (vlax-get-acad-object))))
(bg:progress 6)

(vla-SaveAs
  (vla-get-activedocument (vlax-get-acad-object))
  (strcat
    (getvar "DWGPREFIX")
    (vl-filename-base(getvar "DWGNAME"))
    "_взорв"
    (vl-filename-extension(getvar "DWGNAME"))
    )
    acNative
  )
)
(defun mydcl (zagl info-list / fl ret dcl_id)
      ;;;Use
      ;;;(mydcl "Test" '("1" "2" "3" "4"))
      (vl-load-com)
      (if (null zagl)
        (setq zagl "Выбор")
      ) ;_ end of if
      (setq fl (vl-filename-mktemp "mip" nil ".dcl"))
      (setq ret (open fl "w"))
      (mapcar
        '(lambda (x) (write-line x ret))
        (list "mip_msg : dialog { "
              (strcat "label=\"" zagl "\";")
              " :list_box {"
              "alignment=top ;"
              "width=51 ;"
              "allow_accept = true;"
              "tabs = \"16 32\";"
              "tab_truncate = true;"
              (if (> (length info-list) 26)
                "height= 26 ;"
                (strcat "height= " (itoa (+ 3 (length info-list))) ";")
              ) ;_ end of if
              "is_tab_stop = false ;"
              "key = \"info\";}"
              "ok_cancel;}"
        ) ;_ end of list
      ) ;_ end of mapcar
      (setq ret (close ret))
      (if (and (not (minusp (setq dcl_id (load_dialog fl))))
               (new_dialog "mip_msg" dcl_id)
          ) ;_ end of and
        (progn
          (start_list "info")
          (mapcar 'add_list info-list)
          (end_list)
          (set_tile "info" "0")
          (setq ret (car info-list))
          (action_tile
            "info"
            "(setq ret (nth (atoi $value) info-list))"
          ) ;_ end of action_tile
          (action_tile
            "cancel"
            "(progn(setq ret nil)(done_dialog 0))"
          ) ;_ end of action_tile
          (action_tile "accept" "(done_dialog 1)")
          (start_dialog)
        ) ;_ end of progn
      ) ;_ end of if
      (unload_dialog dcl_id)
      (vl-file-delete fl)
      ret
    ) ;_ end of defun
Пониму тему.
Подскажите, пожалуйста, как после удаления слоев в лисп добавить команды:
1) Сначала внедрить все ссылочные чертежи (вставленные и наложенные) в рабочий чертеж
2) Затем удалить неиспользуемые области подрезанных блоков (команда BGBLXCLIPEXP)
3) продолжить выполнение лиспа, т.е. чистку ненужных слоев и взрывание блоков
posetitel вне форума  
 
Непрочитано 01.02.2019, 14:52
#77
allar8


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


Народ за ранее прошу прощения, за то что не прочитал все сообщения по этой теме, мож решение уже тут и есть - сориентируйте тогда пожалуйста
В чертеже есть много разных блоков. Во всех стоит запрет на расчленение. Нужно все разбить, но не очень удобно заходить в каждый блок и ставить расрешение на расчленение поштучно. Можно ли сразу каким нить лиспом, командой или переменной пакетно разом разрешить расчленение разных блоков
allar8 вне форума  
 
Непрочитано 01.02.2019, 15:21
1 | #78
alex101000


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


...
Миниатюры
Нажмите на изображение для увеличения
Название: AllBlocks.jpg
Просмотров: 59
Размер:	108.9 Кб
ID:	210554  
alex101000 вне форума  
 
Непрочитано 01.02.2019, 15:38
1 | #79
VVA

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


LISP. Подготовка подосновы
Цитата:
BGBLFIX - Нормализация блоков (цвет, слой, взрываемость и т.п.)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 01.02.2019, 15:58
#80
allar8


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


Цитата:
Сообщение от VVA Посмотреть сообщение
BGBLFIX - Нормализация блоков (цвет, слой, взрываемость и т.п.)
Спасибо большое - не знал что новая версия вышла. У меня была 3.3 - там вроде не было этого
allar8 вне форума  
Ответ
Вернуться   Форум 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