AutoCad 2012. Как отследить появление нового примитива в текущем пространстве?

Автор Тема: AutoCad 2012. Как отследить появление нового примитива в текущем пространстве?  (Прочитано 5167 раз)

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

Оффлайн bakaIIHXАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 59
  • Карма: 1
Доброго времени суток. Прошу прощения что отвлекаю Вас, уверен что и так много работы, но не могли бы Вы мне помочь. Я в затруднительном положении, не могу понять можно ли осуществить программу которую я запланировал . Суть в том, что бы в автокаде рандомно генерировались простейшие примитивы после того как в его рабочем поле что либо появлялось. Осуществлять программу пытаюсь на С# Visual Studio. Первая задумка: все зависит от рабочего поля автокада. В момент появления, на пример примитива, на поле автокада срабатывает программа и рандомно в установленную область генерирует примитив. Вторая: так же привязывается к рабочему полю, но не генерирует новый примитив, а копирует и изменят уже существующий.

Если Вас не затруднит можете ответить на пару вопросов.
1) Возможна ли программа, которая срабатывает в момент события на поле автокад. Что нужно использовать?
2) Что нужно для генерации рандомных примитивов в автокад посредством С#.


Большое Вам спасибо.

Прочитай правила и измени название темы. /* Александр Ривилис */
« Последнее редактирование: 16-09-2014, 16:15:07 от Александр Ривилис »

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Нужна помощь
« Ответ #1 : 12-09-2014, 16:34:33 »
Приветствую на форуме!
можно ли осуществить программу которую я запланировал .
Можно. Я не буду говорить о том, что сама по себе постановка задачи выглядит абсолютно бредово и лучше всего будет если ты уточнишь зачем это всё нужно.

« Последнее редактирование: 12-09-2014, 21:20:38 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Нужна помощь
« Ответ #2 : 12-09-2014, 16:39:37 »
1) Возможна ли программа, которая срабатывает в момент события на поле автокад. Что нужно использовать?
Нет такого понятия "поле AutoCAD". Есть текущий лист (Модель или один из Листов), есть текущий вид. О чем в данном случае идет речь непонятно. Один из вариантов - реагировать на добавление примитивов в  базу AutoCAD. Регистрировать факт добавления можно в событии Database.ObjectAppended. Но в этом событии не следует добавлять свои примитивы, т.к. есть большой шанс попасть в рекурсию.
2) Что нужно для генерации рандомных примитивов в автокад посредством С#.
Понять что такое это "рандомный примитив" - это в первую очередь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн bakaIIHXАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 59
  • Карма: 1
Re: Нужна помощь
« Ответ #3 : 16-09-2014, 15:59:39 »
лучше всего будет если ты уточнишь зачем это всё нужно.

Это все часть проекта, в который меня не посвящали. Необходимо что бы написанная программа при появлении какого либо объекта на текущем листе рисовала простейщий примитив, только не каждый раз один, а разные.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Нужна помощь
« Ответ #4 : 16-09-2014, 16:12:17 »
1. Напоминаю о необходимости изменить название темы. В противном случае она будет удалена.
2. Не люблю играть в конспирологические игры. Если нет нормальной постановки задачи, то решить её невозможно.
3. Задавай вопросы по принципу "один вопрос - одна тема". Например: "Как можно отследить появление появление примитива в текущем пространстве?".
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Для того, чтобы отследить появление нового примитива нужно:
1) подписаться на событие Database.ObjectAppended
2) в обработчике этого события проверить, что добавленный объект - это примитив (Entity) и его свойство OwnerId равно свойству CurrentSpaceId текущей базы данных (чертежа)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Прошу прощения что отвлекаю Вас, уверен что и так много работы, но не могли бы Вы мне помочь. Я в затруднительном положении, не могу понять можно ли осуществить программу которую я запланировал .
Чем меньше "воды" в тексте, тем лучше.
Цитировать
Суть в том, что бы в автокаде рандомно генерировались простейшие примитивы после того как в его рабочем поле что либо появлялось.
1. В AutoCAD примитивы бывают графическими (Entity) и неграфическими. Что ты в данном случае подразумевал под "примитивами"? Где должны генерироваться "рандомные" примитивы (что это за "установленая область" такая)?
2. Расшифруй, что ты подразумеваешь под "рандомно"? Произвольный графический примитив в произвольном месте текущего пространства?
3. Что ты подразумеваешь под "рабочим полем"? В AutoCAD под словом "поле" (Field) подразумевается совсем не то, что ты пытаешься использовать в своём лексиконе. Предполагаю, что под "рабочим полем" ты подразумеваешь текущее пространство: Model или Layout...

Цитировать
1) Возможна ли программа, которая срабатывает в момент события на поле автокад. Что нужно использовать?
По поводу "поля" написано выше. Использовать нужно соответствующий обработчик событий, в зависимости от того,  какое событие ты хочешь обработать.
Цитировать
2) Что нужно для генерации рандомных примитивов в автокад посредством С#.
По поводу "рандомных" написано выше. Каков вопрос, таков ответ: нужно написать программный код.

P.S. Задавая вопрос, используй терминологию, принятую в той области, по которой задаёшь его (если хочешь, чтобы тебя поняли и ответили), а не изобретай "сферических коней в вакууме". Если у тебя проблемы с кодом - выкладывай свой код и показывай проблемное место.

Оффлайн bakaIIHXАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 59
  • Карма: 1
Приношу свои извинения. Работаю с этим не так давно, поэтому и несу бред сивой кобылы.

Оффлайн bakaIIHXАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 59
  • Карма: 1
По поводу "рандомных" написано выше. Каков вопрос, таков ответ: нужно написать программный код.
Вы совершенно правы, мне необходимо сделать,что бы появлялся произвольный графический примитив в произвольном месте текущего пространства.