горизонтальное выравнивание атрибута(текст) в блоке

Автор Тема: горизонтальное выравнивание атрибута(текст) в блоке  (Прочитано 10418 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
при указании выравнивания по центру текстового атрибута автокад вставляет его в точку(0,0,0) вне зависимости от указанной точки вставки данного атрибута. можно с этим как то бороться
Код - C# [Выбрать]
  1. using (AttributeDefinition acAttDef1 = new AttributeDefinition())
  2.                                     {
  3.                                         acAttDef1.Position = new Point3d(20, 0, 0);
  4.                                         acAttDef1.Verifiable = true;
  5.                                         acAttDef1.Prompt = "Number";
  6.                                         acAttDef1.Tag = "Number";
  7.                                         acAttDef1.TextString = "0";
  8.                                         acAttDef1.Height = 1;
  9.                                         acAttDef1.Justify = AttachmentPoint.MiddleCenter;
  10.                                         acAttDef1.Layer = "0";
  11.                                         btr.AppendEntity(acAttDef1);
  12.                                         bt.UpgradeOpen();
  13.                                         bt.Add(btr);
  14.                                         tr.AddNewlyCreatedDBObject(btr, true);
  15.                                     }
Лень - двигатель прогресса.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Не хватает:
Код - C# [Выбрать]
  1. acAttDef1.AlignmentPoint = new Point3d(20, 0, 0);
  2. acAttDef1.AdjustAlignment(bt.Database);
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Александр Ривилис,  ругается чудо программа автокад





Код - C# [Выбрать]
  1. using (AttributeDefinition acAttDef1 = new AttributeDefinition())
  2.                                         {
  3.                                             acAttDef1.Position = new Point3d(20.0, 0, 0);
  4.                                             acAttDef1.AdjustAlignment(bt.Database);
  5.                                             acAttDef1.Verifiable = true;
  6.                                             acAttDef1.Prompt = "Number";
  7.                                             acAttDef1.Tag = "Number";
  8.                                             acAttDef1.TextString = "0";
  9.                                             acAttDef1.Height = 1;
  10.                                             acAttDef1.Justify = AttachmentPoint.MiddleCenter;
  11.                                             acAttDef1.Layer = "0";
  12.                                             btr.AppendEntity(acAttDef1);
  13.                                             bt.UpgradeOpen();
  14.                                             bt.Add(btr);
  15.                                             tr.AddNewlyCreatedDBObject(btr, true);
  16.                                         }
Лень - двигатель прогресса.

Отмечено как Решение nolte 05-09-2017, 11:20:34

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Александр Ривилис,  ругается чудо программа автокад
И правильно делает. Попробуй вот так:
   
Код - C# [Выбрать]
  1. using (AttributeDefinition acAttDef1 = new AttributeDefinition())
  2.                                             {
  3.                                                 acAttDef1.SetDatabaseDefaults(bt.Database);
  4.                                                 acAttDef1.Verifiable = true;
  5.                                                 acAttDef1.Prompt = "Number";
  6.                                                 acAttDef1.Tag = "Number";
  7.                                                 acAttDef1.TextString = "0";
  8.                                                 acAttDef1.Height = 1;
  9.                                                 acAttDef1.Justify = AttachmentPoint.MiddleCenter;
  10.                                                 acAttDef1.Position = new Point3d(20.0, 0, 0);
  11.                                                 acAttDef1.AlignmentPoint = new Point3d(20, 0, 0);
  12.                                                 acAttDef1.AdjustAlignment(bt.Database);
  13.                                                 acAttDef1.Layer = "0";
  14.                                                 btr.AppendEntity(acAttDef1);
  15.                                                 bt.UpgradeOpen();
  16.                                                 bt.Add(btr);
  17.                                                 tr.AddNewlyCreatedDBObject(btr, true);
  18.                                             }
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Спасибо работает.
Лень - двигатель прогресса.

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

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

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
да уж. Немного :)
век живи век учись
Лень - двигатель прогресса.

Оффлайн Павел Алехин

  • ADN OPEN
  • Сообщений: 2
  • Карма: 0
Добрый день. Расскажите пожалуйста какая функция у этих методов? Для чего они? Если можно поподробнее (для новичка).
Код - C# [Выбрать]
  1. acAttDef1.Position = new Point3d(20.0, 0, 0);
  2. acAttDef1.AlignmentPoint = new Point3d(20, 0, 0);
  3. acAttDef1.AdjustAlignment(bt.Database);

В библиотеке я нашел следующее определение, но мне это не помогло.
Position - эта функция возвращает точку вставки текста в координатах WCS.
AlignmentPoint - эта функция возвращает точку выравнивания текста.
AdjustAlignment - этот метод позволяет настроить текст для текстовых объектов, не являющихся резидентами базы данных, или текстовых объектов в транзакциях.

Когда я меняю значения Position - у меня ничего не происходит.
Когда я меняю значения AlignmentPoint - атрибут перемещается на новую позицию.
А AdjustAlignment вообще выдет исключение)))

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

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Когда я меняю значения Position - у меня ничего не происходит.
Когда я меняю значения AlignmentPoint - атрибут перемещается на новую позицию.

В зависимости от AttachmentPoint может потребоваться указывать Position или AlignmentPoint  либо обе точки одновременно, другое применение может привести к ошибке.
Варианты использования можно посмотреть тут:
https://vbamodel.narod.ru/AutoCAD/idh_alignment.htm

Расскажите пожалуйста какая функция у этих методов? Для чего они? Если можно поподробнее (для новичка).
По описанию функций смотри в API, NET и ARX
https://adn-cis.org/forum/index.php?topic=61.0
arxmgd
arxdoc
Еще можешь посмотреть в ActiveX/COM
https://adn-cis.org/forum/index.php?topic=909.0

Или поискать в интернете
https://vbamodel.narod.ru/AutoCAD/idh_insertionpoint.htm
https://vbamodel.narod.ru/AutoCAD/idh_textalignmentpoint.htm