Excel таблица в чертеже

Автор Тема: Excel таблица в чертеже  (Прочитано 13227 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн filatАвтор темы

  • ADN Club
  • ****
  • Сообщений: 263
  • Карма: 2
Excel таблица в чертеже
« : 19-05-2016, 08:13:04 »
В чертеже вставлена таблица из файла Excel. Я вижу ее содержимое в объекте:
Dim oSheet As Sheet
oSheet.CustonTables
А вот где можно найти ссылку на файл Excel? И можно ли средствами API выполнить замену этой ссылки?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Excel таблица в чертеже
« Ответ #1 : 19-05-2016, 14:04:14 »
Так как никто с Invent'оровцев не откликается, то я попробую вставить свои 5 копеек.
Я проанализировал методы CustomTable и ничего подобного на путь к Excel-файлу не нашёл. Есть свойство TableSource, позволяющее понять что исходник - файл Excel. Есть метод AddLink(string FullFileName), который (IMHO) позволяет указать какой файл будет связан с этой таблицей. Есть метод Update, который (IMHO) обновляет таблицу.
Чего я не могу проверить, так это нет ли пути к Excel-файлу в атрибутах (свойство AttributeSets) - вполне возможно, что один из атрибутов указывает на путь к файлу Excel.

Если ответ тебя не удовлетворил - могу отправить твой вопрос в ADN DevHelp.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн R.I.Chernov

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
Re: Excel таблица в чертеже
« Ответ #2 : 19-05-2016, 16:35:56 »
Никогда не вставлял в чертёж эксель, в 2013 таблица плохо отрисовывается. Не подскажете, как именно вы ее вставили? Быть может таблица есть в коллекции встроенных объектов?
В программировании я новичок...но ненадолго! ;)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Excel таблица в чертеже
« Ответ #3 : 19-05-2016, 16:58:31 »
Вручную как-то так: http://www.cad.ru/ru/forum/?PAGE_NAME=read&FID=20&TID=7721
А программно - объект CustomTables.AddExcelTable(...)
« Последнее редактирование: 19-05-2016, 19:37:30 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Excel таблица в чертеже
« Ответ #4 : 19-05-2016, 20:14:55 »
А вот где можно найти ссылку на файл Excel?
Ну филат смотрим в
Document.ReferencedOLEFileDescriptors(1)
или по локальнее
Document.ActiveSheet.CustomTables(1).ReferencedOLEFileDescriptors
там все твои ссылки на посторонние файлы

И можно ли средствами API выполнить замену этой ссылки?
Не получится, можно только удалить старую таблицу и воткнуть новую:
CustomTables.AddExcelTable

Оффлайн R.I.Chernov

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
Re: Excel таблица в чертеже
« Ответ #5 : 19-05-2016, 20:38:55 »
Ну филат смотрим в
Document.ReferencedOLEFileDescriptors(1)

Удобнее использовать ReferencedOLEFileDescriptors.ItemByName().
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Excel таблица в чертеже
« Ответ #6 : 19-05-2016, 20:42:05 »
Удобнее использовать ReferencedOLEFileDescriptors.ItemByName().
У филата понятие "удобство при программировании" весьма своеобразное :)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Excel таблица в чертеже
« Ответ #7 : 19-05-2016, 22:40:31 »
или по локальнее
Document.ActiveSheet.CustomTables(1).ReferencedOLEFileDescriptors
там все твои ссылки на посторонние файлы
Я нашёл у CustomTable свойство ReferencedDocumentDescriptor, но не нашёл ReferencedOLEFileDescriptors. Это у тебя опечатка или я не туда смотрел?



Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Excel таблица в чертеже
« Ответ #8 : 20-05-2016, 06:00:30 »
Это у тебя опечатка или я не туда смотрел?
Да я лепил ответ по хелпу уже ночью, видимо опечатался,
ReferencedOLEFileDescriptors - на уровне документа
ReferencedDocumentDescriptor - в CustomTable (Хэлп пишет: Property that returns either a DocumentDescriptor object (for Inventor references) or a FileDescriptor object (for foreign file references). The property returns Nothing if no links have been specified for the table.)

Но филат бы там мимо не прошел бы :)

Оффлайн filatАвтор темы

  • ADN Club
  • ****
  • Сообщений: 263
  • Карма: 2
Re: Excel таблица в чертеже
« Ответ #9 : 20-05-2016, 10:35:56 »
OLE - ссылка это вторичный элемент - его может и не быть. Если удалить ссылку в браузере чертежа, то таблица никуда не девается и связь с excel файлом сохраняется...
Замену, конечно, можно реализовать через удаление старой таблицы и AddExcelTable новой. Но для меня остается проблемой получения адреса таблицы, при отсутствии OLE - ссылки!?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Excel таблица в чертеже
« Ответ #10 : 20-05-2016, 10:56:05 »
Но для меня остается проблемой получения адреса таблицы, при отсутствии OLE - ссылки!?
Что возвращает ReferencedDocumentDescriptor для  CustomTable такой таблицы?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн filatАвтор темы

  • ADN Club
  • ****
  • Сообщений: 263
  • Карма: 2
Re: Excel таблица в чертеже
« Ответ #11 : 20-05-2016, 11:02:15 »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Excel таблица в чертеже
« Ответ #12 : 20-05-2016, 11:06:52 »
Ага. Значит оно не пустое. Приведи это значение к FileDescriptor и получи при помощи метода FullFileName путь к файлу.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Excel таблица в чертеже
« Ответ #13 : 20-05-2016, 11:16:32 »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн filatАвтор темы

  • ADN Club
  • ****
  • Сообщений: 263
  • Карма: 2
Re: Excel таблица в чертеже
« Ответ #14 : 20-05-2016, 13:21:11 »
Увы, но приведение к oDesc = CType(oCTable.ReferencedDocumentDescriptor, FileDescriptor) приводит к ошибке, при отсутствии OLE-ссылки.
Также не получается реализовать замену при отсутствующей OLE-ссылки.
Прийдется, наверное, всетаки реализовывать через удаление...