Произвольное изменение точи расположения текста Multileader

Автор Тема: Произвольное изменение точи расположения текста Multileader  (Прочитано 9696 раз)

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

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

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

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Здравствуйте!

Столкнулся со странной ситуацией - указываю для положения текста выноски одну точку, а он вставляется в другой - произвольно изменяет заданную мной. Точку начала выноски располагает как надо, а со второй что-то происходит. В чем причина?

Код - C# [Выбрать]
  1. [CommandMethod("00Texttomleader")]
  2.         public static void MTextToMultileader()
  3.         {
  4.             Point3d startPoint = AuxiliaryUtilities.SelectionUtilities.GetPointFromUser("Set leg position");
  5.             Point3d basePoint = AuxiliaryUtilities.SelectionUtilities.GetPointFromUser("Set text position");
  6.             CreateMultileader("yyyyyy", basePoint, startPoint);
  7.  
  8.         }
  9.  
  10.         public static void CreateMultileader(string content, Point3d textLocation, Point3d startPoint3D)
  11.         {
  12.             Document doc = Application.DocumentManager.MdiActiveDocument;
  13.             Database db = doc.Database;
  14.             Editor ed = doc.Editor;
  15.  
  16.             using (Transaction tr = db.TransactionManager.StartTransaction())
  17.             {
  18.                 BlockTable table = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
  19.  
  20.                 BlockTableRecord btr = tr.GetObject(table[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
  21.  
  22.                 MLeader leader = new MLeader();
  23.                 leader.SetDatabaseDefaults();
  24.  
  25.                 leader.ContentType = ContentType.MTextContent;
  26.  
  27.                 MText mText = new MText();
  28.                 mText.TextStyleId = leader.TextStyleId;
  29.                 //mText.SetDatabaseDefaults();
  30.                 //mText.Width = 100;
  31.                 //mText.Height = 50;
  32.                 mText.SetContentsRtf(content);
  33.                 mText.Location = textLocation;
  34.  
  35.                 leader.MText = mText;
  36.  
  37.                 int idx = leader.AddLeaderLine(startPoint3D);
  38.                 //leader.AddFirstVertex(idx, startPoint3D);
  39.  
  40.                 btr.AppendEntity(leader);
  41.                 tr.AddNewlyCreatedDBObject(leader, true);
  42.  
  43.                 tr.Commit();
  44.             }
  45.  
  46.  
  47.         }

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Точку начала выноски располагает как надо, а со второй что-то происходит.
А точнее?
1. Сделай нормальный пример кода без своих функций
2. Покажи что ты рассчитываешь получить и что получаешь
3. Запиши видео
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
-Запускаю команду
-Указываю точку начала выноски
-Указываю точку положения текста
-получаю отскок от указанной мной точки(в этом и проблема)
Окружность добавляю как опорный объект, чтобы была видна разница между указанной и фактической точками.

Видео прикрепить не получается- сервер не дает.

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

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Сделай нормальный пример кода без своих функций
Не понял - это все моя самописная функция.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Не понял - это все моя самописная функция.
Сделай полный пример кода, который я мог бы воспроизвести и при необходимости править вместе с функцией, которая выполняет роль команды.
Видео прикрепить не получается- сервер не дает.
Чей сервер не даёт? Посмотри у меня в подписи как нужно делать видео и выкладывать его на форум.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Добавил недостающий метод
Код - C# [Выбрать]
  1. [CommandMethod("00Texttomleader")]
  2.         public static void MTextToMultileader()
  3.         {
  4.             Point3d startPoint = GetPointFromUser("Set leg position");
  5.             Point3d basePoint = GetPointFromUser("Set text position");
  6.             CreateMultileader("yyyyyy", basePoint, startPoint);
  7.  
  8.         }
  9.         public static Point3d GetPointFromUser(string message)
  10.         {
  11.             Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
  12.             Document doc = Application.DocumentManager.MdiActiveDocument;
  13.             Database db = doc.Database;
  14.             PromptPointOptions pickPoint = new PromptPointOptions(message);
  15.             PromptPointResult insertPoint = ed.GetPoint(pickPoint);
  16.             return insertPoint.Value;
  17.         }
  18.  
  19.         public static void CreateMultileader(string content, Point3d textLocation, Point3d startPoint3D)
  20.         {
  21.             Document doc = Application.DocumentManager.MdiActiveDocument;
  22.             Database db = doc.Database;
  23.             Editor ed = doc.Editor;
  24.  
  25.             using (Transaction tr = db.TransactionManager.StartTransaction())
  26.             {
  27.                 BlockTable table = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
  28.  
  29.                 BlockTableRecord btr = tr.GetObject(table[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
  30.  
  31.                 MLeader leader = new MLeader();
  32.                 leader.SetDatabaseDefaults();
  33.  
  34.                 leader.ContentType = ContentType.MTextContent;
  35.  
  36.                 MText mText = new MText();
  37.                 mText.TextStyleId = leader.TextStyleId;
  38.                 //mText.SetDatabaseDefaults();
  39.                 //mText.Width = 100;
  40.                 //mText.Height = 50;
  41.                 mText.SetContentsRtf(content);
  42.                 mText.Location = textLocation;
  43.  
  44.                 leader.MText = mText;
  45.  
  46.                 int idx = leader.AddLeaderLine(startPoint3D);
  47.                 //leader.AddFirstVertex(idx, startPoint3D);
  48.  
  49.                 btr.AppendEntity(leader);
  50.                 tr.AddNewlyCreatedDBObject(leader, true);
  51.  
  52.                 tr.Commit();
  53.             }
  54.  
  55.  
  56.         }

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
У тебя ПСК (UCS) соответствует МСК (WCS)?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
У тебя ПСК (UCS) соответствует МСК (WCS)?
Да, тренируюсь каждый раз в совершенно новом файле. Настройки не менял.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
У тебя ПСК (UCS) соответствует МСК (WCS)?
Да, тренируюсь каждый раз в совершенно новом файле. Настройки не менял.
Очень странно, потому что у меня этот код нормально работает.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

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

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

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Очень странно, потому что у меня этот код нормально работает
У меня с отскоком. Может быть у текста есть какая-то своя скрытая базовая точка и код позиционируется с учетом ее?

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

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

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

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

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

  • Administrator
  • *****
  • Сообщений: 1096
  • Карма: 172
Может, настройки стиля мультивыноски оказывают свое влияние?
Все, что сказано - личное мнение.

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

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

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

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