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

программирование под Nx (+UiStyler)


bazelboday

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

А где лежат библиотеки? Прямо в каталоге проекта или в NX?

нет, я добавлял их через Добавить->Существующий, а так они лежат в папке, куда установлен UGS

Если их еще надо скопировать в каталог проекта, то их копировать прямо в папку с названием проекта или в какое то определенное место?

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


Да не надо их копировать, кстати я lib-файлы не могу добавить - их даже в списке типов нет. Вообще их надо просто добавить вручную в опциях командной строки линкера + указать путь к ним в Добавочных путях библиотек проекта или в VC++ Directories в самой студии...

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

у меня по-моему эти библиотеки уже везде где только можно размещены, но ничего не меняется, ошибка все так же.

 

опишу по шагам свои действия:

 

1. Создать новый проект -> Консольное приложение Win32 -> имя: proba7

 

2. Dll пустой

 

3. Файлы исходного кода -> Добавить -> Создать -> .cpp имя proba

 

4. свойства проекта -> c/c++ :

 

4.1 Дополнительные  каталоги  включения: указываю папки ugopen и ugopenpp

 

4.2 Компоновщик -> Общие -> Дополнительные ката-логи библиотек: указываю папку ugopen

 

4.3 Компоновщик -> Ввод -> Дополнительные зависимости: прописываю -> libufun.lib libnxopencpp.lib libugopenint.lib libnxopenuicpp.lib libopenpp.lib libopenintpp.lib libvmathpp.lib

 

4.4 Компоновщик -> Системы -> Подсистема: выбираю Console

 

5. в файл proba.cpp копирую следующий код:

 

#include <uf.h> 
#include <uf_curve.h>
 
void ufusr(char *param, int *retcode, int paramLen) 
{ tag_t  entid = 0;  // Идентификатор объекта «линия» 
UF_CURVE_line_t line_coords; /* структура концевых точек линии*/
if (UF_initialize()) return; 
//заполнение координат концевых точек линии
line_coords.start_point[0]=0.; // X1
line_coords.start_point[1]=0.; // Y1
line_coords.start_point[2]=0.; // Z1
line_coords.end_point[0]=100.; // X2
line_coords.end_point[1]=100.; // Y2
line_coords.end_point[2]=100.; // Z2
// построение линии
UF_CURVE_create_line (&line_coords, &entid); 
UF_terminate(); 
//процедура выхода из приложения
int ufusr_ask_unload(void) 
{ return (UF_UNLOAD_IMMEDIATELY); }
 
6. Начать отладку
 
7. Результат: 
 
1>Компиляция манифеста в ресурсы...
1>Microsoft ® Windows ® Resource Compiler Version 6.1.6723.1
1>Copyright © Microsoft Corporation.  All rights reserved.
1>Компоновка...
1>   Создается библиотека D:\NX\cpp\proba7\Debug\proba7.lib и объект D:\NX\cpp\proba7\Debug\proba7.exp
1>proba.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__UF_terminate в функции _ufusr
1>proba.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__UF_CURVE_create_line в функции _ufusr
1>proba.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__UF_initialize в функции _ufusr
1>D:\NX\cpp\proba7\Debug\proba7.dll : fatal error LNK1120: 3 неразрешенных внешних элементов
1>proba7 - ошибок 4, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
 
кто-нибудь знает, что я делаю не так? 

 

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

Ну там вообще то много настроек в свойствах проекта - может что то и не так.

Проще поставить мастер, ничего сложного вроде нет - просто копируем файлы из

\UGOPEN\vs_files\VC\vcprojects\  в   "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcprojects\"

и каталог \UGOPEN\vs_files\VC\VCWizards\NX7_Open в "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\VCWizards\" ...


Еще пути можно прописать в Tools->Options->Projects and Solutions->VC++ Directories...

Может под другую платформу пишешь Win64 вместо Win32 или еще чего нибудь...

 

У меня такая ошибка была когда под NX32 брались библиотеки от NX64 (когда под оба NX компилил проект).  Тут в принципе только 2 варианта: или не находит, или не те...

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

У меня стоит NX64 и видимо библиотеки тоже x64, а VS могу выбрать только x32. А для того, чтобы появились библиотеки для NX32, его ставить надо? ну или я так понимаю VS переустанавливать для x64?

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

Да - или ставь NX32 или переставь VS с 64-битным компилятором...

Спасибо огромное! поставил VS x64 и все получилось! :smile:

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

Подскажите, пожалуйста, как создать проект для NX 7.5 в Visual Studio 2008. Делал все, как написано у отрывке из книги Тихомирова В.А., после нескольких попыток все-таки появился шаблон NX7 Open Wizard. При создании нового проекта выбираю тип dll и язык с++, дальше необходимо выбрать точку входа и выхода, как я понимаю:

 

cb002df7f11e00f12d6a3f1b15f1b67d.jpg

 

Пробовал различные комбинации, но после нажатия на Finish ничего не происходит, только внизу слева надпись "Создание проекта .... не удалось создать проект". После установки SP1 все тоже самое. Может быть есть еще какие-нибудь тонкости?

попробуйте скопировать другие шаблоны проектов(Wizard, Projects). Например, NX 8.5

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

Всем доброго времени суток)

Уже больше месяца разбираюсь с NX Open, много чего перечитал, включая книгу Тихомирова (полную версию на 438стр). Взялся писать программку для диплома. Остались вопросы, на которые никак не могу найти ответы, прошу вас подсказать)

 

Хотел переработать Анализ формируемости для построения разверток с учетом свойств материалов. Модуль не поддался, забил. Случайно вышел на разработчиков этого модуля из Китая, программа донор Анализа называется EasyForm. Встречается только в сборках с NX 4.0.3.3, в NX 5 уже свой продукт на основе китайского. Первый вопрос - где можно достать обновление до 4.0.3.3? через Журнал я бы этот модуль разложил, в нем есть все мне необходимое. В Сети не найти. Или может быть есть у кого версия 4.0.3 - 4.0.4?

http://www.itscz.net/software/unigraphics/pdf/nx_pdw_easy_form.pdf здесь инфа про EasyForm. Сейчас у меня есть NX 4.0.0.2 64bit.

 

Сейчас я пробую другой вариант. Понравилась Общая формовка. Вроде делает все то, что нужно, с учетом физических свойств, но из журнала, понятное дело, работает только с той моделью, на которой записывалась и я никак не пойму как сделать ее универсальной. Не хотел я делать через Блок стайлер, но иначе отметить нужные грани и конечные линии не получится, хотя автоматизировать процесс построения поверхности, на которую будет строиться формовка получилось. Грани программа сама не определит. В блок стайлере создал нужные мне кнопки и поля для значений, занес проект VS NX8 OPEN Wizard, откомпилировал, запускаю через Функцию пользователя и получаю ошибку. Не находит dlx файл, хотя я его подсунул во все папки проекта. Что в этом случае не так? Как вообще запустить такую программу с интерфейсом? И я не до конца представляю, как из журнала корректно перенести функции в код блок стайлера. Чтобы понять правильность вносимого кода, нужно как-то это все прогнать в среде NX.

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

Как у Вас задан путь к dlx-файлу? Если так:   theDlxFileName = "File_Name. DLX"  , то попробуйте в виде: "Disk:\\Folder_1\\File_Name. DLX"

 

Пример кода на VB

 

Public Sub New()
        Try
            theSession = Session.GetSession()
            theUI = UI.GetUI()
            theDlxFileName = "c:\\Users\\Roman\\Desktop\\ug\\Label_Leader\\Label_leader.dlx"
            theDialog = theUI.CreateDialog(theDlxFileName)
            theDialog.AddApplyHandler(AddressOf apply_cb)
            theDialog.AddOkHandler(AddressOf  ok_cb)
            theDialog.AddUpdateHandler(AddressOf  update_cb)
            theDialog.AddInitializeHandler(AddressOf  initialize_cb)
            theDialog.AddDialogShownHandler(AddressOf  dialogShown_cb)
        Catch ex As Exception
            '---- Enter your exception handling code here -----
            Throw ex
        End Try
    End Sub

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

Не хотел я делать через Блок стайлер, но иначе отметить нужные грани и конечные линии не получится

Доброго. Вы заблуждаетесь. Выбрать нужные вам элементы без блокстайлера возможно, вызвав UF_UI_select_with_class_dialog или UF_UI_select_with_single_dialog. Например, создайте меню с помощью функции uc1608 (точно не помню...но они там все uc160...) и далее к каждой кнопке подцепите нужную вам ф-ю выбора. Конечно не так наглядно как со стайлером.

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

Доброго. Вы заблуждаетесь. Выбрать нужные вам элементы без блокстайлера возможно, вызвав UF_UI_select_with_class_dialog или UF_UI_select_with_single_dialog. Например, создайте меню с помощью функции uc1608 (точно не помню...но они там все uc160...) и далее к каждой кнопке подцепите нужную вам ф-ю выбора. Конечно не так наглядно как со стайлером.

Интересно, спасибо большое! я встречал подобные функции на вывод окон без блокстайлера, но без выбора. Сейчас попробую, в таком случае как лучше уйти от переменных в функциях журнала, которые привязаны к элементам модели? В блок стайлере я помещаю функцию из журнала в тело, например, коллектора и она должна передать результат. Так я могу убрать от ссылок на элементы модели

Как у Вас задан путь к dlx-файлу? Если так:   theDlxFileName = "File_Name. DLX"  , то попробуйте в виде: "Disk:\\Folder_1\\File_Name. DLX"

 

Пример кода на VB

 

Public Sub New()

        Try

            theSession = Session.GetSession()

            theUI = UI.GetUI()

            theDlxFileName = "c:\\Users\\Roman\\Desktop\\ug\\Label_Leader\\Label_leader.dlx"

            theDialog = theUI.CreateDialog(theDlxFileName)

            theDialog.AddApplyHandler(AddressOf apply_cb)

            theDialog.AddOkHandler(AddressOf  ok_cb)

            theDialog.AddUpdateHandler(AddressOf  update_cb)

            theDialog.AddInitializeHandler(AddressOf  initialize_cb)

            theDialog.AddDialogShownHandler(AddressOf  dialogShown_cb)

        Catch ex As Exception

            '---- Enter your exception handling code here -----

            Throw ex

        End Try

    End Sub

Хорошо, если так можно, попробую сейчас, спасибо!

Как у Вас задан путь к dlx-файлу? Если так:   theDlxFileName = "File_Name. DLX"  , то попробуйте в виде: "Disk:\\Folder_1\\File_Name. DLX"

 

Пример кода на VB

 

Public Sub New()

        Try

            theSession = Session.GetSession()

            theUI = UI.GetUI()

            theDlxFileName = "c:\\Users\\Roman\\Desktop\\ug\\Label_Leader\\Label_leader.dlx"

            theDialog = theUI.CreateDialog(theDlxFileName)

            theDialog.AddApplyHandler(AddressOf apply_cb)

            theDialog.AddOkHandler(AddressOf  ok_cb)

            theDialog.AddUpdateHandler(AddressOf  update_cb)

            theDialog.AddInitializeHandler(AddressOf  initialize_cb)

            theDialog.AddDialogShownHandler(AddressOf  dialogShown_cb)

        Catch ex As Exception

            '---- Enter your exception handling code here -----

            Throw ex

        End Try

    End Sub

Помогло! Спасибо еще раз

post-54539-0-68269100-1466339471.jpg

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

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

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

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

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

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

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

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

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

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

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




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