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

программирование под 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 пользователей

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




  • Сообщения

    • eljer0n
      Большое спасибо! Посмотрю. Но, судя по всему, даже если удастся заставить его сохранять чертеж с трехзначным исполнением, видимо, в той же спецификации правильного отображения не добиться. У Леона с товарищем был об этом разговор, что солид вроде как не воспринимает исполнения дальше двузначного. Хотя, может и я неправильно понял. Вернусь к этому вопросу чуть позже. Еще раз спасибо за совет.
    • mrVladimir
      @gudstartup @Viktor2004 спасибо Вам за такое участие.  Я вот тоже в maintenance manual заглянул (наконец-то ). А вот фраза "при замене FROM/SRAM необходимо ..." (под пунктом 3 во вложении) не подразумевает, что появление ps5523 произойдет только если мы решим на нашей чпу поменять именно FROM/SRAM. А при замене других печатных плат (в том числе и материнской ) необходимо только как написано в пункте 2 восстановить данные памяти SRAM и, при необходимости, файлы пользователя. Нет?
    • maxx2000
      @davidovka это же очевидно. Вдруг нужного размера не окажется  как в анекдоте  
    • davidovka
      А для чего и сотни исполнений в таблице и гибкость одновременно?
    • ak762
      в СВ есть встроенный калькулятор для расчета балок при различных сценариях нагружения если ваш профиль монорельса совпадает с предопределенными профилями то можно прикинуть поведение монорелься без анализа на картинке 2 расчета двутавровой балки в качестве теста    
    • Viktor2004
      @mrVladimir не спешите отчаиваться. Вопрос спорный Я завел новую тему в которой мы это выясним  
    • Viktor2004
      Уважаемые специалисты. У кого был опыт замены фануковских плат? Именно на ЧПУ. Пожалуйста напишите какое ЧПУ и какую плату меняли И результат. Подошла или не подошла  
    • gudstartup
      @mrVladimir к сожалению с вашей платой все не так просто вам придется приобрести ее клон то есть она должна быть подготовлена продавцом и в нее должен быть записан серийный номер вашей старой платы он на штрихкоде а так готовить умеют не все или готовьтесь к сертификации опций также есть еще один аппаратный вариант но не каждый будет на новую плату м\сх перепаивать с риском превратить ее в кирпич.   если бы у вас был отдельный модуль процессора то вы бы просто переставили его в новую плату и все а с этой платой из-за ее не модульности намучаешься
    • SAPRonOff
      в окне состава изделия снять замочки у колонки позиция, тогда генератор колонки состава изделия не будет им присваивать свои значения автоматически, а запомнит то - что вы поставили или стояло до изменений проекта: 
    • Kelny
      Смотреть надо процедуру main, почти в самом конце: Слева от этих строк на сером поле ставите красные точки (клик мышкой) и запускаете макрос, когда макрос дойдёт до обозначенных строк можно будет наводить мышку на перменные, например, sPathName и смотреть значения, что бы определить где сбой: Для продолжения выполнения макроса нажимаем зелёный треугольничек (как кнопка Play).      
×
×
  • Создать...