Изменение координат Textbox в TitleBlockDefinition

Автор Тема: Изменение координат Textbox в TitleBlockDefinition  (Прочитано 3678 раз)

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

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

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

  • ADN OPEN
  • Сообщений: 33
  • Карма: 0
Добрый день!
В чертеже, в основной надписи, хочу программно сдвинуть текстовые параметры
для этого, беру на редактирование эскиз, нахожу нужный мне TextBox, и пытаюсь его сдвинуть изменяя значение в свойствах TB1.Origin.x и TB1.Origin.y
Но ничего не происходит. Программа не сообщает об ошибке, но и значения не изменяются
как изменить значения координат в Textbox в TitleBlockDefinition?

Код - Visual Basic [Выбрать]
  1. Sub TB_Position()
  2.     Set odoc = ThisApplication.ActiveDocument
  3.     If odoc.DocumentType <> kDrawingDocumentObject Then
  4.         Exit Sub
  5.     End If
  6.     Dim Forma1 As TitleBlockDefinition
  7.     Set Forma1 = odoc.TitleBlockDefinitions.Item(1)
  8.     Dim TB1 As TextBox
  9.     Set TB1 = Forma1.Sketch.TextBoxes.Item(27)
  10.    
  11.     Dim oSketch As DrawingSketch
  12.     Call Forma1.Edit(oSketch)
  13. '   TB1.Origin = ThisApplication.TransientGeometry.CreatePoint2d(4.5, 0.75)
  14.    TB1.Origin.x = 10  'значение не изменяется
  15.    TB1.Origin.y = 5   'значение не изменяется
  16.    
  17.     odoc.Update
  18.    
  19. End Sub
  20.  


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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Посмотри:
https://adndevblog.typepad.com/manufacturing/2013/01/moving-textbox-in-inventor.html
В коде явно не хватает:
Код - Visual Basic [Выбрать]
  1. Call Forma1.ExitEdit(True)

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

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

  • ADN OPEN
  • Сообщений: 33
  • Карма: 0
В самом начале, аналогично примеру из ссылки, я использовал метод TransientGeometry.CreatePoint2d
В VBA, данный метод выдает ошибку "Invalid procedure or argument", поэтому я закомментил данную строчку и пошел изменять "явно", по координатам
"Явный" метод ошибок не выдавал, но и менять ничего не собирался(

по поводу метода
Код - Visual Basic [Выбрать]
  1. Call Forma1.ExitEdit(True)

думаю, в данной ситуации проблема не в ней, хотя после, его в код добавить обязательно нужно:)



Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Хрень какая то,
в обычном эскизе работает, а в титульном блоке нет.
напишу в техподдержку, посмотрим что скажут.
Пару дней придется подождать.

Отмечено как Решение fedor 04-04-2019, 15:55:37

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Пришел ответ:

Код - Visual Basic [Выбрать]
  1. Sub TB_Position1()
  2.     Set odoc = ThisApplication.ActiveDocument
  3.    
  4.     Dim Forma1 As TitleBlockDefinition
  5.     Set Forma1 = odoc.TitleBlockDefinitions.Item(1)
  6.    
  7.     Dim oSketch As DrawingSketch
  8.     Set oSketch = Forma1.Sketch
  9.    
  10.     Call Forma1.Edit(oSketch)
  11.    
  12.     Dim TB1 As TextBox
  13.     Set TB1 = oSketch.TextBoxes.Item(1)
  14.  
  15.     TB1.Origin = ThisApplication.TransientGeometry.CreatePoint2d(0, 0)
  16.      Call Forma1.ExitEdit
  17.    
  18.     odoc.Update
  19.    
  20. End Sub
  21.  

Мда, запутанно в данном месте со скетчами.

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

  • ADN OPEN
  • Сообщений: 33
  • Карма: 0
хитро!)))
Большое спасибо за оперативность!;)

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

  • ADN OPEN
  • Сообщений: 33
  • Карма: 0
Добрый день!
Вопрос из этой же области, в стандартном функционале инвентора, при редактировании эскиза на чертеже, есть инструмент ТОЛЬКО ЭСКИЗ(Эскиз-Формат-Только эскиз). При задании объектам эскиза данного свойства, выбранные элементы не отображаются  вне эскиза

Можно ли через API задать свойство ТОЛЬКО ЭСКИЗ для выбранного элемента?
и как это осуществить?

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Код - Visual Basic [Выбрать]
  1. SketchEntity.SketchOnly=True
или как частность
Код - Visual Basic [Выбрать]
  1. SketchLine.SketchOnly=True

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

  • ADN OPEN
  • Сообщений: 33
  • Карма: 0
а как быть если у тебя TextBox?
Именно для данного типа объекта нет такого свойства(



Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
а как быть если у тебя TextBox?
дак для текстбокса и через пользовательский интерфейс не работает. АПИ редко бывает шире пользовательского функционала.
Ну если что то очень уж нужно подписать на экране, то можно поюзать клиентскую графику, там в хэлпе есть примеры.
Всёж от задачи зависит, может в текст бокс можно просто вписать пробел, его и не должно быть тогда видно.