Изменение текста в Sketched Symbol в чертеже

Автор Тема: Изменение текста в Sketched Symbol в чертеже  (Прочитано 3458 раз)

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

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

  • ADN OPEN
  • Сообщений: 6
  • Карма: 0
Какая процедура замены текста в TextBox в Sketched Symbol ?

Пока для простого скетч-символа с одним текстбоксом делаю тупо:

Код - C# [Выбрать]
  1. string textChange = "AAABBB";
  2. DrawingSketch drawingSketch = sketchedSymbol.Definition.Sketch;
  3. SketchedSymbolDefinition sketchedSymbolDefinition = sketchedSymbol.Definition;
  4.  
  5. sketchedSymbolDefinition.Edit(out drawingSketch); // входим в режим редактирования
  6. drawingSketch.TextBoxes[1].Text = textChange; // тут меняю на текст который нужен
  7. sketchedSymbolDefinition.ExitEdit(true); //выход из редактирования с сохранением
  8.  

Так меняет.
Но на чертеже текст изменяется, однако если зайти в сам скетч-символ, то можно видеть, что текст остается старый, кроме того изменяется форматирование текста, а мне нужно по менять только само содержимое TextBox без изменения стиля/форматирования.
Может надо  менять не в SketchedSymbolDefinition?

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
кроме того изменяется форматирование текста, а мне нужно по менять только само содержимое TextBox без изменения стиля/форматирования.
Ну батенька, инвентор, просто возвращает заранее настроенный текстовый стиль:

Собственно настройте его в библиотеке стилей и проблема исчезнет.

Можно добавлять XML-тэги, что бы локально переопределять стиль, аля:
"<StyleOverride Font='Arial' Bold='True'>Notice</StyleOverride>: All holes larger than 0.500 <StyleOverride Font='AIGDT'>n</StyleOverride> are to be checked."

В локальном хэлпе по инвентор АПИ ввести в поиск следующую строку:
XML Tags for FormattedText
там будет по подробнее, даже как индексы выводить и прочие свойства с моделей.

А если нужно только менять данные в скетч-символе
то можно юзать Promt-текст (отрывок из примера в хэлпе):
Код - Visual Basic [Выбрать]
  1. ' Add a prompted text field at the center of the sketch circle.
  2.    Dim sText As String
  3.     sText = "<Prompt>Enter text 1</Prompt>"
  4.     Dim oTextBox As TextBox
  5.     Set oTextBox = oSketch.TextBoxes.AddFitted(oTG.CreatePoint2d(22, 0), sText)
  6.     oTextBox.VerticalJustification = kAlignTextMiddle
  7.     oTextBox.HorizontalJustification = kAlignTextCenter

Я на память правда не помню, но кажется если вставить промтовое поле, то дефинция скетч-символа может быть одна, а вот текст можно менять у конкретного экземпляра скетч-символа.
Иначе придется каждый раз рисовать новый скетч-символ. При использовании промтового текстового поля эскиз на редактирование открывать не нужно.

А вот полный пример в хэлпе как пользоваться промтовым полем:

Извините, вам запрещён просмотр содержимого спойлеров.


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

  • ADN OPEN
  • Сообщений: 6
  • Карма: 0
mikazakov,
да, я видел примеры с использованием Prompt-текста, а также создание методом AddFitted
Значит уточняю задачу -  у меня на чертеже расставлено больше сотни Sketch символов с одним текстом и мне нужно заменить в каждом символе на другой текст - символы уже готовые создавать мне их не надо. Как перебрать коллекцию - мне известно, я экспериментирую на одном символе. Решение приведенное в первом посте не работает как надо - визуально на чертеже текст символа изменяется, однако если зайти в сам Sketch символ стандартным редактором Inventor, то можно видеть, что текст остается старый, если в редакторе нажать ОК, то текст сразу заменится на старый. Вопрос с форматированием - это следующий вопрос.  Я предполагаю, что менять текст надо не в SketchedSymbolDefinition. Вот... вроде ничего странного я не хочу...