• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Сохранение reference

Автор x3m, 15.12.11, 16:51:02

« назад - далее »

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

x3m

Доброго времени суток!
Компас 3Dv13 (вопрос касательно 2Д)
Сохраняю чертеж и reference в отдельный файл. Открываю чертеж и загружаю reference. Пытаюсь удалить объекты из чертежа по их reference, но не получается. Как я понял reference раздается каждому объекту динамически при открытии чертежа. Если постаянные ссылки на объект? (которые можно сохранить в отдельный файл и получить reference для последуещего удаления объектов.)

Заранее благодарю за помощь!

Открыли чертеж получили его текущий указатель (reference) и удалили, тот reference, что вы записали, умер при закрытии документа.

chelkar

Попробуйте записать указатели на объекты в пользовательское хранилище через IUserDataStorage.
То что будет записано в поле "Комментарий" послужит ключом для поиска после закрытия и повторного открытия документа.
Список интерфейсов можно посмотреть в презентации номер 3, вот тут http://forum.ascon.ru/index.php/topic,20051.msg128438.html#msg128438

Указатели вещь динамическая, и представляет ценность в реальном режиме времени пока жив документ в физической памяти компьютера, проще свои индексы для поиска поставить, в любом случае документ будет открываться, по реальному пути к файлу.

chelkar

Да, указатели вещь динамическая, так тем и хорош IUserDataStorage. Он восстановит указатели после открытия документа.

x3m

Цитата: chelkar от 15.12.11, 17:22:54
Попробуйте записать указатели на объекты в пользовательское хранилище через IUserDataStorage.
То что будет записано в поле "Комментарий" послужит ключом для поиска после закрытия и повторного открытия документа.
Список интерфейсов можно посмотреть в презентации номер 3, вот тут http://forum.ascon.ru/index.php/topic,20051.msg128438.html#msg128438
Изучаю

Цитата: Sabahs от 15.12.11, 17:45:35
Указатели вещь динамическая, и представляет ценность в реальном режиме времени пока жив документ в физической памяти компьютера, проще свои индексы для поиска поставить, в любом случае документ будет открываться, по реальному пути к файлу.
Хорошо. Просто допустим в автокаде указатели тоже динамические, но также там у объектов есть свойство handle это постоянная ссылка на объект.
По handle можно после открытия чертежа найти objectID (reference). Как это все реализованно в компасе?


Можно немного конкретики, что и где нужно найти?

x3m

Пишу свою библиотеку.

Библиотека создает примитивы (линии, тексты). Я записываю reference(примитивов) в масив. Далее сохраняю чертеж. И сохраняю reference в файл. После чего открываю чертеж и хочу удалить(программно) примитивы (линии, тексты) который я создал. Я их пытаюсь удалить по их reference (я беру их из сохраненного файла), но у меня ничего не получается.
Как реализовать это в компасе?

PS

Это можно сделать как минимум тремя способами:
1. Объединить созданные Вами объекты в макроэлемент и сохранить в нем признак (идентификатор) этого макро.
Макроэлемент может состоять и из одного элемента. Обычно так и делается практически во всех библиотеках Компаса для дальнейшей обработки этого макро.
2. Объединить созданные Вами объекты в именованную группу. Потом искать по имени группы.
3. Добавить к объекту атрибут. Потом искать по этому атрибуту.

Так, как Вы делаете у Вас не получится. Возможно вариант, предложенный chelkar с IUserDataStorage будет самым правильным, хотя возможны и другие, о некоторых PS Вам рассказал.

x3m

Спасибо за помощь буду пробовать!