Получить информацию из блока

Автор Тема: Получить информацию из блока  (Прочитано 8429 раз)

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

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

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Здравствуйте.
Путем долгих мучений я подошел к созданию блока из БД.Блок создается хорошо.
Теперь я хочу получать информацию из этого блока для работы другого плагина.
В приложении есть файл, в котором нарисовано устройство с разными входами/выходами. Мне нужно получить информацию например из строки с надписью Ref Loop Out.
Тут я запутался окончательно. Это же AttributeDefinition?
И,если нетрудно,можете подсказать ресурс с руководством по программированию Автокада
Заранее спасибо

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

  • Administrator
  • *****
  • Сообщений: 13877
  • Карма: 1785
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получить информацию из блока
« Ответ #1 : 01-11-2015, 16:54:04 »
В приложении есть файл, в котором нарисовано устройство с разными входами/выходами. Мне нужно получить информацию например из строки с надписью Ref Loop Out.
Тут я запутался окончательно. Это же AttributeDefinition?
Да. А что в этом удивительного? Это постоянный (константный) атрибут (почитай в документации AutoCAD что это такое: http://exchange.autodesk.com/autocadmep/rus/online-help/browse#WS1a9193826455f5ffa23ce210c4a30acaf-6c03.htm ):



И,если нетрудно,можете подсказать ресурс с руководством по программированию Автокада

А чем тебе этот сайт и форум не "руководство к действию"? ;)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Re: Получить информацию из блока
« Ответ #2 : 01-11-2015, 17:30:52 »
Спасибо за ответ!
Сайт конечно руководство к действию,но боюсь вас замучать)
Возник еще вопрос,в том же чертеже есть полилинии между блоками.Правильно ли я понимаю,что координаты полилиний находятся в абсолютной системе координат,а точки привязки для надписей в блоке в относительной системе координат непосредственно для блока?
Возможно ли и их перевести в абсолютную систему?

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

  • Administrator
  • *****
  • Сообщений: 13877
  • Карма: 1785
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получить информацию из блока
« Ответ #3 : 01-11-2015, 18:05:11 »
Правильно ли я понимаю,что координаты полилиний находятся в абсолютной системе координат,а точки привязки для надписей в блоке в относительной системе координат непосредственно для блока?
Почти. У полилинии есть своя объектная система координат (ОСК или OCS), которая не всегда совпадает с WCS (это то, что ты называешь "абсолютной", а в терминах AutoCAD она называется мировой - МСК)
Для того, чтобы преобразовать координату из системы координат блока в WCS нужно получить матрицу преобразования при помощи метода BlockReference.BlockTransform и преобразовать точку при помощи этой матрицы.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Re: Получить информацию из блока
« Ответ #4 : 01-11-2015, 23:00:53 »
Да,работает.Только вот столкнулся с еще одной проблемой.
Задача этого плагина - искать текст атрибута,который находится на заданном расстоянии от линии. Выходы левого блока и типы разъемов находятся без проблем.А вот со входами все хуже.
Строка по типу Ref In не определяется при поиске,причем если делаю диапазон больше,то нахожу Ref Loop Out например (то есть выход на той же линии).
Разница у них в Alignment Point. У кого то есть, у кого-то нет
При этой Автокад ругается, при такой надписи:
Код - C# [Выбрать]
  1. attr_in.HorizontalMode = TextHorizontalMode.TextLeft;

Может вы еще разницу увидите между этими атрибутами?

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

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Re: Получить информацию из блока
« Ответ #5 : 01-11-2015, 23:08:18 »
Забыл добавить,что
Код - C# [Выбрать]
  1. attr_in.HorizontalMode = TextHorizontalMode.TextRight;
прекрасно работает

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

  • Administrator
  • *****
  • Сообщений: 13877
  • Карма: 1785
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получить информацию из блока
« Ответ #6 : 01-11-2015, 23:28:30 »
Задача этого плагина - искать текст атрибута,который находится на заданном расстоянии от линии. Выходы левого блока и типы разъемов находятся без проблем.А вот со входами все хуже.
Подход неправильный. Нужно ориентироваться не на AligmentPoint или Position, а на GeometricExtents. Получаешь прямоугольник, в который вписан текст (Extents3d), трансформируешь его по матрице преобразования из блока в WCS и находишь ближайший к нему конец линии.
« Последнее редактирование: 02-11-2015, 00:37:14 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Re: Получить информацию из блока
« Ответ #7 : 07-11-2015, 00:31:36 »
Спасибо!Получилось.
Попутно появилось еще два вопроса,один по теме,другой нет.
1)Можно ли поменять StartPoint и EndPoint полилинии местами?
2)
Этот вопрос не совсем по теме.
Можно ли задавать AttributeDefinition циклически? по умолчанию он добавляет только последний элемент,что и логично,они идут с одним именем.А как сделать динамически-изменяющееся имя в цикле я не знаю.

Буду очень благодарен,если поможете!

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

  • Administrator
  • *****
  • Сообщений: 13877
  • Карма: 1785
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получить информацию из блока
« Ответ #8 : 07-11-2015, 00:40:29 »
1)Можно ли поменять StartPoint и EndPoint полилинии местами?
Выполнить реверс полилинии? Можно. http://through-the-interface.typepad.com/through_the_interface/2012/09/reversing-the-direction-of-an-autocad-polyline-using-net.html А нужно ли это?
Можно ли задавать AttributeDefinition циклически?
Этого вопроса я не понял.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Re: Получить информацию из блока
« Ответ #9 : 07-11-2015, 23:09:18 »
1)На самом деле очень нужно временами.Я сейчас делаю заполнение кабжура,соответственно привязываюсь к стартовой и конечной точке полилинии. Если человек чертит не в том порядке,в котором я задумывал,то кабжур получается неправильным.
2)Вопрос снят,я сам дурак.  Автокаду не нравилось одинаковые тэги комментариев.

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

  • Administrator
  • *****
  • Сообщений: 13877
  • Карма: 1785
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получить информацию из блока
« Ответ #10 : 07-11-2015, 23:15:16 »
Я сейчас делаю заполнение кабжура
Если ты решил, что тут собрались одни электрики, то ты ошибаешься. Мне пришлось хорошо погуглить и напрячь мозги, чтобы понять, что речь идёт о "кабельном журнале". ;)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Re: Получить информацию из блока
« Ответ #11 : 08-11-2015, 16:06:15 »
Не подумал,извиняюсь)

Оффлайн CADbloke

  • Говорящий по-английски разработчик программного обеспечения из Австралии
  • ADN
  • *
  • Сообщений: 3
  • Карма: 1
    • CAD bloke
  • Skype: CADbloke
Re: Получить информацию из блока
« Ответ #12 : 25-11-2015, 05:39:22 »
Sorry this is in English, I am in Australia. I must be the only other person here who knows what your blocks are. I am working on software for this that makes cable schedules from these drawings: http://www.tvCAD.tv. If you sign up to the email list at the bottom you can reply to the email I send you with any questions about blocks for broadcast wiring diagrams. I will use Google to translate from Russian if you don't write in English so it is not a problem.

Your block looks a little like a VidCAD block? Your Attributes need to have unique Tags (unique within the block) and not be Constant for them to hold different information. See the attached drawing for an idea of what I mean.
Я из Австралии. Любой русский текст, который  я пишу здесь, сформирован Google. Плохо. Извините.

----
I am Australian. Any Russian text I write here has been generated by Google. Badly. Sorry.

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

  • ADN OPEN
  • **
  • Сообщений: 63
  • Карма: 2
Re: Получить информацию из блока
« Ответ #13 : 25-11-2015, 10:01:05 »
Hello.Iwrote down a letter to you on tvCAD's site.My block definetely looks like VidCad block, but with changes in sizes.Also I added functions for hard and soft-options there.Let's have a private chat at mail.