| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
07.04.2021, 18:07 | #1 | |
Как получить основные свойства объекта hatch
Регистрация: 07.04.2021
Сообщений: 8
|
||
Просмотров: 8853
|
|
||||
Как вариант - расчленение штриховки.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
|
||||
Перед экспортом расчленяешь, затем экспортируешь, потом отменяешь расчленение.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
|
||||
На VBA это можно сделать только командными методами. Вообще же инструмент для этой задачи (VBA) далеко не самый лучший. На .NET было бы намного удобнее и проще.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
|
||||
Регистрация: 07.04.2021
Сообщений: 8
|
|
|||
|
||||
Регистрация: 18.11.2019
Сообщений: 1,519
|
Насколько я понимаю, на VBA можно перебрать объекты, которые составляют контуры штриховки через object.GetLoopAt, потом нужно определять тип этих объектов и каждый из этих объектов сохранить отдельно в файл, в зависимости от типа.
НО, это очень неправильный и тормозной путь. Границы штриховки могут составлять очень разные объекты, это приведет к грандиозным и ненужным затратам труда. Есть куча возможностей стандартного экспорта-импорта чертежа, проще нужную часть объектов сохранить в dxf, а потом вставить их импортом там, где нужно (dxf то наверняка любая программа поддерживает). |
|||
|
||||
Регистрация: 07.04.2021
Сообщений: 8
|
Цитата:
----- добавлено через ~14 мин. ----- Я пришёл к выводу, что могу расчленять (EXPLODE) некоторые hatch, но если их pattern name SOLID то расчленению не поддаются. Но мне всё ещё нужно как-то получить их основные свойства для отрисовки. Есть идеи как это сделать? |
|||
|
||||
Регистрация: 18.01.2021
Сообщений: 404
|
"На VBA это можно сделать только командными методами. Вообще же инструмент для этой задачи (VBA) далеко не самый лучший. На .NET было бы намного удобнее и проще."
если это выльется в перекомпиляцию решений под каждую версию КАД, то лично я попробовал бы встроить код на lisp А хоть бы и путем передачи инфы поколхозному, через внешний файл... Чесслово, постарался б избежать компилированных файлов. И вообще, vba в акаде упорно душат. Есть ли смысл писать новое под АКАД на vba? ЛИСП форева! |
|||
|
||||
Регистрация: 07.04.2021
Сообщений: 8
|
Цитата:
- GetLoopAt (отброшен, т.к. судя по всему не будет работать со сплошной заливкой) - Переписать код на .net (сейчас работаю над этим) - Пересохранять карты в dxf формат (пока отброшен, я не смог найти библиотеку, которая бы доставала hatch объекты из карты) - Расчленение hatch объектов перед эскортом (частично рабочий, но не может расчленять hatch с SOLID заливкой) |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,040
|
Offtop: Даже ручками при нормально написанном коде - дело пары минут: удалить ссылки на старые сборки акада, добавить ссылки на новые сборки и снять атрибут копирования в выходную папку в свойствах сборок. Если есть экспортирование функций или иные зависимости от версии - условная компиляция в помощь: раз в год можно добавить несколько новых строк в исходный текст программы - это не так страшно, как кажется) Тем более нет никаких гарантий в 100% работоспособности лиспов/VBA-проектов без "напильника" в следующих версиях программы.
|
|||
|
||||
Цитата:
----- добавлено через ~4 мин. ----- Цитата:
----- добавлено через ~6 мин. ----- Только учти, что в этом случае нужно использовать не COM/ActiveX модель AutoCAD (никакого преимущества по сравнению с VBA не будет), а AutoCAD .NET API.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
|
||||
Регистрация: 07.04.2021
Сообщений: 8
|
Цитата:
По поводу GetLoopAt видимо нужно более подробно поизучать, потому что всё что я пытался это что-то типа Код:
В .net проекте использую NuGet пакет AutoCAD.ObjectARX.2016 (ObjectARX .NET libraries for AutoCAD 2016, 2017) |
|||
|
||||
Регистрация: 18.11.2019
Сообщений: 1,519
|
Цитата:
Возможно, что пересохранение в dxf нужно выполнять в более "древних" версиях dxf, может быть библиотека новые версии dxf некорректно обрабатывает. Использование VBA через Hatch.NumberOfLoops и Hatch.GetLoopAt при наличии большого количества объектов может вызвать такие тормоза на этапе выполнения, что практическое использование кода будет проблематичным. |
|||
|
||||
Регистрация: 18.12.2010
Сообщений: 5,056
|
Цитата:
Цитата:
и вообще gdal умеет dwg https://gis.stackexchange.com/questi...-one-per-layer Цитата:
Последний раз редактировалось trir, 09.04.2021 в 11:23. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как изменить свойства отдельно взятого объекта в VBA? | penb | Программирование | 11 | 01.08.2011 12:24 |
Archicad. Какой plugin показывает свойства объекта? | stoper | ArchiCAD | 3 | 10.12.2010 14:18 |
Как получить свойства layout | луки | Программирование | 2 | 23.06.2009 10:50 |
Как получить свойства 3dSolid Box в VB... | 99garry | Программирование | 8 | 22.06.2009 20:58 |
Можно ли получить список реакторов объекта? | kos | Программирование | 1 | 13.01.2005 13:28 |