Тема: Связывание AutoCAD R14 c Excel

Недавно вот озаботился проблемой автоматического заполнения таблицы Excel по мере рисования в ACADe определенных объектов.
Нужно, чтобы подсчитывались одинаковые объекты(блоки) и количество каждого типа блоков материализовывалось бы в ячейках с их именами(или номерами). Чувствую, что сделать так можно(даже что-то вокруг этого читал), но самостоятельно это будет сизифов труд.
Если кто-нибудь может помочь, то откликнитесь.
Заранее благодарен
Сергей
aww@pisem.net

Re: Связывание AutoCAD R14 c Excel

Собственно, для такой задачи и Exel не нужен. А если нужен, то зачем?

Re: Связывание AutoCAD R14 c Excel

Нет, Excel нужен, потому что в нем потом с этими количествами производятся некоторые действия в готовой таблице, которую и нужно заполнять из autocadовского чертежа. Нарисовал я, к примеру, 3 стола, а у них у каждого  есть свой код , по которому они должны быть занесены каждый в соответствующую ячейку готовой таблицы. Короче говоря, нужно сформировать из объектов AutoCADa excellевскую спецификацию. Есть какие-нибудь конкретные идеи?

Re: Связывание AutoCAD R14 c Excel

Есть. Сделать поиск по форуму со словом "спецификация", потому как проблему обсуждали примерно 256 раз

Re: Связывание AutoCAD R14 c Excel

Спасибо, что откликнулись, друзья!
Видимо, тема эта интересна не только мне, а и широким кругам проектировщиков, работающим в разных областях применения AutoCADa. Хотя кто-то уже пытается да и не только пытается, а уже совершенно откровенно повесил тяжелый замок на мою тему, которая(как показывает количество просмотров-более сотни меньше, чем за неделю и откликов) очень интересна широкой ?AutoCADoязычной? общественности.
Да, прочитал я все сообщения на этом сервере, которые хотя бы немного подходили бы для решения моей задачи, но задача так и осталась нерешенной.
Какова постановка задачи?
Есть excel?евский файл, в котором находится перечень комплектующих с количествами, кодами, ценами , размерами и прочими характеристиками. Для меня самым важными является количество, потому что именно этот параметр мне нужно извлечь из AutoCADoвского чертежа и вставить в эту таблицу.
Как все должно работать?
Я создаю в AutoCADe блоки, а в качестве имен их использую соответствующие коды  элементов таблицы. После создания чертежа легким нажатием кнопки автоматически создается  excel?евский файл(но я не стал бы возражать, если бы он заполнялся по мере добавления новых блоков на экране), в котором уже заполнен столбец с количеством.
Главная задача ? заставить количество подсчитанных AutoCADoм  блоков материализовываться в строго определенных ячейках таблицы, соответствующих именам(кодам) блоков. Почитав и проанализировав некоторые материалы, могу сказать, что моя задача точно решаема по крайней мере на Visual Basice, FoxPro и AutoLISPe.
Но, к сожалению, я не владею на данный момент ни одним из вышеназванных.
Но у  меня есть программа на AutoLISPe(BlCount), которая подсчитывает количество блоков на экране и записывает их в excel?евсий файл, но в виде двух столбцов ? имя и количество.
Вот если бы заставить вставлять данные о количестве в столбец ?количество? готовой таблицы напротив соответствующего кода(являющегося именем блока)?.
На сайте 3dcad.ru есть упоминание о ?Волшебной спецификации?, судя по описанию это то, что нужно мне и вам, но, я думаю, за деньги(тот, кто рекламировал эту вещь, мне на письмо отвечать не собирается, ну, что ж, придется обойтись без его чудесной спецификации).
Еще там есть примеры программирования на VB и, в частности, ?Export  from AutoCAD to Excel?. Но я рано радовался ? у файла какое-то расширение dvb, пока ничего с ним сделать не удалось.
Вот так вкратце выглядит постановка моей задачи; когда-то на одном из сайтов по альтернативной энергетике была опубликована ?задача МГ?, давайте назовем в шутку(ведь она помогает в работе)эту задачу ?задачей SW? да и решим ее.
Возможно, не один я, а кто-нибудь еще извлечет для себя пользу и получит удобное средство для выполнения своих работ в AutoCADe.  Чему я буду искренне рад.
Пишите на aww@pisem.net, в форум (если меня не заблокировали навечно), высказывайте мысли, идеи, замечания, предложения. Для чего, собственно, этот форум и создан.
С уважением ко всем
Serg7

Re: Связывание AutoCAD R14 c Excel

Внимательно походи по форуму.

Re: Связывание AutoCAD R14 c Excel

И что? Найдешь волшебную спецификацию? Я сюда не ходить пришел, а добиться конкретных результатов для решения поставленной задачи. Зачем же так формально отвечать на конкретные вопросы, тем более, что Вы, видимо, человек, разбирающийся в существе вопроса.
Жду более конструктивных предложений.

Re: Связывание AutoCAD R14 c Excel

Нет, найдешь ссылку на пример получения в Exele данных блоков из чертежа.
P.S. Зачем же так формально относиться к советам, тем более Вы сюда пришли добиться конкретных результатов.

Re: Связывание AutoCAD R14 c Excel

> Serg7
Если задача посчитать только блоки (и информацию из атрибутов), то она решена в стандартной поставке акада.
в Express Tools'ах.

Re: Связывание AutoCAD R14 c Excel

> Serg7
Вот наскреб тебе всяко разно по самому минимуму
Сохрани как файл .lsp
Надеюсь знаешь как грузить, файл Эксель сохранишь вручную

;Начало кода:
(defun count-blocks (/ acsp adoc bname bname_list lay_len ss tmp)
  (vl-load-com)
  (setq    adoc (vla-get-activedocument
           (vlax-get-acad-object)
         )
    acsp (vla-get-block
           (vla-get-activelayout adoc)
         )
  )
(command "_.zoom" "_e")
(setq ss (setq ss (ssget "_X" '((0 . "INSERT")))))
(vlax-for a (vla-get-activeselectionset adoc)
  (if (wcmatch (vla-get-objectname a) "AcDbBlockReference*")
    (progn
    (setq bname (vla-get-name a))
    (setq bname_list (cons bname bname_list)))))
  (while (car bname_list)
  (setq tmp (list (vl-remove-if-not (function (lambda (a)
            (eq a (car bname_list )))) bname_list)))
  (setq lay_len (cons (car tmp) lay_len))
  (setq bname_list (vl-remove-if (function (lambda (a)
            (eq a (car bname_list )))) bname_list))
  (setq tmp nil))
  (setq lay_len (mapcar (function (lambda (x)
        (list (car x) (length x)))) (reverse lay_len)))        
lay_len
)
;CaLL:(count-blocks);для проверки
(defun c:cbl (/  LAYER# LIST# N ROW TOTALVALUE VALUE)
;;;; DESARROLLO DE PROGRAMAS PARA CONSTRUCCION -
;;;ALEJANDRO LEGUIZAMON - arquingeneu@gmail.com
;;; TRANSLATED WITH AUTHOR'S PERMISSION
  (vl-load-com)
  (setq    *AplExcel*      (vlax-get-or-create-object "excel.application")
    *Books-Colection* (vlax-get-property *AplExcel* "Workbooks")
    *New-Book*      (vlax-invoke-method *Books-Colection* "add")
    *Sheet-Collection*  (vlax-get-property *New-Book* "Sheets")
    *Sheet#1*          (vlax-get-property *Sheet-Collection* "Item" 1)
    *excell-cells*      (vlax-get-property *Sheet#1* "Cells")
  )
  (vla-put-visible *AplExcel* :vlax-true)
  (setq row 4)
  (setq n 0)
  (setq totalvalue 0)
(princ "\nПодсчет количества блоков в рисунке  ")
(setq list# (count-blocks))
  (setq totalvalue (apply '+ (mapcar 'cadr list#)))
  (repeat (length list#)
    (setq value (cadar list#))
    (vlax-put-property
      *excell-cells*
      "Item"
      row
      2
      (vl-princ-to-string value)
    )
    (setq layer# (caar list#))
    (vlax-put-property
      *excell-cells*
      "Item"
      row
      1
      (vl-princ-to-string layer#)
    )
 (setq list# (cdr list#))
    (setq n (+ n 1))
    (setq row (+ row 1))
  )
(setq row (+ row 1))
(vlax-put-property
      *excell-cells*
      "Item"
      row
      1
      (vl-princ-to-string "ВСЕГО")
    )
(vlax-put-property
*excell-cells*
      "Item"
      row
      2
      (vl-princ-to-string totalvalue)
    )
  (vlax-put-property
    *excell-cells*
    "Item"
    1
    1
    (vl-princ-to-string
      " Written by  ALEJANDRO LEGUIZAMON -  http://arquingen.tripod.com.co"
    )
  )
(vlax-put-property
    *excell-cells*
    "Item"
    2
    1
    (vl-princ-to-string
      (strcat "ПОДСЧЕТ КОЛИЧЕСТВА БЛОКОВ В ФАЙЛЕ: " (getvar "dwgprefix"))
    )
  )
  (vlax-put-property
    *excell-cells*
    "Item"
    3
    1
    (vl-princ-to-string "ИМЯ БЛОКА")
  )
  (vlax-put-property
    *excell-cells*
    "Item"
    3
    2
    (vl-princ-to-string "КОЛ-ВО")
  )
                        
  (vlax-release-object *excell-cells*)
  (vlax-release-object *Sheet#1*)
  (vlax-release-object *Sheet-Collection*)
  (vlax-release-object *New-Book*)
  (vlax-release-object *Books-Colection*)
  (vlax-release-object *AplExcel*)
)
(c:cbl)
(princ)
;Окончание кода

~'O'~

Re: Связывание AutoCAD R14 c Excel

есть такая программа, которая делает спецификацию с ценами и количеством на основании чертежа и прайса компании, естественно надо будет переделывать под Ваши параметры.
Могу взяться за вознаграждение, если интересно - на е-майл.

Re: Связывание AutoCAD R14 c Excel

Serg7 пишет:

Недавно вот озаботился проблемой автоматического заполнения таблицы Excel по мере рисования в ACADe определенных объектов...

[rus]Zachem tak slozhno....?
(Hotja, mozhet vam nuzhny dannie imenno v Eksele)
Eta zadacha,dovol'no neploho, reshena v[/rus] ADT. При желании, там ножно "прикрепить" данние практически к любому обекту (примитиву) и затем вывести их в виде таблицы в самом ADT. [rus]Pri chem eti dannie imejut obratnuju svjaz.
Chto kasaetsa prosheta kolichestva vhozhdenij bloka...to ih vrode mozhno poshitat' pri pomoshi[/rus]"extract attributes" и результат сохранить либо в екселе (взаимосвязи нет) либо в CAD[rus]ovskoj tablice.
S uvazheniem![/rus]

Re: Связывание AutoCAD R14 c Excel

> Papila
Я постарался ответить именно на конкретный вопрос.
Думаю ваш комментарий относится к другой теме,
IMHO, естественно
~'O'~

Re: Связывание AutoCAD R14 c Excel

> Олег(jr.)
Думаю вы правы...)

Re: Связывание AutoCAD R14 c Excel

Спасибо, Олег!
Я думал, что все мои темы закрыты и стерты, а тут на тебе - целую программу мне подарили! Только просьба к тебе, Олег, не мог бы теперь подсказаать мне, что эта программа будет делать, как правильно загрузить и стартовать твой файл, если не трудно, то на e-mail aww(собака)inbox.ru
У меня, кстати, старинный AutoCADR14(зато быстрый). В нем будет работать?
С уважением
Сергей

Re: Связывание AutoCAD R14 c Excel

> Serg7
IMHO к сожалению все, что относится к ActiveX в lisp (а именно это используется для стыковки с Excel)работает только в среде VisualLisp (т.е. только начиная с AutoCAD 2000). Для AutoCAD R14 был VitalLisp (это дополнительное приложение к нему). Но жив ли он еще и где его можно взять - не подскажу.

Re: Связывание AutoCAD R14 c Excel

В закромах накопал...
Есть некий "Visual LISP™ for AutoCAD® Release 14".

Re: Связывание AutoCAD R14 c Excel

{ casino riverwind }
{ download editor soft }
{ poker }
{ online poker }

Re: Связывание AutoCAD R14 c Excel

На афтокаде14 просто не нада работать - вот и всё!!!
А в 2007 можно всё реализовать очень красиво:
а ехель файле хранить даже все параметры геометрические столов, оттуда же их читать и рисовать проям по рамерам в блок с кодовым именем, потом эти блоки считать и в тот же файл в теже записи где все параметры записывать количества этих блоков
и делать это всё нада через ADODB - будет реально бысрее в разы и выборка будет работать и даже иметь установленный ехель не нада...

Re: Связывание AutoCAD R14 c Excel

9cLhC5 bnnLst19hdY6llAd3fg6