создание точек при помощи пользователя, затем создание окружности на точке!help!

Автор Тема: создание точек при помощи пользователя, затем создание окружности на точке!help!  (Прочитано 52323 раз)

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

Оффлайн zmk.autocadАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 64
  • Карма: 0
Не нужен мне civil 3D! Я работаю в автокаде.
Да я не супер программер, изучал c# в студенческие годы, а сейчас решил упростить свою работу интересным для меня способом.

Кто то написал что я буду искать какой текст к какому кружочку относится. Я считаю что не возникнет проблем.
Сейчас опишу суть всей программы.

Имеется исходный файл :
номер точки  высота
b1    173.3234
b2    175.2343
и т.д.
Я считываю его и на каждой точке даю возможность указать себе место расположения её на чертеже.
и подпись номера точки рядом с условным знаком.
далее беру и записываю данные в файл туда пишу имя точки высоту и как я понимаю objectId текста

Всё это проделывается один раз. на чертеже, далее поступают два раза в месяц исходные данные такого же формата на протяжении года, я собираюсь подгрузить этот файл и файл который был записан в первом случаи. взять разность этих высот и вписать в текст , как я понимаю по сохраненному objectid я получу доступ к тексту.

вот в общем примерно такая задача стоит.

Оффлайн zmk.autocadАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 64
  • Карма: 0
На данном этапе я временно отложил удобное расположение текста, и написал на сохранения файла код
в итоге у меня получился такой текстовый файл:
0   m1   1231285   (8796087803088)
1   m2   1251586   (8796087803152)
2   m3   1267456   (8796087803200)
3   m4   1277896   (8796087803248)
исчезли запятые после конвертации в строку данных и objectId прописывается в скобках.
Я понимаю что всех уже задолбал, но все же кто может подсказать как получить доступ к объекту зная его Id?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
1) ObjectId не сохраняется между сессиями AutoCAD, т.е. при следующем запуске AutoCAD для того же самого текста будет другой ObjectId
2) Между сессиями AutoCAD сохраняется Handle. Вот его и можно писать во внешний файл.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн zmk.autocadАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 64
  • Карма: 0
Ok спасибо большое, а как потом получить доступ к объекту?

Оффлайн zmk.autocadАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 64
  • Карма: 0
Получился такой файл
0   �1   1231285   245
1   m2   1251586   249
2   m3   1267456   24C
3   m4   1277896   24F

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Ok спасибо большое, а как потом получить доступ к объекту?
Насколько я помню, HandleToObject потребуется. Могу ошибаться...
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Насколько я помню, HandleToObject потребуется. Могу ошибаться...
Можешь. :)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн zmk.autocadАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 64
  • Карма: 0
Ok спасибо большое, а как потом получить доступ к объекту?
Насколько я помню, HandleToObject потребуется. Могу ошибаться...
спасибо, буду пробывать -)

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Могу ошибаться...

угу...

Код - C# [Выбрать]
  1. // i is long
  2. Handle h = new Handle(i);
  3. // db is Database, id is ObjectId.
  4. Boolean isValidHandle = db.TryGetObjectId(h, out id);

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Вот пример как по метке (Handle) в строчном представлении обратиться к объекту (примитиву): http://through-the-interface.typepad.com/through_the_interface/2007/02/getting_access_.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Вот пример как по метке (Handle) в строчном представлении обратиться к объекту (примитиву): http://through-the-interface.typepad.com/through_the_interface/2007/02/getting_access_.html
Это пример того, как НЕ надо делать. :)

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

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

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Если ты про использование Database.GetObjectId вместо Database.TryGetObjectId - то могу согласится.
угу. А что, разве возможны ещё какие-то варианты предположений? )

Оффлайн zmk.autocadАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 64
  • Карма: 0
Ка я понимаю вы имеете ввиду что нужно обязательно перехватить ошибки?

Оффлайн zmk.autocadАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 64
  • Карма: 0
он использовал другой метод но всё же весь код находиться в блоке try. Это хуже чем TryGetObjectId ?