Сообщество программистов Autodesk в СНГ

ADN Club => Inventor API => Тема начата: fedor от 03-04-2019, 11:14:14

Название: Изменение координат Textbox в TitleBlockDefinition
Отправлено: fedor от 03-04-2019, 11:14:14
Добрый день!
В чертеже, в основной надписи, хочу программно сдвинуть текстовые параметры
для этого, беру на редактирование эскиз, нахожу нужный мне 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.  

Название: Re: Изменение координат Textbox в TitleBlockDefinition
Отправлено: Александр Ривилис от 03-04-2019, 12:46:02
Посмотри:
https://adndevblog.typepad.com/manufacturing/2013/01/moving-textbox-in-inventor.html
В коде явно не хватает:
Код - Visual Basic [Выбрать]
  1. Call Forma1.ExitEdit(True)

Название: Re: Изменение координат Textbox в TitleBlockDefinition
Отправлено: fedor от 03-04-2019, 13:10:18
В самом начале, аналогично примеру из ссылки, я использовал метод TransientGeometry.CreatePoint2d
В VBA, данный метод выдает ошибку "Invalid procedure or argument", поэтому я закомментил данную строчку и пошел изменять "явно", по координатам
"Явный" метод ошибок не выдавал, но и менять ничего не собирался(

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

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


Название: Re: Изменение координат Textbox в TitleBlockDefinition
Отправлено: mikazakov от 03-04-2019, 20:39:54
Хрень какая то,
в обычном эскизе работает, а в титульном блоке нет.
напишу в техподдержку, посмотрим что скажут.
Пару дней придется подождать.
Название: Re: Изменение координат Textbox в TitleBlockDefinition
Отправлено: mikazakov от 04-04-2019, 08:44:32
Пришел ответ:

Код - 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.  

Мда, запутанно в данном месте со скетчами.
Название: Re: Изменение координат Textbox в TitleBlockDefinition
Отправлено: fedor от 04-04-2019, 15:56:43
хитро!)))
Большое спасибо за оперативность!;)
Название: Re: Изменение координат Textbox в TitleBlockDefinition
Отправлено: fedor от 29-05-2019, 13:27:59
Добрый день!
Вопрос из этой же области, в стандартном функционале инвентора, при редактировании эскиза на чертеже, есть инструмент ТОЛЬКО ЭСКИЗ(Эскиз-Формат-Только эскиз). При задании объектам эскиза данного свойства, выбранные элементы не отображаются  вне эскиза

Можно ли через API задать свойство ТОЛЬКО ЭСКИЗ для выбранного элемента?
и как это осуществить?
Название: Re: Изменение координат Textbox в TitleBlockDefinition
Отправлено: mikazakov от 29-05-2019, 17:45:17
Код - Visual Basic [Выбрать]
  1. SketchEntity.SketchOnly=True
или как частность
Код - Visual Basic [Выбрать]
  1. SketchLine.SketchOnly=True
Название: Re: Изменение координат Textbox в TitleBlockDefinition
Отправлено: fedor от 29-05-2019, 18:04:33
а как быть если у тебя TextBox?
Именно для данного типа объекта нет такого свойства(

(https://i.postimg.cc/njBZ7hNj/img-2019-05-29-18-02-10.png) (https://postimg.cc/njBZ7hNj)
Название: Re: Изменение координат Textbox в TitleBlockDefinition
Отправлено: mikazakov от 29-05-2019, 19:12:41
а как быть если у тебя TextBox?
дак для текстбокса и через пользовательский интерфейс не работает. АПИ редко бывает шире пользовательского функционала.
Ну если что то очень уж нужно подписать на экране, то можно поюзать клиентскую графику, там в хэлпе есть примеры.
Всёж от задачи зависит, может в текст бокс можно просто вписать пробел, его и не должно быть тогда видно.