Тема: Список блоков в чертеже

Господа!
Есть ли в AutoCAD инструмент, посредством которого можно получить список использованных БЛОКОВ и ВНЕШНИХ ССЫЛОК в файле *.dwg? И, если есть, транслирует ли этот инструмент результат анализа в, к примеру, текстовый файл?

Re: Список блоков в чертеже

В акаде, в командной строке пишешь -block.
на первое приглашение  Набираешь "?"., а на второе приглашение Вводишь "*" и вот список перед глазами. Выделяешь мышкой, копируешь что нужно в буфер и затем вставляешь.
Также и с "-xref".

Re: Список блоков в чертеже

Но мне хотелось бы узнать список блоков перед командой INSERT по вставке файла *.dwg, чтобы избежать дальнейших хлопот с обновлением блоков.

Re: Список блоков в чертеже

Если ты хочешь посмотреть какие использовались блоки в файле1 перед вставкой их в файл2 (Если ты это имел ввиду) то воспользуйся Tools->AutoCad DesignedCenter ?Ctrl+2? (начиная с версии 2002 акада по-моему). А там как в проводнике, выбираешь файл1 и вот они: блоки, стили текста, размеры, ссылки. Их можно посмотреть и вставить в открытый файл2. При этом не обязательно вставлять файл1 целиком.
Попробуй, хорошая стандартная утилита.

Re: Список блоков в чертеже

eattext, там все увидишь.

Re: Список блоков в чертеже

> BigBrother

> Lenich
Попробую, все-таки, объяснить.
В файле 1.dwg - 152658 блоков. В файле 2.dwg - 2659871 блоков. Каким образом 2.dwg -> 1.dwg да так, чтобы не переопределить ни одного блока в 1.dwg.
Наша косноязычность гарантирует совпадение имен блоков.
Имея списки блоков в этих файлах я очень легко найду общие имена и переименую кого-то из "комплиментарной пары".
С уважением к обоим, Дмитрий.

Re: Список блоков в чертеже

http://cadhlp.kulichki.com/prog3/dbs.zip
Посмотри вот эту программку, может поможет
http://cadhlp.kulichki.com/prog3/prg3-2.htm

Re: Список блоков в чертеже

а это можно сделать. В 2004 автокаде есть специальная опция показывающая все блоки в рисунке, но с помощью нее нельзя извлекать в текстовый файл. Для извлечения я использовал Visual Basic и переносил все данные о блоке в файл Excel, ну естественно можно и в текстовый, можно извлекать блоки с помощью Lisp или написать программульку ARX. Выбирай сам, что удобней. Я С++ не знаю поэтому использоал VB. Надеюсь ответил на твой вопрос. Если что пиши.

Re: Список блоков в чертеже

Команда _eattext
И будет тебе счастье в том числе и с экспортом в файлы

Re: Список блоков в чертеже

Я думая надо написАть лиспину или на VBA прогу которая бы все твои имена блоков в одном файле переименовывала (напр. добавляла к каждому названию "1_" тебе ведь все равно как они будут называться) и потом без боязни втавишь один файл в другой. Переименовать можно программными стредствами.
Да ещё посмотри "rename".

Re: Список блоков в чертеже

> Lenich
В этом случае наступаетт бесконечный цикл. Ведь в следующий раз вновь придется все переименовывать.

Re: Список блоков в чертеже

Чесно, я не знаю как ты часто такие большие объемы вставляешь.
Но можно новое уникальное имя присвоить. Например 20040519_000001 и т.д. и они никогда не повторяться.
И ни какого цикла, сегодня один номер, завтра другой, можно еще и время добавить...........

Re: Список блоков в чертеже

(defun get-all-blockname ( / bl blist)
  (setq blist (list(cdr(assoc 2(tblnext "block" t)))))
  (while (setq bl (tblnext "block"))
    (setq blist (cons(cdr(assoc 2 bl)) blist))
    )
  )
(defun put-blks-2bb ( / )
  (VL-BB-SET 'allblkname (ACAD_STRLSORT (get-all-blockname)))
  )
(defun check-unique-blname ( / concurrence currblks otherblks)
  (setq    otherblks (VL-BB-REF 'allblkname)
    currblks  (ACAD_STRLSORT (get-all-blockname))
    concurr (list)
    )
  (foreach blk otherblks
    (if (member blk currblks)
      (setq concurrence (append concurr (list blk)))
;;; Здесь можно вставить процедуру переименования имени блока
;;; с диалогом или без...
      )
    )
  concurrence
  )

Вот заготовка, правда без проверок значений и пр. оптимизации...
Оба файла должны быть открыты в одном сеансе.
Функции соотв. тоже загружены.
В 1-м выполняешь put-blks-2bb, во 2-м check-unique-blname.
put-blks-2bb - помещает список имен блоков в чертеже в "blackboard namespace"
get-all-blockname - получить список имен блоков
check-unique-blname - возвращает список совпадений имен блоков.

Re: Список блоков в чертеже

BigBrother пишет:

Вот заготовка, правда без проверок значений и пр. оптимизации...

Некропостинг, конечно, но хочу использовать функцию для своих задач. Для теста взял пустой чертёж, вставил в него 4 блока из контрольного, но при проверке совпадений возвращает только первое имя блока.

Re: Список блоков в чертеже

wepp пишет:
BigBrother пишет:

Вот заготовка, правда без проверок значений и пр. оптимизации...

Некропостинг, конечно, но хочу использовать функцию для своих задач. Для теста взял пустой чертёж, вставил в него 4 блока из контрольного, но при проверке совпадений возвращает только первое имя блока.

Попробуй вот это.http://www.lee-mac.com/blockcounter.html