Перейти к публикации

NX Open C программирование


NX-Open-Dummer

Рекомендованные сообщения

Смотри uf_mom.h и uf_cam.h

uf_mom.h (view source)

Overview

This module is designed to be used primarily in the code that is in the

function called by the Event Handler via MOM_run_user_function. It allows that

code to access the interpreter from which MOM_run_user_function was called. The

code can perform functions like asking and setting variables in the interpreter

and extending the interpreter with new functions. It can also be used with

CAM Exits that are associated with a TCL interpreter.

NOTE: Any function that sets a variable in the TCL interpreter, e.g., MOM_set_double,

sets the variable as a global variable. Therefore, in order to use its

value inside of a TCL proc you must declare that variable as "global"

in the proc. For example, if you call

UF_MOM_set_double( mom_id, "my_var", 1.23 );

it will be known as "mom_my_var" inside of every TCL proc and it will

be a global variable in every proc. So, e.g., to access it in

MOM_start_of_program you need

proc MOM_start_of_program {

global mom_my_var

...

}

как я понимаю: например пишем DLL с использованием UF_MOM, а потом вызываем DLL из постпроцессора.

но мне пост на фиг не нужен. то есть для решения моей задачи это не подходит? так?

Ссылка на сообщение
Поделиться на других сайтах


Сейчас так все и реализовано, только через тип и подтип. Хотел узнать можно ли разом получить все параметры. И еще вопрос: для всех ли параметров можно посмотреть "индексы" в UF_PARAM_INCLUDES.h ?? Что - то никак не могу найти там параметры для инструмента с типом _DRILL и подтипом _CENTERDRILL, а именно диаметр вершины(TD) и угол профиля резьбы (IA).

Ссылка на сообщение
Поделиться на других сайтах

как я понимаю: например пишем DLL с использованием UF_MOM, а потом вызываем DLL из постпроцессора.

но мне пост на фиг не нужен. то есть для решения моей задачи это не подходит? так?

Могу предложить следующий вариант. По тихому из DLL вызываешь пост в посте считаешь время. Потом в С открываешь текстовый файл и считываешь время по операциям. Чесно говоря вариант не ахти
Ссылка на сообщение
Поделиться на других сайтах

Могу предложить следующий вариант. По тихому из DLL вызываешь пост в посте считаешь время. Потом в С открываешь текстовый файл и считываешь время по операциям. Чесно говоря вариант не ахти

да уж. ну будем думать

Ссылка на сообщение
Поделиться на других сайтах

Сейчас так все и реализовано, только через тип и подтип. Хотел узнать можно ли разом получить все параметры. И еще вопрос: для всех ли параметров можно посмотреть "индексы" в UF_PARAM_INCLUDES.h ?? Что - то никак не могу найти там параметры для инструмента с типом _DRILL и подтипом _CENTERDRILL, а именно диаметр вершины(TD) и угол профиля резьбы (IA).

Может посмотреть тогда в сторону NXOpen там вроде есть класс DrillToolBuilder
Ссылка на сообщение
Поделиться на других сайтах
  • 4 недели спустя...

Всем привет!

Хочу создать dll на С/С++ в VS 2008. После компиляции выходит ошибка что-то вроде "не могу найти файл uf.h". Добавил его из папки UGOPEN в папку "заголовочные файлы" все равно пишет, что не может найти. Что может быть?

И еще вопрос, что за файлы с расширением .hxx, например ug_extencion.hxx (могу ошибиться в написании) и нужно ли их тоже добавлять, как заголовочные?

P.S. На платформе 64-х не хочет компилировать, а вот на 32-х все нормально.... :doh:

Заранее спасибо!

Ссылка на сообщение
Поделиться на других сайтах

Всем привет!

Хочу создать dll на С/С++ в VS 2008. После компиляции выходит ошибка что-то вроде "не могу найти файл uf.h". Добавил его из папки UGOPEN в папку "заголовочные файлы" все равно пишет, что не может найти. Что может быть?

И еще вопрос, что за файлы с расширением .hxx, например ug_extencion.hxx (могу ошибиться в написании) и нужно ли их тоже добавлять, как заголовочные?

P.S. На платформе 64-х не хочет компилировать, а вот на 32-х все нормально.... :doh:

Заранее спасибо!

по 1му вопросу...

когда добавляешь h-файл в проект, то надо писать не #include <uf.h>, а #include "uf.h".

а по 2му вопросу...

когда создаёшь проект на Си, то получаешь файлы .c и .h, а когда на С++, то соответственно .cxx и .hxx.

ну это должен знать каждый начинающий программист... :))

Изменено пользователем NX-Open-Dummer
Ссылка на сообщение
Поделиться на других сайтах

по 1му вопросу...

когда добавляешь h-файл в проект, то надо писать не #include <uf.h>, а #include "uf.h".

а по 2му вопросу...

когда создаёшь проект на Си, то получаешь файлы .c и .h, а когда на С++, то соответственно .cxx и .hxx.

ну это должен знать каждый начинающий программист... :))

сделал как вы сказали, ошибку по поводу uf.h файла не выводит, но зато выводит ошибку "не могу найти" про заголовочный файл #include <uf_defs.h>, который прописан в uf.h.........Может быть лицензия????

:cry_1:

Изменено пользователем AchebaS
Ссылка на сообщение
Поделиться на других сайтах

сделал как вы сказали, ошибку по поводу uf.h файла не выводит, но зато выводит ошибку "не могу найти" про заголовочный файл #include <uf_defs.h>, который прописан в uf.h.........Может быть лицензия????

:cry_1:

если создавать проект через шаблон NX Open Wizard, то никаких h-файлов в проект добавлять не нужно. и никаких подобных ошибок тогда быть не должно. если конечно Visual Studio и NX в завязке установлены правильно.
Ссылка на сообщение
Поделиться на других сайтах

Всем привет!

Хочу создать dll на С/С++ в VS 2008. После компиляции выходит ошибка что-то вроде "не могу найти файл uf.h". Добавил его из папки UGOPEN в папку "заголовочные файлы" все равно пишет, что не может найти. Что может быть?

И еще вопрос, что за файлы с расширением .hxx, например ug_extencion.hxx (могу ошибиться в написании) и нужно ли их тоже добавлять, как заголовочные?

P.S. На платформе 64-х не хочет компилировать, а вот на 32-х все нормально.... :doh:

Заранее спасибо!

В свойствах проекта (правой кнопкой мыши стоя на проекти нажать в Solution Explorer)

Выбрать properties

C/C++ -> General -> Additional Include Directories

Добавте

$(UGII_BASE_DIR)\ugopen

$(UGII_BASE_DIR)\ugopenpp

Это чтобы у Вас заголовочные файлы NX находились

Добавлять следует то что используете

Если добавите лишний заголовочный файл то к ошибке это не приведет

Чтобы собрать x64 на 32 платформе

нужно при установке компилятора выбрать этот модуль для инсталяции

по умолчанию он не ставится

То есть если инсталировали VC по умолчанию то его надо доинсталировать

или переставить

Ссылка на сообщение
Поделиться на других сайтах

В свойствах проекта (правой кнопкой мыши стоя на проекти нажать в Solution Explorer)

Выбрать properties

C/C++ -> General -> Additional Include Directories

Добавте

$(UGII_BASE_DIR)\ugopen

$(UGII_BASE_DIR)\ugopenpp

Это чтобы у Вас заголовочные файлы NX находились

Добавлять следует то что используете

Если добавите лишний заголовочный файл то к ошибке это не приведет

Спасибо большое, на работе попробую. :smile:

Чтобы собрать x64 на 32 платформе

нужно при установке компилятора выбрать этот модуль для инсталяции

по умолчанию он не ставится

То есть если инсталировали VC по умолчанию то его надо доинсталировать

или переставить

Я так сделал, поставил вручную, выбрал все опции. Через менеджер конфигураций создал платформу х64, параметры брал из win32 и из "пусто" тоже брал. В обоих случаях выдает ошибку при компиляции

"Ошибка 1 fatal error LNK1112: тип компьютера модуля "X86" противоречит типу целевого компьютера "x64" libopenpp.lib NX7 Open Wizard4

"

В чем проблема????? :helpsmilie:

Ссылка на сообщение
Поделиться на других сайтах

Спасибо большое, на работе попробую. :smile:

Я так сделал, поставил вручную, выбрал все опции. Через менеджер конфигураций создал платформу х64, параметры брал из win32 и из "пусто" тоже брал. В обоих случаях выдает ошибку при компиляции

"Ошибка 1 fatal error LNK1112: тип компьютера модуля "X86" противоречит типу целевого компьютера "x64" libopenpp.lib NX7 Open Wizard4

"

В чем проблема????? :helpsmilie:

libopenpp.lib и другие файлы lib должны быть от 64 разрядного NX

Соответственно если Вы хотите на одной машине

собирать приложения для разных платформ

то у Вас должно быть поставлено 2 NX

В иделале чтобы иметь возможнось запускать обе версии

у Вас должна быть 64 разрядная операционка

Для запуска компилятора нужно написать 2 батника

к каждом из которых перед стартом собственно компилятора

переопределять переменные NX на версию соответствующей разрядности

Примерно так может выглядеть батник

set UGII_BASE_DIR=C:\PROGRA~1\UGS\NX7~1.5

set UGII_ROOT_DIR=C:\PROGRA~1\UGS\NX7~1.5\UGII\



set PATH=%PATH%;%UGII_BASE_DIR%\ugii;%UGII_BASE_DIR%\ugopen



"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe"
В самом компиляторе также нужно переключать настройки проекта

При первой сборке проекта на другой разрядности

нужно очистить проект и сделать ему ребилд

Ссылка на сообщение
Поделиться на других сайтах

libopenpp.lib и другие файлы lib должны быть от 64 разрядного NX

Соответственно если Вы хотите на одной машине

собирать приложения для разных платформ

то у Вас должно быть поставлено 2 NX

В иделале чтобы иметь возможнось запускать обе версии

у Вас должна быть 64 разрядная операционка

Для запуска компилятора нужно написать 2 батника

к каждом из которых перед стартом собственно компилятора

переопределять переменные NX на версию соответствующей разрядности

спасибо за разъяснения :smile:

Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...

Подскажите, с помощью какой функции можно извлечь свойства объекта из Teamcenter, (например наличие статуса(состояние)) . Нашел функцию:

int UF_UGMGR_invoke_pdm_server(int input_code, char * input_string, int * utput_code, char * * output_string) , но непонятно как ей пользоваться, как обратиться к ф-ции USER_invoke_pdm_server() function.

post-32820-1330599920.jpg

post-32820-1330599936.jpg

Ссылка на сообщение
Поделиться на других сайтах

Подскажите, с помощью какой функции можно извлечь свойства объекта из Teamcenter, (например наличие статуса(состояние)) . Нашел функцию:

int UF_UGMGR_invoke_pdm_server(int input_code, char * input_string, int * utput_code, char * * output_string) , но непонятно как ей пользоваться, как обратиться к ф-ции USER_invoke_pdm_server() function.

post-32820-1330599920.jpg

post-32820-1330599936.jpg

Если память не изменяет, то со стороны ТС должна работать программка (непомню точно как называется, писал другой человек), а я вызывал UF_UGMGR_invoke_pdm_server с нужным кодом (договаривались какой код что передает) и обрабатывал строки как надо.
Ссылка на сообщение
Поделиться на других сайтах

А как прописать путь к программке из ТС. Мне сделали DLL, я ее пытаюсь добавить, но она не видит ее. Я что-то неправильно делаю, вот часть кода:

HMODULE hModule=LoadLibrary("invoke_pdm_server.dll");

if (!hModule)

{

uc4403("ERROR");

}

UF_CALL(UF_UGMGR_invoke_pdm_server(1,part_name,&output_code, &date ));

Ссылка на сообщение
Поделиться на других сайтах

А как прописать путь к программке из ТС. Мне сделали DLL, я ее пытаюсь добавить, но она не видит ее. Я что-то неправильно делаю, вот часть кода:

HMODULE hModule=LoadLibrary("invoke_pdm_server.dll");

if (!hModule)

{

uc4403("ERROR");

}

UF_CALL(UF_UGMGR_invoke_pdm_server(1,part_name,&output_code, &date ));

Чтобы это вспомнить надо поднять старые контакты

...Поднял контакты...

Ситуация следующая. Со стороны NX никаких инициализаци делать не надо. Поэтому я ничего и не помню. Главное что бы NX работал под ТС, в программе обычно это легко проверяется. В проекте под NX просто вызывается функция и все.

Все приколюхи делаются в ТС. Отсылаю вас к ITK там все описано по полочкам.

Ссылка на сообщение
Поделиться на других сайтах

Чтобы это вспомнить надо поднять старые контакты

...Поднял контакты...

Ситуация следующая. Со стороны NX никаких инициализаци делать не надо. Поэтому я ничего и не помню. Главное что бы NX работал под ТС, в программе обычно это легко проверяется. В проекте под NX просто вызывается функция и все.

Все приколюхи делаются в ТС. Отсылаю вас к ITK там все описано по полочкам.

Спасибо. Начало получаться.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...