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

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


NX-Open-Dummer

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

Нет такого :'(( Справка не находит данный метод =(

Нашел UF_SO_create_line_two_points, но мне не нужен smart object. А если создаем прямую UF_CURVE_Line, то получаем только Tag прямой. Если я правильно понимаю мне надо каким-то неведомым образом Tag line_id нужно перевести в Tag feature_id и тогда будет мне счастье, но как это сделать ума не приложу...

Или все же объектами класса UFSo пользоваться?

Также нашел

int UF_CURVE_create_line_arc

(

UF_CURVE_line_arc_t * line_arc_data,

tag_t * line_arc_feat_id

)

По настройкам очень напоминает построение руками в NX, но как ее настроить, даже на китайских форумах никто не знает =(

То что я написал это команда из UGOpen uf_curve.h
Ссылка на сообщение
Поделиться на других сайтах


То что я написал это команда из UGOpen uf_curve.h

Я исользую NXOpen .Net API, и сишный хедер мне не подключить =(

Все методы и классы у меня из NXOpen =(

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

Нет такого :'(( Справка не находит данный метод =(

Нашел UF_SO_create_line_two_points, но мне не нужен smart object. А если создаем прямую UF_CURVE_Line, то получаем только Tag прямой. Если я правильно понимаю мне надо каким-то неведомым образом Tag line_id нужно перевести в Tag feature_id и тогда будет мне счастье, но как это сделать ума не приложу...

Или все же объектами класса UFSo пользоваться?

Также нашел

int UF_CURVE_create_line_arc

(

UF_CURVE_line_arc_t * line_arc_data,

tag_t * line_arc_feat_id

)

По настройкам очень напоминает построение руками в NX, но как ее настроить, даже на китайских форумах никто не знает =(

SO не для этого нужен и Твою проблему не решит. Он в дерево построения модели ничего не добавляет и фичеров не создает

То есть не для моделинга

Он позволяет создавать ассоциативные объекты не входящие в дерево построения модели и для Твоей задачи не пригоден

Хотя например если тебе надо связать с Твоим фичером expression то делается это с помощью смарт скаляра

То есть по экспрешину строить смарт и на него уже ставишь линк

Также в драфтинге нужно иметь в виду что если мы в качестве линков связываем объекты вида (ребра силуэты ...)

то надо вязаться не напрямую к ним а строить на них смарт точки и вязаться к ним (Tag при обновлении у них модифицируется если на нем не висит смарт)

По поводу Трудоемкости - да она большая (по сравнению с тем же KBE примерно как минимум на 2 прорядка)

В свое время на обучении я написал полностью ассоциативный прямоугольник из 4 линий по 2 экспрешинам с нуля ровно за день

полностью комментируя свои действия

На KBE эта задача решается за 5-10 минут и занимает от силы 20 строк кода

Я исользую NXOpen .Net API, и сишный хедер мне не подключить =(

Все методы и классы у меня из NXOpen =(

Там тоже все эти методы имеются и все это можно написать
Ссылка на сообщение
Поделиться на других сайтах

nut888, спасибо! =)

Никак не могу разобраться в функции UF_CURVE_create_line_arc, по описанию в справке эта фунция как раз и строит ассоциативную кривую, надеюсь добавит ее в дерево. Задал все необходимые начальные параметры, чтобы она построила окружность с центром в начале координат и радиусом 30.

Вот код

double[] point_coords = new double[3] {0.0,0.0,0.0};            Tag point_id;            theUfSession.Curve.CreatePoint(point_coords, out point_id);            double[] plane_normal = new double[3] { 0.0, 0.0, 1.0 };            Tag plane_id;            theUfSession.Modl.CreatePlane(point_coords, plane_normal, out plane_id);            UFCurve.LineArc line_arc_val = new UFCurve.LineArc();            line_arc_val.curve_type = UFCurve.LineArcType.AssoArc;            line_arc_val.arc_constraint_subtype = UFCurve.AssoArcSubtype.AssoArcFromCenter;                        line_arc_val.constraints = new UFCurve.Constraint[3];            line_arc_val.constraints[0] = new UFCurve.Constraint();            line_arc_val.constraints[0].constraint_type = UFCurve.ConstraintType.Coincident;            line_arc_val.constraints[0].object_tag = point_id;            line_arc_val.constraints[1] = new UFCurve.Constraint();            line_arc_val.constraints[1].constraint_type = UFCurve.ConstraintType.Radius;            line_arc_val.constraints[1].value = 30;            line_arc_val.plane_of_curve = plain_id;            line_arc_val.complement = true;            line_arc_val.closed = true;            line_arc_val.is_associative = true;            Tag line_id;            theUfSession.Curve.CreateLineArc(ref line_arc_val, out line_id);

Выдает ошибку "Выбранная грань или плоскость являются недопустимыми или не поддерживаются.", если делаю line_arc_val.plane_of_curve = NXOpen.Tag.Null, ошибка "Неправлильный объект для этой операции.", подскажите, пожалуста, что я делаю не так и какая плоскость нужна? Или где можно посмотреть пример работы этой этой фукции?

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

камрады! :blink:

У коллеги переустановили NX 32-разр на NX 64-разр.

При запуске dll пользователя 64-разр выдается ошибка:

"Не возможно загрузить изображение - см. журнал

Имя файла: ....dll

Имя функции: ufusr"

У меня был установлен NX 64-р на новый комп. И всё работает.

Слышал, что это скорее всего связано с .NET Framework.

И что дальше? Фреймворк переустанавливать?

И какой ставить? 2ой или 4ый?

Есть админы или продвинутые, кто может подсказать? :helpsmilie:

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

Как ты думаешь, как рояль 4х4х4 метра втащить в дверной проем 2х2 метра??

Как просунуть 64-битную DLL в ворота 32-х разрядного NX? Делай тогда уж 32-разрядную DLL.. Хотя запускать 32-разрядные приложения на 64-битной платформе - моветон...

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

Как ты думаешь, как рояль 4х4х4 метра втащить в дверной проем 2х2 метра??

Как просунуть 64-битную DLL в ворота 32-х разрядного NX? Делай тогда уж 32-разрядную DLL.. Хотя запускать 32-разрядные приложения на 64-битной платформе - моветон...

что-то я не понял! у меня чёрным по белому написано, что и NX 64-битный, и dll 64-битная!

но на одном компе все работает, а на другом нет. хотя все одно и то же.

а моветон - дурной тон, невоспитанность - это Ваш ответ. грубо и не по делу.

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

Разуй глаза!

Черным по белому написано -

переустановили NX 32-разр на NX 64-разр.

А если и NX и DLL и Win - все это 64-битное - то в зависимости от того, в каком VS это делалось - нужен соответствующий .NetFrameWork, скорее всего 4-й. И vcredist64 - за этим на сайт Microsoft.

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

я вот вспоминаю свой вопрос

Коллеги! :)

Как сделать, чтобы на одном компьютере можно было компилировать 32- и 64-b dll-ки? Установить VS 64-b + NX 64-b + NX 32-b, а потом в VS в свойствах проекта прописывать пути до соответствующих каталогов NX? Просто теория теорией, а на практике не делал. Потому и спрашиваю. :)

твой ответ

Да, именно так. Причем сам NX можно и не устанавливать, например - 32-х битный можно вовсе не ставить, только lib-ы "сложить" в какую нибудь папку и соответственно подсовывать в нужной конфигурации проекта.

и ответ nut888

Нет не так

Такой проект будет непереносим между машинами

Лучше написать батник для запуска компилятора и в нем определять необходимые NX переменные

Тогда Тебе при компиляции придется перезапускать компилятор другим батником для сборки на другой платформе

я знаю, что вариант nut888 не единственный. но твой вариант - это вообще не вариант. ты сам-то понимаешь, что это непрофессионально?!

дальше опять мой вопрос

камрады! :blink:

У коллеги переустановили NX 32-разр на NX 64-разр.

При запуске dll пользователя 64-разр выдается ошибка:

"Не возможно загрузить изображение - см. журнал

Имя файла: ....dll

Имя функции: ufusr"

У меня был установлен NX 64-р на новый комп. И всё работает.

Слышал, что это скорее всего связано с .NET Framework.

И что дальше? Фреймворк переустанавливать?

И какой ставить? 2ой или 4ый?

Есть админы или продвинутые, кто может подсказать? :helpsmilie:

и опять твои ответы

Как ты думаешь, как рояль 4х4х4 метра втащить в дверной проем 2х2 метра??

Как просунуть 64-битную DLL в ворота 32-х разрядного NX? Делай тогда уж 32-разрядную DLL.. Хотя запускать 32-разрядные приложения на 64-битной платформе - моветон...

Разуй глаза!

Черным по белому написано -

переустановили NX 32-разр на NX 64-разр.

А если и NX и DLL и Win - все это 64-битное - то в зависимости от того, в каком VS это делалось - нужен соответствующий .NetFrameWork, скорее всего 4-й. И vcredist64 - за этим на сайт Microsoft.

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

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

короче говоря, поменьше понтов и побольше профессионализма!

да! и конечно спасибо! ;)

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

Вот за это я и люблю русские форумы. :clap_1:

На буржуйские как-то заходишь - там тихо, спокойно, все другу-другу помогают (не без исключений, конечно).

Даже статьи на буржуйской википедии (en.wikipedia.org) вызывают ощущение... ну как будто они с душой сделаны, для людей. Как правило - написаны более качественно, чем на русской.

На русские заходишь - срач, оскорбления, взаимные упрёки, попытка доказать окружающим и самому себе свою точку зрения любой ценой. В половине тем напрямую или косвенно пишут: "Да, мы можем вам помочь, но только за деньги." Впрочем и топикстартеры в этих темах, как правило, толком не сформулировав вопрос, считают что все уже обязаны им помогать. Все друг друга стоят, в общем-то. :bleh:

Я не сторонник рассуждений про российский менталитет, но как-то грустно становится, товарищи. Добрее надо быть (наверное). *мир, дружба, жвачка и всеобщие женщины всем и каждому*

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

камрады! :blink:

У коллеги переустановили NX 32-разр на NX 64-разр.

При запуске dll пользователя 64-разр выдается ошибка:

"Не возможно загрузить изображение - см. журнал

Имя файла: ....dll

Имя функции: ufusr"

У меня был установлен NX 64-р на новый комп. И всё работает.

Слышал, что это скорее всего связано с .NET Framework.

И что дальше? Фреймворк переустанавливать?

И какой ставить? 2ой или 4ый?

Есть админы или продвинутые, кто может подсказать? :helpsmilie:

Возможно Ты собрал не той версией компилятора которая рекомендована в документации

Я имею в виду не только разрядность 32 и 64 но и N версии

В документации указано соответствие версия компиляторов и NX и нужно этого придерживаться

даже если все работает

Как я как то уже писал проблемы могут быть с STL - это не Твой случай

и могут быть с соответствием версии загрузчика dll с Твоей dll

То есть Ты можешь получить проблемы например на нормально работающей dll в XP

если перенесешь ее на WIN7 например, а можешь и не получить

Да кстати

нужно иметь в виду что dll в windows может содержать коды виртуальной машины Microsoft

и тогда ее можно запускать как на 32 так и на 64 разрядной NX

И напоследок

<noindex>Динамические библиотеки для начинающих</noindex>

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

Возможно Ты собрал не той версией компилятора которая рекомендована в документации

Я имею в виду не только разрядность 32 и 64 но и N версии

В документации указано соответствие версия компиляторов и NX и нужно этого придерживаться

даже если все работает

Как я как то уже писал проблемы могут быть с STL - это не Твой случай

и могут быть с соответствием версии загрузчика dll с Твоей dll

То есть Ты можешь получить проблемы например на нормально работающей dll в XP

если перенесешь ее на WIN7 например, а можешь и не получить

Да кстати

нужно иметь в виду что dll в windows может содержать коды виртуальной машины Microsoft

и тогда ее можно запускать как на 32 так и на 64 разрядной NX

И напоследок

<noindex>Динамические библиотеки для начинающих</noindex>

проблему давно решил. наверно все таки надо отписаться. :)

переустановка нашим админом C++ Redistributable для Visual Studio не помогла.

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

пришлось лезть в проект, в свойства и менять в "Библиотеке времени выполнения" с по умолчанию "Многопоточная DLL (/MD)" на "Многопоточная (/MT)". вот и всё!

nut888, за ссылку на статью про динамические библиотеки спасибо! обязательно прочту! :)

всем всего наилучшего! :)

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

Есть ли в NXOpen способы запуска окон выполнения различных операций (построение экструдов, револвов, фасок и т. д. и т. п.) по типу запуска окон выбора элементов (selection) ? По классам очень похоже пространство имен NXOpen.Features, но пока ни к чему конкретному все эксперименты не привели.

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

должно быть :smile:

по типу запуска окон выбора элементов (selection)

Такое есть в Ug Open. Смотри UF_UI_select_with_class_dialog

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

должно быть :smile:

Такое есть в Ug Open. Смотри UF_UI_select_with_class_dialog

Спасибо, походу в NXOpen эту функцию обертывает метод NXOpen.UF.UFUi.SelectWithClassDialog

Я с другой стороны подошел - в модуле Разработка блока UI есть возможность построить нужное окно, а потом сгенерить для него код. Основывается диалог на классе NXOpen.BlockStyler.BlockDialog и всё достаточно круто (уже сгенерированный класс имеет методы для нажатий клавиш OK, Cancel и т. д.), но не ясно как брать данные выборки из NX`а и вообще данные из окна. Вся структура окна описывается в xml формате в дополнительном файле. У кого-нибудь эсть опыт работы с такими диалоговыми окнами?

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

Кроме xml-файла там еще вообще то и код генерится на выбранном языке программирования

(+ см. примеры к документации из папки ...\UGOPEN\SampleNXOpenApplications\.NET\BlockStyler,

да и тут на форуме это уже обсуждалось не раз)...

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

Кроме xml-файла там еще вообще то и код генерится на выбранном языке программирования

(+ см. примеры к документации из папки ...\UGOPEN\SampleNXOpenApplications\.NET\BlockStyler,

да и тут на форуме это уже обсуждалось не раз)...

Просто в хелпе был описан доступ к select-handler через класс диалога UIStyler, а не через BlockStyler. Оказалось, что доступ к handler получать не обязательно, а все свойства, которые я искал в .Net не были добавлены в св-ва класса и просто возвращаются через PropertryList.
Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте.

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

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

Можно, но сложно - надо создать свой UDO-класс с обработчиками - тогда на редактирование будет твоя прога всплывать. А фичеры в группу объединить...

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

Доброго времени суток!

Пытаюсь создать границу для обработки из кривых в шаблоне PLANAR_MILL функцией

extern UFUNEXPORT int UF_CAMBND_append_bnd_from_curve

(

   tag_t							 object_tag,	  /* <I> the parent object of the

														  boundary */

   UF_CAM_geom_type_t			 type,			/* <I> the type of the boundary */

   int									count,		   /* <I> the count of edges/curves */

   tag_t							 *curves,		 /* <I> count

														  the edge/curve tags from which

														  a boundary will be created */

   UF_CAMBND_boundary_data_p_t	boundary_data,   /* <I> the boundary data */

   UF_CAMBND_app_data_p_t		 *app_data		/* <I> count the application data for each member */

);

А что за родительский объект границы -первый формальный параметр? Откуда его взять или как его задать?

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

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

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

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

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

  Разрешено не более 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).      
×
×
  • Создать...