Официальный форум российского программного комплекса T-FLEX PLM


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Редактирование переменных с помощью exe
 
Существует три способа редактирования переменных фрагмента:
1 Встроенный редактор (понятно);
2 Программа (не понятно);
3 Встроеные элементы управления на страницах диалога (понятно).
Что представляет из себя программа редактирования переменных фрагмента? Каким образом должны в неё передаваться переменные. Я пробовал в строкем "Программа" указывать путь к exe-файлу.При вставке фрагмента появляется моя форма. Ещё есть строка для передачи переменных exe-ку.
Как работать с переменными фрагмента с помощью exe???
P.S. работаю в T-Flex 8.0 и Delphi 7.0
 
Нужно знать

1) Работу через OLE
2) API для T-Flex

Если получится выложи сюда исходник на Delphi
 
Если у Вас 8-ка, то нужно почитать файл с руководством по ActiveX. Получить объект приложения, из него активный документ, а из него уже при помощи GetModelVars получить объект, предназначенный для редактирования внешних переменных модели.

В 9-ке и в 10-ке лучше по-другому. Есть классы .NET для работы с любыми переменными.
 
А в 10 версии каким образом поступить используя OpenAPI ?
 
Получить у документа контейнер переменных и далее отыскать нужную, например, по имени:

Foreach (Variable var in document.Variables)
{
if (var.Name == "Моя_переменная")
{
//Действия с переменной var
}
}
 
~~:-
 
Цитата
Александр Сысоев пишет:

Получить у документа контейнер переменных и далее отыскать нужную, например, по имени:

Foreach (Variable var in document.Variables)
{
if (var.Name == "Моя_переменная")
{
//Действия с переменной var
}
}

Может я ошибаюсь, но мне кажется надо получить контейнер переменных у фрагмента.
Но вопрос в другом. А как подключиться к сессии запущенного T-FLEX CAD ?
 
Цитата
roand пишет:

Может я ошибаюсь, но мне кажется надо получить контейнер переменных у фрагмента.

Если работаете с фрагментом, то получить переменные документа фрагмента

Цитата
roand пишет:

А как подключиться к сессии запущенного T-FLEX CAD

Смотря какое приложение пишете. Если exe, то используя Remouting. Или, если нет необходимости открывать окно CADа, то можете инициализировать API в своем приложении. Если плагин, то тут подключение происходит в момент инициализации сессии.
 
Александр не могли бы Вы привести пример использования Remouting. В документация по openAPI я к своему огромному сожалению такого не находил .
 
Цитата
roand пишет:

Александр не могли бы Вы привести пример использования Remouting.
Таких примеров к сожалению пока нет. В теории вы должны создать два приложения - EXE и DLL плагин для T-FLEX CAD и организовать взаимодействие между ними. Может быть стоит конкретезировать Вашу задачу и попытаться найти другое решение?
 
Конкретной задачи нет. Я полагал что такое решение уже есть. Мне стало жутко интересно как в T-FLEX CAD делается Remouting ;)
 
Надо заняться на досуге :-S
 
Может, ли кто, подсказать как получить контенер переменных при програмировании макросов на VB
Изменено: Евгений Кондрашов - 08.11.2011 16:53:53
 
Про VB (6, A) все знает .. .\T-FLEX\T-FLEX CAD 11\Документация\ActiveX T-FLEX CAD.pdf

Перебрать переменные (в данном случае числовые) можно хотя бы вот так:

Private Sub UserForm_Initialize()
Set tf = GetObject("", "TFW32.SERVER")
Set doc = tf.GetActiveFile()
'Dim perem(1000, 2) As String

Set bdd = doc.GetDat abase(TextBox6.Text)

nm = doc.GetFileName()
TFLEX.Caption = "T-FLEX CAD - " & Right(nm, InStr(1, StrReverse(nm), "\") - 1)

perem1id = doc.GetFirstRealVariable()
perem1 = doc.GetVariableName(perem1id)

perem(0, 1) = perem1
perem(0, 2) = Str(perem1id)

Do

idper = idper + 1
pred = Val(perem(idper - 1, 2))
vvl = doc.GetNextRealVariable(pred)
If vvl <> -1 Then
perem(idper, 1) = doc.GetVariableName(vvl)
perem(idper, 2) = Trim(Str(vvl))
Else
Exit Do
End If

Loop

For q = 0 To idper - 1
ComboBox1.AddItem (perem(q, 1))
ListBox1.AddItem (perem(q, 1))
Next

End Sub
 
Спасибо! "petrick".
Ещё вопрос. В форме, в текстовых окнах цифры представлены как share, в вычисления они ведут себя как числа, но десятичный разделитель у них запятая.
При передачи значений в T-Flex получается ошибка, у него дестичный разделитель точка. Как быть? Есть функиция перевода формата предсталения чила в другой, может в API? Не нашёл.
В примерах по API есть функция System.Convert.ToDouble(), пробовал, не работает. :applanse:
 
Пожалуйста.
System.Convert.ToDouble() - это VB.NET, так что в вашем случае работать и не должна. Однако вам ничто не мешает написать свой ToDouble(), если лень зайти в свойства языка и нац. стандартов и поменять разделитель групп разрядов с зпт на тчк
Страницы: 1