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

Структура файла на NX Open


Closius

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

www.ugs.co.kr/files/476/board/37492/F_50333.pdf Вспомнил про эту презентацию - там чуть рассказано про структуру, сессии и приведён пример иерархии классов. Может поможет.

 

Большое спасибо! А еще есть какие-нибудь полезные сайты для программирования?

 

Сейчас интересует обработка выбранного элемента (например поменять цвет выбранной грани).

 

Удачи в новых начинаниях:).

 

Спасибо)

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


Сайты для программирования вообще или для Ужика?)

1ого - полно, второго - не видел.

 

Вообще, при неимении времени/желания искать решения у тех поддержки, журналирование, как способ получения информации о работе какого-либо компонента, тащит. Но до тех пор, пока у Вас нет определённого условия выбора объекта для экспериментов.

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

Сайты для программирования вообще или для Ужика?)

1ого - полно, второго - не видел.

 

Вообще, при неимении времени/желания искать решения у тех поддержки, журналирование, как способ получения информации о работе какого-либо компонента, тащит. Но до тех пор, пока у Вас нет определённого условия выбора объекта для экспериментов.

 

Для UG конечно. По журналированию сейчас и изучаю...

 

А можете мне объяснить каким образом мне запросить у пользователя параметры? Например создаю точку. МНе надо запросить координаты х,у,z. То есть надо вызвать некоторое меню для запроса пользователь введет и далее все пошло поехало.

 

Вот код для построения точки на Java в рабочей системе координат.

import nxopen.*;
import nxopen.uf.UFDrf.GetTextSubstringData;
import nxopen.uf.UFParam;

public class CreateSimplePoint1
{
  public static void main(String [] args) throws NXException, java.rmi.RemoteException
  {
    Session theSession = (Session)SessionFactory.get("Session");
    Part workPart = theSession.parts().work();

    Point3d coordinates1 = new Point3d(5345.0, 456.0, 56.0);
    Point point2;
    point2 = workPart.points().createPoint(coordinates1);

    point2.setVisibility(nxopen.SmartObject.VisibilityOption.VISIBLE);
    
    nxopen.features.Feature nullFeatures_Feature = null;

    nxopen.features.PointFeatureBuilder pointFeatureBuilder1;
    pointFeatureBuilder1 = workPart.baseFeatures().createPointFeatureBuilder(nullFeatures_Feature);
    
    pointFeatureBuilder1.setPoint(point2);
    
    NXObject nXObject1;
    nXObject1 = pointFeatureBuilder1.commit();
    
    pointFeatureBuilder1.destroy();


  }
 
  public static final int getUnloadOption() { return BaseSession.LibraryUnloadOption.IMMEDIATELY; }
 
}
Ссылка на сообщение
Поделиться на других сайтах

Если есть лицензия, то смотрите в сторону Block UI Styler. Там куча готовых виджетов - от полей и переключателей, до всевозможных меню, мастеров и, кстати, готовых кнопок постановки точки.

+ хорошая дока

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

Я бы пожалел пользователя.. Пусть строит точку в NX, а в UGOPEN программе я бы предоставил есму выбрать точку.. Хотя - можно и координаты вводить.

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

Ну это же для пробы, я так понимаю.

 

Кстати, я туплю, у Джавы же Свинг есть. С таким вопросом можно как раз к знакомому программисту. А Block UI Styler нужен только для NX`ового сеттинга :biggrin:

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

Этот пример мне для пробы. Хотя строить мне надо будет.. Но максимум линию и точку.)

 

 

+ хорошая дока

 

Это в стандартном хелпе?

 

 

 

Кстати, я туплю, у Джавы же Свинг есть.

 

Вы про что?

 

Кстати, а какой нибудь лог есть у NX ? Чтобы понимать что происходит при запуске кода..  Про дебаг прочитал поверхностно, посмотрю завтра.

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

Это в стандартном хелпе?

 да

 

Вы про что?

http://ru.wikipedia.org/wiki/Swing

При запуске чего-то из журнала просто выполняется метод Main.

Если создавать меню в Block UI Styler, там подробнее расписано за что различные методы отвечают.

А про дебаг Вы где/что читали?

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

Про Свинг понял. Только я думал подключу плагин к Eclipse и буду как человек работать)

 

Сегодня научился спрашивать пользователя чтоб он выбрал грань, точку, поверхность и т.п. и получать их атрибуты. НО я не понял двух вещей:

 

1. Там есть Tag, а в графическом интерфейсе NX есть ID. Я так понял объект можно искать по его Tag (ну если надо)? Или же по ID. То есть есть ли какой то уникальный номер у каждого энтитис?

 

2. Есть некоторые методы (у объектов типа Edge, Face и т.п.), например getUserAtributes() (хотелось бы узнать что они возвращают) и им надо задать в качестве параметра некий title или type и как я понял номер элемента массива..  в некоторых случаях.. Где мне взять описания этих вещей? Есть класс UFConstans но так дикая куча всего и в половине не понятно что там (может там и есть эти title и type ?)...

 

 

А про дебаг Вы где/что читали?

 

Вот тут читал

 

post-16358-0-63929600-1387910394_thumb.jpg

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

1)

Component component = (Component) NXObjectManager.Get(tag); //пример возврата экземпляра класса Component по его Tag

2) Скорее всего, эти методы отвечают за атрибуты, которые вносятся в свойствах элемента. Этим не пользовался.
для получения информации о элементе существуют другие методы, как правило обёртки над С-шными функциями. Например:
NXOpen.UF.UFModl.AskFaceData - по tag грани возвращает её тип, нормаль, среднюю точку и т.д.

в данном случае, этот метод - обёртка над UF_MODL_ask_face_data

 

Всё написанное актуально для С#, с небольшими изменениями должно работать и на Java

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

В C# чтобы узнать определение метода, класса - просто нажмите F12

В Java - не помню. Но попробуйте нажать на класс/метод правой кнопкой мыши и выбрать из контекстного меню что-нибудь наподобие "Go to definition"

Изменено пользователем PostDeveloper
Ссылка на сообщение
Поделиться на других сайтах
Всё написанное актуально для С#, с небольшими изменениями должно работать и на Java

 

 

 

В C# чтобы узнать определение метода, класса - просто нажмите F12 В Java - не помню. Но попробуйте нажать на класс/метод правой кнопкой мыши и выбрать из контекстного меню что-нибудь наподобие "Go to definition"

 

Как красиво Вы говорите. Там же нет никакого описания даже маленьких примерчиков!!  Описания как использовать тот или иной метод для Java - нет. Уже все перерыл.

Скажи хотя бы может для C# есть? Или для C++ всетаки на нем написаны основные библиотеки, а Java просто нативно использует их функционал. Java это обертка на dll библиотеки NX как я понял...

 

Вот например как мне записать в переменную измеренную площадь поверхности?

 

Да и еще может кто знает функцию или метод в NXOpen для вычисления координат центра масс (координаты главных осей) некоторого объекта (например поверхности)?  Или например как проинтегрировать некоторую кривую (набор кривых, неразрывный набор) в определенной системе координат в пределах от а до в ?

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

Выбираем требуемый метод, нажимаем на него правой кнопкой мыши и выбираем "Перейти к определению".

По принимаемым параметрам можно определить что и для чего в методе.

А примеров там и не должно быть, это же среда разработки, в ней только все необходимое. Примеры нужно искать в других местах.

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

Выбираем требуемый метод, нажимаем на него правой кнопкой мыши и выбираем "Перейти к определению".

По принимаемым параметрам можно определить что и для чего в методе.

А примеров там и не должно быть, это же среда разработки, в ней только все необходимое. Примеры нужно искать в других местах.

 

Вы вот вначале попробуйте "Перейти к определению", а потом говорите. Там нихрена нет описания как использовать тот или иной метод/класс/объект. Если знаете, то напишите пожалуйста код как мне вывести в infowindow значение площади объекта типа Face с именем selFace

 

Вот пример моего кода: 

        Part workPart = theSession.parts().work();
        MeasureFaceBuilder measureFaceBuilder1;
        measureFaceBuilder1 = workPart.measureManager().createMeasureFaceBuilder(selFace);
        Unit unit1 = ((Unit)workPart.unitCollection().findObject("SquareMilliMeter"));
        Unit unit2 = ((Unit)workPart.unitCollection().findObject("MilliMeter"));
        MeasureFaces measureFaces1;
        measureFaces1 = workPart.measureManager().newFaceProperties(unit1 , unit2 , 0.999, measureFaceBuilder1.faceCollector());
        lw.writeLine("\nFace measureFaces1.area - "+ measureFaces1.area() );

Программа работает, ошибок нет, но выводит Face measureFaces1.area - 0.0

 

Не могу понять почему...

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

Я же пишу, что F12 нажимаем в C#, а в Java я не помню. То есть вам нужно самому пробовать или друга спрашивать.

К сожалению, у меня нет на машине Java компилятора.

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

Попробуйте в журнале сделать. Я так понимаю workPart.measureManager().newFaceProperties принимает последним аргументом не то, что Вы можете ожидать.

Рабочий вариант из журнала для С# и простой модельки.

// NX 8.0.3.4
// Journal created by igor on Thu Dec 26 14:04:03 2013 Арабское время (зима)
//
using System;
using NXOpen;

public class NXJournal
{
public static void Main(string[] args)
{
Session theSession = Session.GetSession();
Part workPart = theSession.Parts.Work;
Part displayPart = theSession.Parts.Display;
// ----------------------------------------------
// Меню: Анализ->Measure Face...
// ----------------------------------------------

MeasureFaceBuilder measureFaceBuilder1 = workPart.MeasureManager.CreateMeasureFaceBuilder(null);

DisplayableObject[] objects1 = new DisplayableObject[3];
NXOpen.Features.Extrude extrude1 = (NXOpen.Features.Extrude)workPart.Features.FindObject("EXTRUDE(1)");
Face face1 = (Face)extrude1.FindObject("FACE 180 {(0.3125,-0.0855117739647,1.10172812634) EXTRUDE(1)}");
objects1[0] = face1;
Face face2 = (Face)extrude1.FindObject("FACE 150 {(0.3125,0.4871623887326,0.0428777497619) EXTRUDE(1)}");
objects1[1] = face2;
Face face3 = (Face)extrude1.FindObject("FACE 140 {(0.3125,0.0481883491635,0.0289710250106) EXTRUDE(1)}");
objects1[2] = face3;
bool added1;
added1 = measureFaceBuilder1.FaceObjects.Add(objects1);

measureFaceBuilder1.InfoWindow = true;

Unit unit1 = (Unit)workPart.UnitCollection.FindObject("SquareMilliMeter");
Unit unit2 = (Unit)workPart.UnitCollection.FindObject("MilliMeter");
IParameterizedSurface[] objects2 = new IParameterizedSurface[3];
objects2[0] = face1;
objects2[1] = face2;
objects2[2] = face3;
MeasureFaces measureFaces1;
measureFaces1 = workPart.MeasureManager.NewFaceProperties(unit1, unit2, 0.99, objects2);

measureFaces1.Information();

measureFaces1.Dispose();
// ----------------------------------------------
// Меню: Инструменты->Журнал->Stop Recording
// ----------------------------------------------

}
public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }
}

 

Выбиралась одна грань, а в коде учитывалось три.


В C# чтобы узнать определение метода, класса - просто нажмите F12
В Java - не помню. Но попробуйте нажать на класс/метод правой кнопкой мыши и выбрать из контекстного меню что-нибудь наподобие "Go to definition"

А смысл, если методы не Вами написаны? Откроются только метаданные, где будет указано название метода и его аргументы. Resharper в таком случае даже "Go to definition" затемняет.

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

А смысл, если методы не Вами написаны? Откроются только метаданные, где будет указано название метода и его аргументы. Resharper в таком случае даже "Go to definition" затемняет.

Ребята, а мне почему-то C++ подсказывает:

This function provides the database object which is currently used to access the Machine Tool Library

extern UFUNEXPORT int UF_CAM_ask_mach_tool_db_object

(UF_CAM_db_object_t)

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

 

Ребята, а мне почему-то C++ подсказывает:

 

А под какую версию NX собираете?

Ссылка на сообщение
Поделиться на других сайтах
Рабочий вариант из журнала для С# и простой модельки.

 

Я тоже так делаю. Ошибки то нет... По журналу все работает, а по моему коду - нет...

 

Я уже и дебаг Эклипса с NX синхронизировал, только смысла там особого нет...

 

This function provides the database object which is currently used to access the Machine Tool Library extern UFUNEXPORT int UF_CAM_ask_mach_tool_db_object (UF_CAM_db_object_t)

 

Ну и что не это дало? Там не описано КАК использовать тот или иной метод.

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Alena2024
      Компания ООО «ТопС Бизнес Интегратор» (TopS BI) (входит в состав НКК) https://topsbi.ru/  проводит конкурс "АЛЬПИНИСТЫ САПР". Победителям конкурса будет предложено трудоустройство в компании TopS BI, занимающейся цифровой трансформацией высокотехнологичных предприятий машиностроительного комплекса и ОПК.   Мы предлагаем проявить свои таланты в конкурсе и стать частью нашей команды, чтобы развивать и применять свои навыки в самых интересных и важных цифровых проектах нашей страны.   Конкурс проходит с 20.05.2024 по 30.09.2024 включительно и состоит из двух этапов:   1)    Самостоятельное написание плагина для CAD системы (T-flex) на языке C++ 2)    Очное интервью   По итогам первого этапа отбора все участники получат баллы за написание плагина для CAD системы. Далее участники, набравшие наибольшее количество баллов, будут отобраны для проведения очных интервью. Участники, которые успешно пройдут этап интервью, получат возможность трудоустройства в компанию TopS BI.   Ознакомиться с информацией и зарегистрироваться на конкурс студенты могут на сайте TopS BI - https://topsbi.ru/competition.   Подробное описание конкурсного задания и необходимые инструкции будут отправлены участникам после регистрации на сайте.                    Приглашаем креативных молодых специалистов к участию в нашем конкурсе!  
    • Vengeance
      Там не сложно, почитай Post Section.pdf @lexa345 огромная благодарность за помощь с интеграцией Cimco в мой постпроцессор) За комментарии к циклам еще раз спасибо       
    • gudstartup
      а он там вообще есть? станок какого года 2023? у него поди  еще гарантия не кончилась так чего вас напрягают?
    • Kelny
      Последнии версии программы требуют завести в организации штат шаманов и не менее трёх бубнов, т.к. работы програмы часто требует риуталов Вуду, что бы хоть что-то работало нормально.   Так могут пропадать резьбы в сборках (частично или все), даже если вы их хотите или пытаетесь включить разнообразными способами, а если вам их удалось включить, то они могут отображаться не так как нужно. В вычислениях и уравнениях из-за вычислений с плавующей точкой два одинаковых числа могут быть не равны.   В чертежа на массивы обычно не надо задавать размеры каждого отверстия, а достаточно образмерить одно, шаг и максимальный размер.   Что подразумевается под правильно? Можно пример картинок, что это за отверстия и что значит правильно и как получается не правильно? Картинки или другие файлы в архиве можно вставлять прямо на форум после 10 сообщения на форуме.
    • kinovari
      Панель в виндовс не выходит... проект .ap18 по инфе производителя создан в тиа 18 
    • vad0000
    • OliverTwist
      Добрый день! Сдохла плата управления на приводе Bosch Rexroth серии HCS. Имеется в наличии ещё один такой привод и нужно стянуть с него параметры. Судя по документации мне необходим софт "IndraWorks ds" - но я никак не могу его найти :( Может кто-то подскажет - где можно такой скачать? Заранее спасибо!
    • gudstartup
      у ваших ис имеется сменщик паллет?? это просто место сбора слесарей + гидравлика мозг выносит. к фанукам притензий особых нет как и везде но электроавтоматика сделана отвратительно в шкафах полный хаос.   такие станки имеют износ 40-70% и их необходимо обновлять особенно это касается высокоточного оборудования но к исам это не относится там главное чтобы железо крепкое было я смотрю вы любите пространные описания но есть нюанс дочитывая до конца забываешь что в начале или это я такой склеротик
    • Alexandr97
      В сборке необходимо было создать массив нескольких деталей на линейном расстоянии друг от друга. При создании сопряжения между отдельной деталью и одним из объектов массива, объект массива ломается, свободно перемещается и расстояние, которое было задано при массиве, уже не актуально. При том, когда я к родительской детали пытаюсь крепиться, то все нормально. Подскажите, это недочет программы, или так и должно быть?
    • Shura762
      Кто нить пробовал ТФ18? ну там типа бета тестирование? или все это коммерческая тайна
×
×
  • Создать...