Получить последний добавленный примитив

Автор Тема: Получить последний добавленный примитив  (Прочитано 1059 раз)

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

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1092
  • Карма: 5
    • idea-soft.ru
  • Skype: makar_govorun
Как получить последний добавленный в базу данных примитив?

Нужно ли для этого открыть таблицу примитивов и получить доступ к последней записи
или есть свойство у Database которое возвращает последний ObjectID.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 10227
  • Карма: 1298
  • Рыцарь ObjectARX
  • Skype: rivilis
Нужно ли для этого открыть таблицу примитивов
И что же такое таблица примитивов???
есть свойство у Database которое возвращает последний ObjectID
Нет. Хотя через lisp (entlast) или ObjectARX (acdbEntLast) или P/Invoke (acdbEntLast) можно получить.
Впрочем это может быть не примитив (Entity), а объект (DBObject). Например, если последней операцией создан новый слой.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1092
  • Карма: 5
    • idea-soft.ru
  • Skype: makar_govorun
Это u
И что же такое таблица примитивов???
Вот такая
Код - F# [Выбрать]
  1.  CAD_DBS.BlockTable bt = (CAD_DBS.BlockTable)tr.GetObject(db.BlockTableId, CAD_DBS.OpenMode.ForRead);
  2.                 CAD_DBS.BlockTableRecord btr =
  3.                    (CAD_DBS.BlockTableRecord)tr.GetObject(bt[CAD_DBS.BlockTableRecord.ModelSpace], CAD_DBS.OpenMode.ForWrite, false, true);

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 10227
  • Карма: 1298
  • Рыцарь ObjectARX
  • Skype: rivilis
Вот такая
Это ты сам придумал такой термин. Вообще-то это называется Пространство модели.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Привалов Дмитрий

  • ADN Club
  • ****
  • Сообщений: 303
  • Карма: 49
Как получить последний добавленный в базу данных примитив?

Нужно ли для этого открыть таблицу примитивов и получить доступ к последней записи
или есть свойство у Database которое возвращает последний ObjectID.

А что хочешь отследить, если не секрет?

Возможно тебе стоит подписаться на событие Database.ObjectAppended Event.
The event indicates that an object has been added to the database.

или подобное, и следить за "последними объектами", может их несколько создается.

Чтобы меньше путаться с "таблицами примитивов" в коде и голове, могу посоветовать другое именование.
CAD_DBS.BlockTableRecord modelSpace =
                   (CAD_DBS.BlockTableRecord)tr.GetObject(bt[CAD_DBS.BlockTableRecord.ModelSpace], CAD_DBS.OpenMode.ForWrite, false, true);

я также использую:
paperSpace
currentSpace
block
и т.д.

btr не самое удачное название, привязанное к типу данных, который никогда не совпадает с "термином".

bt при этом норм, т.к. тип данных и "термин" совпадают. (сам предпочитаю полное название blockTable)

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1092
  • Карма: 5
    • idea-soft.ru
  • Skype: makar_govorun
А что хочешь отследить, если не секрет?
Да нет, просто выполняется команда, к примеру _offset,
и мне нужно получить доступ к смещенному объекту (если он конечно будет последним?)
ну и сделать с ним что-то, например, поместить в нужный мне слой или еще что-то.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1092
  • Карма: 5
    • idea-soft.ru
  • Skype: makar_govorun
Возможно тебе стоит подписаться на событие Database.ObjectAppended Event.
Ну вообще можно попробовать и так.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 10227
  • Карма: 1298
  • Рыцарь ObjectARX
  • Skype: rivilis
Возможно тебе стоит подписаться на событие Database.ObjectAppended Event.
Ну вообще можно попробовать и так.
Только нужно проверять, что объект (примитив) добавляется в ModelSpace
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 10227
  • Карма: 1298
  • Рыцарь ObjectARX
  • Skype: rivilis
А что хочешь отследить, если не секрет?
Да нет, просто выполняется команда, к примеру _offset,
и мне нужно получить доступ к смещенному объекту (если он конечно будет последним?)
ну и сделать с ним что-то, например, поместить в нужный мне слой или еще что-то.

Сделай по аналогии с этим: http://adn-cis.org/raschlenenie-vlozhennyix-blokov-s-pomoshhyu-.net.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение