Как выразить Double в Shape.SetFormula?

Я пытаюсь ввести двойное значение в команду Shape.SetFormula.

например, следующее я записал с помощью функции журналирования NX:

moveObjectBuilder1.TransformMotion.Angle.SetFormula("12.5")

Согласно веб-сайту Microsoft, значение внутри () может быть только целым числом, и, очевидно, любое значение (независимо от того, целое или двойное значение), записанное в этой форме xxx, может быть выполнено.

Насколько я понял, это String, поэтому я изменил код следующим образом:

Function value() As String
Return 25/2
End Function

Sub Main(ByVal As String)
.
.
.
moveObjectBuilder1.TransformMotion.Angle.SetFormula(value())
.
.
.
End Sub

Однако если код будет написан таким образом, возникнет синтаксическая ошибка.

Могу я спросить, как я могу позволить команде Shape.Formula() прочитать значение Double? Или как я могу позволить функции вернуть значение, которое будет в этом формате...?

Большое спасибо!


person Jerry Chen    schedule 16.03.2021    source источник
comment
Вы специально указываете, что значение должно быть целым числом, а затем удивляетесь, почему передача значения, не являющегося целым числом, не работает. Почему возникает вопрос? Может быть, если бы вы предоставили какую-то соответствующую информацию, например, что такое NX, что такое этот класс Shape и т. д. Ни один из ваших тегов не указывает на что-либо, выходящее за рамки основ, но, очевидно, здесь происходят вещи, которые вы не удосужились объяснить. Если бы вы объяснили, возможно, мы могли бы обратиться к соответствующей документации для себя и посмотреть, есть ли что-то, что вы пропустили.   -  person jmcilhinney    schedule 16.03.2021
comment
Извините, я не умею выражаться. NX — это САПР. В NX есть функция, называемая ведением журнала, она записывает все, что я сделал. Если я предоставлю такой длинный код, это будет своего рода беспорядок. Поэтому я сократил его так. moveObjectBuilder1.TransformMotion.Angle.SetFormula("12.5") означает, что я перемещаю объект, поворачивая его на 12,5 градусов. Кроме того, здесь я проверил информацию ссылка   -  person Jerry Chen    schedule 16.03.2021


Ответы (2)


У меня нет опыта работы с этим приложением, но, насколько я могу судить, параметр для этого метода имеет тип String, потому что он принимает String, содержащий математическую формулу, которая будет анализироваться внутри. В этом случае должно работать что-то вроде этого:

moveObjectBuilder1.TransformMotion.Angle.SetFormula("25 / 2")

и сделать точно так же, как это:

moveObjectBuilder1.TransformMotion.Angle.SetFormula("12.5")

Если это не работает для вас, пожалуйста, объясните ТОЧНО, что происходит, когда вы это делаете.

person jmcilhinney    schedule 16.03.2021
comment
Привет, да, moveObjectBuilder1.TransformMotion.Angle.SetFormula("25 / 2") будет работать, но на самом деле это не то, что мне нужно. Потому что необходимы значения квадратного корня, а в VB квадратный корень из 2 — это Math.Sqrt(2). И код будет таким moveObjectBuilder1.TransformMotion.Angle.SetFormula(" Math.Sqrt(2)") В этом случае произойдет синтаксическая ошибка. И тогда в уведомлении будет указано, что разрешены только строковые значения. - person Jerry Chen; 16.03.2021
comment
ВБ не имеет значения. Вы не передаете ему код VB. Вы можете передать только то, что понимает движок, который его анализирует, и это не VB. Он вполне может поддерживать квадратные корни, но это не похоже на это. Проведите небольшое исследование, чтобы узнать, какой синтаксис поддерживается. - person jmcilhinney; 16.03.2021

Мне удалось решить свою проблему. На самом деле это было довольно глупо, я просто не эксперт в программировании. Мне потребовалось еще несколько попыток, чтобы найти решение моей проблемы.

moveObjectBuilder1.TransformMotion.Angle.SetFormula("Sqrt(2)")

Это правильный способ выражения Повернуть этот объект на угол квадратного корня из 2.

Хорошо, теперь давайте поговорим о проблеме, с которой я столкнулся. Я хочу импортировать значение через функцию, а затем обработать его. Итак, SetFormula принимает только String. Поэтому я могу сделать следующее:

Function value() As Double
Return 25/2
End Function

Sub Main(ByVal arg() As String)
.
.
.
moveObjectBuilder1.TransformMotion.Angle.SetFormula(value().ToString)
.
.
.
End Sub
person Jerry Chen    schedule 17.03.2021