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

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

Взорвать все блоки файла сразу

Ответ
Поиск в этой теме
Непрочитано 25.05.2009, 19:08 #1
Взорвать все блоки файла сразу
Red Nova
 
ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Торонто
Регистрация: 23.10.2007
Сообщений: 1,980

Хочется сразу взорвать все блоки файла, желательно так, чтобы и все блоки входящие в другие блоки взорвалисть. (Из серии как испортить хороший чертеж)
Есть идеи?
__________________
Блог

Последний раз редактировалось Red Nova, 25.05.2009 в 19:31.
Просмотров: 11926
 
Непрочитано 25.05.2009, 19:15
#2
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Так "Быстрый выбор" поможет.
Profan вне форума  
 
Автор темы   Непрочитано 25.05.2009, 19:21
#3
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Про быстрый выбор думал, не есть еще пространство листа...
__________________
Блог
Red Nova вне форума  
 
Непрочитано 25.05.2009, 19:27
#4
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Похожая тема:
http://www.caduser.ru/forum/index.ph...#message247770

http://www.caduser.ru/forum/index.ph...2#message78060
Profan вне форума  
 
Непрочитано 25.05.2009, 20:49
#5
Dym


 
Регистрация: 27.09.2005
Двинскъ
Сообщений: 586
Отправить сообщение для Dym с помощью Skype™


Лентяй как то выкладывал
Код:
[Выделить все]
(defun C:alqaida (/);Взрывает все на хрен! 
  (setq cm (getvar "CMDECHO") 
   adoc (vla-get-activedocument (vlax-get-acad-object)) 
      bks (vla-get-blocks adoc) 
   ps (vla-get-PaperSpace adoc) 
      ms (vla-get-ModelSpace adoc)) 
  (apply '(lambda (x) 
       (vlax-for obj sp 
         (if (and (= (vla-get-objectname obj) "AcDbBlockReference") 
             (= (vla-get-IsXref (vla-item bks (vla-get-name obj))) :vlax-false)) 
      (vla-explode obj)))) '(ps ms)) 
  (repeat 3 (command "purge" "all" "y")) 
);end
Dym вне форума  
 
Непрочитано 25.05.2009, 21:35
#6
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


А чти будет с атрибутами? а что будет с цветами у тех блоков, которые при создании были Byblock и Bylayer? они станут белыми, а пунктирные линии (если было По-блоку) станут сплошными. А что станет с подрезанными блоками?
После таких операций файл надо на помойку. Так загем-же взрывать? Лучше сразу в корзину
Vova вне форума  
 
Непрочитано 25.05.2009, 22:32
#7
Кулик Алексей aka kpblc
Moderator

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


burst (а еще лучше - исправленный вариант) - и всех делов
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.05.2009, 22:43
#8
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Неисправленный не восстановит цвета и типы линий, а исправленный, хотя и сделает это, но только в блоке первого уровня. Здесь требуется более продвинутый лисп, и он обсуждался в теме Подоснова. И вообще, хотелось-бы получить ответ от автора, зачем надо портить чертеж
Vova вне форума  
 
Непрочитано 26.05.2009, 01:41
#9
Juss_00

Инженер
 
Регистрация: 11.12.2007
Москва
Сообщений: 295


Может вместо взырва просто защитить от редактирования?
Благо и лисп в FAQе есть.
__________________
Live as though tomorrow you will die,
Study as though you will live eternally.
Juss_00 вне форума  
 
Автор темы   Непрочитано 26.05.2009, 11:16
#10
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Profan, Интересная тема,
Там есть лисп от kpblcа, Вот он
Код:
[Выделить все]
(defun test (/ adoc *error* fun_explode err_lst)
  (defun *error* (msg)
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun
  (defun fun_explode (ent / lst)
    (cond
      ((= (vla-get-objectname ent) "AcDbBlockReference")
       (if (not (vl-catch-all-error-p
                  (vl-catch-all-apply
                    '(lambda ()
                       (setq lst (vlax-safearray->list
                                   (vlax-variant-value (vla-explode ent))
                                   ) ;_ end of vlax-safearray->list
                             ) ;_ end of setq
                       ) ;_ end of lambda
                    ) ;_ end of vl-catch-all-apply
                  ) ;_ end of vl-catch-all-error-p
                ) ;_ end of not
         (progn
           (foreach item lst
             (fun_explode item)
             ) ;_ end of foreach
           (vla-erase ent)
           ) ;_ end of progn
         ) ;_ end of if
       )
      ((and (= (vla-get-objectname ent) "AcDbBlockTableRecord")
            (equal (vla-get-islayout ent) :vlax-false)
            (equal (vla-get-isxref ent) :vlax-false)
            ) ;_ end of and
       (vlax-for sub ent
         (fun_explode sub)
         ) ;_ end of vlax-for
       )
      ((and (vlax-property-available-p ent 'islayout)
            (equal (vla-get-islayout ent) :vlax-true)
            ) ;_ end of and
       (vlax-for sub ent
         (fun_explode sub)
         ) ;_ end of vlax-for
       )
      ) ;_ end of cond
    ) ;_ end of defun
  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-startundomark
  (vlax-for blk_def (vla-get-blocks adoc)
    (fun_explode blk_def)
    ) ;_ end of vlax-for
  (vlax-for blk_def (vla-get-blocks adoc)
    (vl-catch-all-apply '(lambda () (vla-erase blk_def)))
    ) ;_ end of vlax-for
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
С первоначальной задачей он справляется (если не брать во внимание вопроы поднятые со стороны Vova).
Хотелось бы спросить автора. Там что и пурген заодно делается, а-то заметил что после работы листа блоки то самопроизвольно пургенятся а то нет, непонятки...
Вообщето и я и планировал спургенить все потом.
Цитата:
burst (а еще лучше - исправленный вариант) - и всех делов
А как на счет того чтобы скрестить burst и этот код?


Dym, Этот лисп пока не пробовал, поскольку нашел выше представленный.

Vova,
Цитата:
И вообще, хотелось бы получить ответ от автора, зачем надо портить чертеж
Ну как всегда. Директор пообещал автокадовский файл заказчику, а подрядчиков несколько. Так как проекты в чем-то типовые, хотелось бы сперва попортить чертеж прежде чем расстаться с ним.

Цитата:
Здесь требуется более продвинутый лисп, и он обсуждался в теме Подоснова
Если есть готовые результаты то хотелось бы взглянуть.
__________________
Блог
Red Nova вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Взорвать все блоки файла сразу

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заменить блоки?... Все и сразу... Chief Justice AutoCAD 6 21.06.2005 20:39
Размер файла dwg alex-alex Прочее. Архитектура и строительство 5 10.09.2004 00:28