Возможно ли сохранить свойства примитива и его модификации в отдельный файл с расширением, например, .txt?Возможно. Хотя нужно понимать какие именно свойства. Лучше всего (на мой взгляд) сохранять в формате DXF (https://ru.wikipedia.org/wiki/DXF). Он хранить все свойства примитива.
Возможно. Хотя нужно понимать какие именно свойства. Лучше всего (на мой взгляд) сохранять в формате DXF. Он хранить все свойства примитива.
Хотя нужно понимать какие именно свойства.
Отлично, у Вас случайно нет примера как это делается?А вот это интересный вопрос. В AutoCAD .NET API нет средств работы с DXF. Но много лет назад я делал такой код, использующий вызов P/Invoke acdbEntGet (это функция из ObjectARX):
Можно пойти и другим путём - использование Reflection
но можно ли через него получить все свойства?Проблема может возникнуть только для тех свойств, которые реализованы в виде методов. Тут нужно будет знать какие параметры передавать.
Можно через Reflection получить расширенные данные?Можно. Но как раз для получения расширенных данных Reflection совершенно не нужен. Для получения расширенных данных есть свойство XData и метод GetXDataForApplication (если нужно получить расширенные данные для конкретного имени приложения).
Примеры здесь:Спасибо.
Тут нужно будет знать какие параметры передавать.Если честно, немного не понимаю.
Если честно, немного не понимаю.Самый простой пример. Свойство с именем XData и метод с именем GetXDataForApplication. Свойство вызывается по имени, а методу нужно передать еще и параметр (в данном случае строковый параметр с именем приложения).
Самый простой пример. Свойство с именем XData и метод с именем GetXDataForApplication. Свойство вызывается по имени, а методу нужно передать еще и параметр (в данном случае строковый параметр с именем приложения).Ну более или менее понятно. Еще вопрос. А возможно ли сделать по типу программы с кругом, который рисовался после действия пользователя?
А возможно ли сделать по типу программы с кругом, который рисовался после действия пользователя?Переведи.
Поэтому уточни какова цель записи свойств примитива в текстовый файл.
Переведи.
Мне нужно что бы свойства примитива, а именно координаты, цвет, длина, ширина и т.д. записывался отдельно в файл и его можно было просто прочитать.Ты видимо не понимаешь, что указанные тобой свойства есть далеко не у всех примитивов.
Просто Вы уже приводили пример, когда круг появлялся во время работы пользователя. С этой программой нужно сделать нечто похожее. Что бы не было необходимости каждый раз указывать примитив, свойства которого нужно сохранить.Извини, но я снова ничего не понял. Потрудись, пожалуйста, изложить свою мысль таким образом, чтобы я понял чего ты добиваешься. Объединить ту программу и вывод свойств примитива во внешний файл в фоновом режиме не получится. Как ты себе это представляешь? Программа сканирует весь чертеж и в фоне выводит свойства всех примитивов? Тогда AutoCAD будет постоянно занят этой работой и пользователь не сможет с ним работать. По длительности это будет значительно (в разы, если не в десятки раз) дольше, чем операция сохранения файла.
Извини, но я снова ничего не понял.
Извини, но дальше я буду отвечать только на четко поставленные тобой вопросы, так как объяснить что ты хочешь так, чтобы я это понял, ты не можешь. Соответственно я не могу тебе помочь. Увы.
Можно ли использовать ManagementEventWatcher, что бы отследить событие модификации объекта?Нет. Для этой цели есть другие события в AutoCAD .NET API. Посмотри в ObjectARX SDK Documents: Autodesk.AutoCAD.DatabaseServices Namespace > DBObject Class > DBObject Events
Нет. Для этой цели есть другие события в AutoCAD .NET API. Посмотри в ObjectARX SDK Documents: Autodesk.AutoCAD.DatabaseServices Namespace > DBObject Class > DBObject Events
Ну и описание событий класса Database:
Возможно ли в нем использовать событие модификации объекта, вместо команды ?Для чего? Я снова ничего не понял. Тебе нужно вызвать метод Dump() в событии модификации объекта? Так вызови его.
Самый простой пример. Свойство с именем XData и метод с именем GetXDataForApplication. Свойство вызывается по имени, а методу нужно передать еще и параметр (в данном случае строковый параметр с именем приложения).
Так будет выглядеть проверка расширенных свойств?Этот код проверяет наличие расширенных данных (Extended Data) . Что такое "расширенные свойства" и что ты под ними подразумеваешь я не знаю. Надеюсь, что мы говорим об одном и том же.
Этот код проверяет наличие расширенных данных (Extended Data)
Можно ли получить dxf/dwg представление объекта, сохранить его на диск и потом ....
Хотелось бы выбрать некоторые объекты (Довольно много и в разнобой), сохранить их в виде dxf/dwg и при обработке сверяться с этим набором, т.е.К тому, что сказал Дима_, добавлю, что я бы предпочел бы использовать метод Database.WblockCloneObjects
Database.WblockCloneObjectsА с этим не получилось =( Вываливался в эксепшен или в сохраненном чертеже было пусто.
Произвольное имя файла, что бы не проверять на совпаденияPath.GetRandomFileName() (https://msdn.microsoft.com/ru-ru/library/system.io.path.getrandomfilename%28v=vs.110%29.aspx)
спасибоВ 7-й строке используешь переменную, определённую в 6-й, которая закомментирована.
В 7-й строке используешь переменную, определённую в 6-й, которая закомментирована.Это же выдранный из контекста фрагмент , закоментированные строчки вставил для понятности кода.
А с этим не получилось =( Вываливался в эксепшен или в сохраненном чертеже было пусто.При использовании Database.WblockCloneObjects следует сначала создавать Database. Впрочем возможно причина в другом.