Стоит из названия убрать "для AutoCAD 2016" и может даже закрепитьСогласен.
1. Чтобы открыть проект по ссылкам нужен VS 2015 (2010)? У меня 2017 - не открывается.Для какой версии AutoCAD? VS 2017 без установленного VS 2015 не подойдёт.
2. Для каждой версии автокада (2010-2018) должна собираться отдельная библиотека? Универсальной сделать невозможно?Универсальной сделать невозможно. Для версии 2010...2012,2013...2014,2015...2016,2017,2018 нужны отдельные модули.
3. Ко второму пункту - от разрядности платформы тоже зависит? 32 или 64Да. Т.е. количество модулей увеличивается в два раза.
Для какой версии AutoCAD? VS 2017 без установленного VS 2015 не подойдёт.Получается, что если мне нужно иметь библиотеки для 2010-2018 автокадов, то у меня должны быть установлены VS 2010, 2012, 2013, 2015? Какой ужас)) С .Net все проще конечно
Будет ли правильным оставить AnyCPU, добавить ссылку на библиотеку OPM для моей платформы (х64), а уже при использовании моего проекта в процессе загрузки в AutoCAD предусмотреть вариант загрузки библиотеки OPM (x68 или x64)Думаю, что это будет неправильно. По сути здесь такая же ситуация, как и с AutoCAD COM/ActiveX.
Александр, я перестроил оба этих проекта у себя, получил нужные DLL и загрузил asdkOPMNetSample.dll в C3D2018.Так как архив с проектом скачан из интернета, то у построенной библиотеки скорее всего установился идентификатор "заблокировано". Откройте свойства dll файла и снимите блокировку
По идее при выборе на чертеже отрезка в его свойствах должно появиться пользовательское свойство "My integer property"... Однако у меня, видимо, загрузка модуля не происходит - я добавил в метод Initialize вывод в командную строку, чтобы отсеживать этапы загрузки, но не отрабатывается даже первая строка.
Во время загрузки DLL ошибок и сообщений нет.
Приходится открывать файл arx-config.props в текстовом редакторе и править путь к каталогу Object ARX:У тебя на картинке моя настройка пути к ObjectARX SDK - она у меня не на стандартном месте. Так что действительно нужно править конфигурационный файл.
Вообще-то я не очень понимаю зачем тебе нужно перекомпилировать. В моём архиве уже готовые dll-файлы для подключения:Чтобы у меня был живой проект, с которым я могу экспериментировать )
А вот интересно, как эти свойства добавить не к классу целиком, а к одному конкретному объекту, например, в ExtensionDictionary которого есть определенные записи?у интерфейса IDynamicProperty2 есть параметр IsPropertyEnabled.
Чтобы у меня был живой проект, с которым я могу экспериментировать )Проект и так бы был "живой". Добавлял бы как добавляешь dll-файлы AutoCAD.
А вот интересно, как эти свойства добавить не к классу целиком, а к одному конкретному объекту, например, в ExtensionDictionary которого есть определенные записи?Александр Пекшев aka Modis прав. Пример есть в customPropertySample.cs:
Еще один вопрос: свои свойства можно группировать?Вообще можно, но не через OPMNetExt. Там не реализован интерфейс ICategorizeProperties, который необходим для группировки.
Вообще можно, но не через OPMNetExt. Там не реализован интерфейс ICategorizeProperties, который необходим для группировки.Александр, а вы можете помочь реализовать этот интерфейс? Я пример нашел:
Проверяй.Александр, спасибо!
Еще один вопрос назрел: можно ли как-то использовать списки в качестве данных, чтобы в свойствах выбирать из combobox?Теоретически можно. Практически - это перебор. Я туда не полезу.
Я правильно понимаю, что если в проекте OPMNetExt переопределить GetCustomPropertyCtrl, как показано по ссылке выше, то потом можно будет использовать в .NET проектах?Нет. Ты не понимаешь разницу между static и dynamic property. То что ты показал - это static property, которые содержатся в COM-обертке класса примитива и только там. А OPMNetExt оперирует dynamic property. Я кое что сделал, чтобы в OPMNetExt можно было использовать перечисления (используется интерфейс IDynamicEnumProperty). Пока работает частично. Когда закончу - выложу.
Я правильно понял что тебе нужно?Да - именно это!
И спасибо Вам огромное за Ваш труд!!!Так и быть прощаю. :)
Под 2017 так же собралась и теперь у мультилинии хотя бы базовые геометрические свойства появились, работать стало намного удобнее.Эту фразу я не понял. Ты добавил для мультилинии динамические свойства?
Коллеги, а это нормально, что после перестроения в проекте есть файлы:Абсолютно нормально. Почитай про precompiled headers.
\OPMNetExt.VC.db
\ipch\OPMNETEXT-3f21b66b\ASDKOPMNETEXT-ef141531.ipch
Соответственно 144 и 120 Мб? Причем сама итоговая DLL весит всего 54 Кб.
Абсолютно нормально. Почитай про precompiled headers.Теперь понятно :)
Я его реализовал для AutoCAD 2018Александр, здравствуйте!
Inherits IDynamicProperty2
: Classes can inherit only from other Classes..Что я не так скопировал?)Понятия не имею.
конвертировал в VB.NETНа мой взгляд - это самая главная ошибка
Если убрать эту строку работать не будет ?Не будет.
Откройте свойства dll файла и снимите блокировкуПочему-то не увидел этот параметр в палитре свойств библиотеки.
На мой взгляд - это самая главная ошибкаТут https://github.com/cyrillef/OPMNetExt вроде заявлена возможность ее использования на VB.NET, однако найти примера именно для VB я не смог.
Я взял код из примера на C#, конвертировал в VB.NET и компилятор стал подчеркивать Inherits IDynamicProperty2.Из-за того, что Вы не очень хорошо знаете VB.NET.
Ума не приложу это из-за чего?
Откройте свойства dll файла и снимите блокировкуПобедил через Assembly.UnsafeLoadFrom("asdkOPMNetExt.dll")
предварительно сделав метод PublicЗ.ы. Public не причем, сорри)
Еще проблемка возникла: как можно реализовать сохранение значения свойства для каждого экземпляра объекта ?В методе SetCurrentValueData сохраняешь значение. Где и как - это твоё дело.
А нет ли примера сохранения кастомных свойств в базу данных чертежа?Как минимум нужно понимать куда и что ты собираешься сохранять.
Можно ли будет достичь этого же результата посредством групп как таковых ?Я думаю тебе нужно начать с изучения AutoCAD. А точнее выяснить что такое группа в AutoCAD и как это реализовано, где она хранится, как в неё добавить примитивы, как извлечь информацию о примитивах в группе.