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

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 пользователей

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




  • Сообщения

    • ДОБРЯК
      Хорошо. Можно тоже самое написать еще раз. Вы ищите решение СЛАУ. И чтобы найти это решение вы задаете уравнение, что  перемещение какой-то степени свободы равна какому-то числу. Но в данном примере всего два уравнения, всего две степени свободы.  И сказав, что перемещение первой степени свободы равно 1, например, у вас остается одно уравнение с одним неизвестным.  А если у вас СЛАУ из 100 уравнений, вы скажите, что перемещение первой степени свободы равно 1, например. Но как найти остальные 99 неизвестных не решая СЛАУ? Нужно решать в общем случае?   Решайте любым методом. Вы скажите нужно СЛАУ решать для нахождения собственных векторов.  Предлагаю двигаться маленькими шажками. Если нужно решать СЛАУ, то это один путь развития диалога, если не нужно, другой.
    • bubl leg
      Кстати, может кто знает - возможно ли в Солиде, наложить на плоскую/круглую/произвольной формы деталь - картинку чёрно-белую (карта высот) и выдавить её в виде объёмной рельефной поверхности? Понимаю, что солид не совсем для этого -но чем чёрт не шутит...:-) Такой инструмент есть в 3D Studio Max - модификатор displace. "Знал, умел, практиковал". :-) Итак?
    • Nikomas
      Господа, ищу того, кто сможет внести изменения в программу ПЛК станка. В частности необходимо убрать инициализацию цепи безопасности (проверку замков дверей) при загрузке Sinumerik. Образ скачан и заархивирован в Step7.
    • Anat2015
      Какой станок, какое ЧПУ, какой магазин, и т.д. и т.п.? Задаете вопросы, как будто здесь все экстрасенсы.
    • Fedor
      верхняя линия это если не учитываем давления воздуха, а нижняя если учитываем.  То есть если не учитываем то считаем грунт более прочным чем на самом деле ...  
    • maxx2000
      @asd выводит нормально, с постпроцессором что-то  
    • Orchestra2603
      Это уже больше похоже на конструктивный разговор.   Я это понимаю. Мой тезис заключается в том, что когда мы ищем собственные вектора, мы вообще не решение ищем. Ну, не совсем решение, если хотите. В терминах СЛАУ можно сказать, что мы ищем базисные вектора фундаментальной системы решений. Нам не нужно что-то фиксировать и вводить какие-то точки отсчета. Нам нужно установить все пространство возможных решений однородной системы целиком, и потом из него просто выделить некоторый базис. Это не то же самое, что найти решение СЛАУ.   Про факторизацию... В моем понимании факторизация (в частоности, матрицы) - это разложение на множители (здесь на матричные множители), так чтобы получились какие-то другие матрицы, которые обладают какими-то выгодными свойствами (разложение Холецкого для положительно определенных матриц, LU, QR, QZ, сингулярное разложение и т.д.) В моем понимании это обычно нужно для повышении эффективности последующих операций, ускорения работы алгоритмов, для лучшей сходимости итерационных методов, где-то для эффективной параллелизации и т.д. Ничего не слышал раньше о ситуациях, когда факторизация жизненно необходима, и без нее задача не решается. Как я это вижу, существует много различных способов факторизации матрицы. Я просто не могу понять про какую конкретно факторизацию вы говорите и не могу понять, как она должна помочь, и почему ее невозможно сделать для вырожденной матрицы? Я бы, честно говорю, хотел разобраться в этом. Возможно, я что-то вообще неправильно понимаю.
    • asd
      Надеюсь, это то, что вы имели в виду.   TOOL PATH/THREAD_MILLING_1_COPY,TOOL,STD_DRILL TLDATA/TCUTTER,10.0000,0.0000,0.0000,80.0000,10.0000,8.0000 MSYS/0.0000,0.0000,0.0000,1.0000000,0.0000000,0.0000000,0.0000000,1.0000000,0.0000000 $$ centerline data PAINT/PATH PAINT/FEED PAINT/SPEED,10 PAINT/COLOR,186 FROM/0.0000,0.0000,50.0000,0.0000000,0.0000000,1.0000000 LOAD/TOOL,1 RAPID GOTO/0.0000,0.0000,3.0000 PAINT/COLOR,181 FEDRAT/MMPM,500.0000 GOTO/0.0000,0.0000,-33.0211 PAINT/COLOR,6 FEDRAT/250.0000 GOTO/21.6792,-1.2470,-33.0211 CIRCLE/21.7509,0.0000,-33.0000,0.0000000,0.0000000,-1.0000000,1.2491,0.0100,0.5000,10.0000,0.0000 GOTO/23.0000,0.0000,-33.0000 PAINT/COLOR,31 CIRCLE/0.0000,0.0000,-4.5000,0.0000000,0.0000000,-1.0000000,23.0000,0.0100,0.5000,10.0000,0.0000,TIMES,19 GOTO/23.0000,0.0000,-4.5000 PAINT/COLOR,1 CIRCLE/21.7509,0.0000,-4.4789,0.0000000,0.0000000,-1.0000000,1.2491,0.0100,0.5000,10.0000,0.0000 GOTO/21.6792,1.2470,-4.4789 GOTO/0.0000,0.0000,-4.4789 PAINT/COLOR,103 RAPID GOTO/0.0000,0.0000,50.0000 PAINT/FEED,NOMORE PAINT/SPEED,10 PAINT/TOOL,NOMORE END-OF-PATH  
    • gudstartup
      @Aiche если у вас осталасть на столе привязанная деталь  то можете выставить нули так чтобы значения совпали и ничего снимать не придется к тому же от того что вы снимите ничего не поменяется ведь под кожухами у вас нет никаких 0 меток ни направляющих ни на станине очень неприятные. надо было оставить режим принудительного обнуления @Aiche и срочно сделайте нормальный бэкап в вашем кроме программ ничего нет. хотябы копию памяти надо иметь а то может и в чпу батарейка сесть и тогда будет очень плохо
    • Fedor
      То есть грунт физически находится в сжатом состоянии на поверхности земли. И при вычислении связности грунта логично бы учесть это при построении предельного графика сигма - тау... 
×
×
  • Создать...