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

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

Высота 3d тела с динамической связью из Excel

Ответ
Поиск в этой теме
Непрочитано 01.01.2021, 19:28
Высота 3d тела с динамической связью из Excel
Djo
 
Регистрация: 19.05.2020
Сообщений: 18

Подскажите, есть ли возможность в Autocad, изменять высоту простого 3D тела (прямоугольник) по средством изменения числового значения в Excel.
Просмотров: 8161
 
Непрочитано 04.01.2021, 22:38
#21
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,097


Цитата:
Сообщение от Djo Посмотреть сообщение
Autocad, изменять высоту простого 3D тела (прямоугольник) по средством изменения числового значения в Excel.
Цитата:
Сообщение от Djo Посмотреть сообщение
Есть таблица excel, в ней значения, которые будут меняться, надо что бы в соответствии с числовым значением менялась высота столбика на модели. Если есть идеи, где и как это осуществить, с удовольствием выслушаю)
Именно 3д? Именно 3д тело?
На вба несложно передать параметры для динамического блока. Кроме переменных, надо задать точку вставки.
Незнаю, в чем проблема с 3д, как альтернатива - плоские примитивы.
v.psk вне форума  
 
Непрочитано 05.01.2021, 10:43
#22
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,492


Вариант решения.

Несложная часть.
1. Делаем параметрический объект, состоящий из полилинии (квадрат) и команды выдавливания на высоту (H).
2. Связываем параметр высоты выдавливания (H) со значением некоторой экселевской ячейки на каком-то листе в каком-то файле.

Сложная часть:
как узнать, что нужно обновить параметрический объект, если ячейка с высотой выдавливания (H) в файле exel была изменена и пора пересоздать бокс с новой высотой?

Можно, конечно, сделать процедуру принудительного обновления объекта, чтобы по нажатию на некоторую кнопку можно было перегенерировать выбранные объекты. Но это как-то не красиво.

Последний раз редактировалось nickname2019, 05.01.2021 в 10:58.
nickname2019 вне форума  
 
Автор темы   Непрочитано 11.01.2021, 15:20
#23
Djo


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


----- добавлено через ~11 мин. -----
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Несложная часть.
1. Делаем параметрический объект, состоящий из полилинии (квадрат) и команды выдавливания на высоту (H).
2. Связываем параметр высоты выдавливания (H) со значением некоторой экселевской ячейки на каком-то листе в каком-то файле.
Если вы мне расскажите эту часть, а Сергей812, расскажет как настроить обновление по изменению события на листе, то я так понимаю, у меня все получится)

Последний раз редактировалось Djo, 11.01.2021 в 15:31.
Djo вне форума  
 
Непрочитано 11.01.2021, 15:34
#24
румата


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


Цитата:
Сообщение от Djo Посмотреть сообщение
Значение ячейки в ексель равно высоте 3d тела (параллелепипед), может быть положительным и отрицательным. Изменение в ячейке онлайном отображаются на модели.
Еще нужно каким-то образом связать ячейку с id объекта чертежа. Например выгрузить идентификатор из автокада в соседнюю ячейку экселя. Иначе будет не известно с каким параллелепипедом или основанием в виде полилинии связана ячейка.

----- добавлено через ~3 мин. -----
Вообще ничего особо сложного в этом не видится. Думаю можно одним VBA экселя обойтись.
румата вне форума  
 
Непрочитано 11.01.2021, 15:47
#25
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,492


Цитата:
Сообщение от румата Посмотреть сообщение
Еще нужно каким-то образом связать ячейку с id объекта чертежа. Например выгрузить идентификатор из автокада в соседнюю ячейку экселя. Иначе будет не известно с каким параллелепипедом или основанием в виде полилинии связана ячейка.
Имхо, это не айс. Id объекта может поменяться при переоткрытии/редактировании файла. Нужно сохранять как имя файла dwg, так и имя объекта в базе этого файла в текстовом формате (которое не меняется).

Но мне больше нравиться связать акадовский объект с ячейкой в экселе. Может, хранить время сохранения экселевского файла в объекте и при несовпадении времени модификации объекта и экселевского файла обновлять объект?
nickname2019 вне форума  
 
Непрочитано 11.01.2021, 15:51
#26
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,097


Проще удалять и создавать заново обьекты в автокадовском вба по таблице на листе эксель.
v.psk вне форума  
 
Непрочитано 11.01.2021, 15:54
#27
румата


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


Цитата:
Сообщение от v.psk Посмотреть сообщение
Проще удалять и создавать заново обьекты в автокадовском вба по таблице на листе эксель.
Именно так и нужно делать. Дешево и сердито. Одно остается не ясным - где брать основу для создания нового солида после обновления данных в ячейке?
румата вне форума  
 
Непрочитано 11.01.2021, 15:57
#28
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,097


Цитата:
Сообщение от v.psk Посмотреть сообщение
параметры для динамического блока. Кроме переменных, надо задать точку вставки.
Я чуть раньше предложил вариант с дин. Блоками.
Определение дин блока остается даже после удаления всех вхождений
v.psk вне форума  
 
Непрочитано 11.01.2021, 15:59
| 1 #29
румата


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


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Id объекта может поменяться при переоткрытии/редактировании файла.
При переоткрытии или редактировании других объектов чертежа id не меняется. На то он и id.
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Нужно сохранять как имя файла dwg, так и имя объекта в базе этого файла в текстовом формате (которое не меняется).
Не понял зачем это нужно?
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Может, хранить время сохранения экселевского файла в объекте и при несовпадении времени модификации объекта и экселевского файла обновлять объект?
Можно, только сомневаюсь, что высота выдавливания хранится в объекте твердого тела.
румата вне форума  
 
Непрочитано 11.01.2021, 16:04
#30
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,492


Цитата:
Сообщение от румата Посмотреть сообщение
При переоткрытии или редактировании других объектов чертежа id не меняется. На то он и id.
http://docs.autodesk.com/ACDMAC/2011...bObjectId.html

"If you need to save an object identifier out to an external file (that is, not a DWG or DXF file), then you cannot use object IDs. The actual value in the object ID (its a memory address) is not the same from session to session."

Если вам нужно сохранить идентификатор объекта во внешний файл (то есть не в файл DWG или DXF), то вы не можете использовать идентификаторы объектов. Фактическое значение в идентификаторе объекта (его адрес памяти) не является одинаковым от сеанса к сеансу.

"If you are working with multiple drawing files, then you need to save the drawing file name as well as the handle, since handle values are not unique across multiple drawings."
Если вы работаете с несколькими файлами чертежей, то вам необходимо сохранить имя файла чертежа, а также дескриптор (handle, а не Id), поскольку значения дескриптора не являются уникальными для нескольких чертежей.

P.S. Можно сохранять ID объекта и это будет какое-то время работать, пока случайным образом он не поменяется - тогда будет непонятный крах акада, который трудно будет выявить.


Цитата:
Можно, только сомневаюсь, что высота выдавливания хранится в объекте твердого тела.
Я имел ввиду замутить какой-нибудь параметрический объект программно.

Последний раз редактировалось nickname2019, 11.01.2021 в 16:10.
nickname2019 вне форума  
 
Непрочитано 11.01.2021, 16:05
#31
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,097


Djo, посмотрите как пример связи - ссылку (xls-dwg, dvb). Это не эталон конечно, подглючивает сильно, но может быть поможет выбрать какой-либо путь. ссылка
v.psk вне форума  
 
Непрочитано 11.01.2021, 16:10
#32
румата


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


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
http://docs.autodesk.com/ACDMAC/2011...bObjectId.html

"If you need to save an object identifier out to an external file (that is, not a DWG or DXF file), then you cannot use object IDs. The actual value in the object ID (its a memory address) is not the same from session to session."

Если вам нужно сохранить идентификатор объекта во внешний файл (то есть не в файл DWG или DXF), то вы не можете использовать идентификаторы объектов. Фактическое значение в идентификаторе объекта (его адрес памяти) не является одинаковым от сеанса к сеансу.

"If you are working with multiple drawing files, then you need to save the drawing file name as well as the handle, since handle values are not unique across multiple drawings."
Если вы работаете с несколькими файлами чертежей, то вам необходимо сохранить имя файла чертежа, а также дескриптор (handle, а не Id), поскольку значения дескриптора не являются уникальными для нескольких чертежей.
Хорошо, тогда нужно заново считать идентификаторы и высоты в файл экселя при поворном открытии или пересохранении чертежа. Если, конечно, порядок ячеек с высотами не строго фиксирован.
румата вне форума  
 
Непрочитано 11.01.2021, 16:13
#33
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,492


Цитата:
Сообщение от румата Посмотреть сообщение
Хорошо, тогда нужно заново считать идентификаторы и высоты в файл экселя при поворном открытии или пересохранении чертежа. Если, конечно, порядок ячеек с высотами не строго фиксирован.
Поправил свой прошлый ответ подробнее #30. Имхо, самый оптимальный путь - мутить код в акаде и привязываться с экселю.
nickname2019 вне форума  
 
Непрочитано 11.01.2021, 16:14
#34
румата


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


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Я имел ввиду замутить какой-нибудь параметрический объект программно.
Мохно текущее значение высоты и номера ячейки прикрепить к объекту через XData с последующим булевым сложением или вычитанием объекта с собственной копией.
румата вне форума  
 
Непрочитано 11.01.2021, 16:29
#35
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,492


Цитата:
Сообщение от румата Посмотреть сообщение
Можно текущее значение высоты и номера ячейки прикрепить к объекту через XData с последующим булевым сложением или вычитанием объекта с собственной копией.
Я пытаюсь сделать технологию описания подобных объектов юзером без использования сложных языков программирования (lisp, vba, c++, net), но так как это пока в разработке (толком не работает) публиковать пока не буду. Связь с экселем тоже не реализована.
Могу связать с параметрами из текстового файла, но это не айс. И автообновление не будет работать тоже.
nickname2019 вне форума  
 
Непрочитано 11.01.2021, 16:39
#36
румата


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


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Я пытаюсь сделать технологию описания подобных объектов юзером без использования сложных языков программирования (lisp, vba, c++, net)...
Вообще работать с XData кое как можно через Express Tools. Но связать их с Excel без использования ЯП лично мне не представляется возможным.
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Могу связать с параметрами из текстового файла, но это не айс. И автообновление не будет работать тоже.
Может просто плагин с GUI по работе с расширенными данными для пользователя написать?
румата вне форума  
 
Непрочитано 11.01.2021, 16:52
#37
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,492


Цитата:
Сообщение от румата Посмотреть сообщение
Может просто плагин с GUI по работе с расширенными данными для пользователя написать?
XDATA - достаточно ограниченная технология. Насколько я понимаю, даже длинный путь к файлу туда сохранить не выйдет (вроде было ограничение на длину сохраняемой строки).
Меня не устраивает стандартный функционал работы с динамическими блоками, поэтому я решил все под себя переделать (чтобы можно было вытягивать полилинии внутри динамических блоков и не только). Пока работает плохо.
nickname2019 вне форума  
 
Непрочитано 11.01.2021, 17:20
#38
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
чтобы можно было вытягивать полилинии внутри динамических блоков и не только). Пока работает плохо.
неудивительно - учитывая, что сами динблоки реализованы через костыли анонимных блоков на базе обычных блоков)
Сергей812 вне форума  
 
Непрочитано 11.01.2021, 17:50
#39
Oleg T


 
Регистрация: 27.12.2011
Сообщений: 1,458


Не в курсе, как организовывать связь с Excel (не пользовался), но алгоритм для када накидать можно, по-моему, и довольно простой.
Есть блок-кубик (в общем случае 1х1х1), простой, не динамический.
У всех блоков заданы масштабы X-Y-Z. Точки вставки тоже есть, соответственно. И угол поворота, если надо. Идентификатор в таком случае не важен,
нужно только то, о чем уже сказано.
Меняете масштаб по Z в екселе, через организацию связи находятся соответствующие блоки, модифицируются, а новые солиды (если нужны именно они) тут построить по приведенным и найденным данным вполне можно (лисп и т.п.).
Именно новые, старые удаляются.
Думаю, и с полилиниями и их высотами примерно то же самое можно сделать.
Как-то так.
Oleg T вне форума  
 
Непрочитано 11.01.2021, 18:06
#40
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,492


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
неудивительно - учитывая, что сами динблоки реализованы через костыли анонимных блоков на базе обычных блоков)
Поэтому, я не стал заморачиваться использованием динамических блоков, а решил делать обычные блоки, а параметры на основании которых блок пересоздается храню в обычных атрибутах блока.
Большое количество динамических блоков в чертеже = ужасные тормоза (так было лет пять назад, проверять есть ли тормоза но новых версиях не хочу). Я с динамическими блоками завязал.
nickname2019 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Высота 3d тела с динамической связью из Excel

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как построить 2D разрез 3D тела в пространстве модели в AutoCAD2018 mechanical? thevsh Вертикальные решения на базе AutoCAD 3 25.05.2018 10:56
Не могу изменить форму 3d тела. evilmaxx AutoCAD 3 15.09.2013 16:55
Не получается объединить два простых 3D тела Kandebr AutoCAD 4 30.03.2011 11:01
LISP. Вывод объема 3D тела. Scorpio_1986 LISP 3 27.02.2010 13:02
Нагрузки на 3D тела в SCADe как прикладывать Comunikabel SCAD 20 20.10.2006 07:27