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

Структура файла на 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 пользователей

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




  • Сообщения

    • ak762
      @jtok записал видео с СВ23 может поможет разобраться Recording 2024-05-23 211508.mp4
    • Павлуха
    • nikzubik
      они подключены на видео не видно, загрузил фото в хорошем качестве там видно что эти разьемы подключенны нет там напряжения, как то раньше мерял было что то около 100 вольт, сейчас померял там нет ничего
    • Александр1979
      Посмотрите на станке, где есть "автоподход", параметры 6071-6089. Если в одном из этих параметров число 46, то при выполнении кода M46 вызывается пользовательская макропрограмма. 
    • jtok
      Какая хоть версия, чего ставить? У меня последняя 21(
    • androskv
      При выборе того или иного подшипника для обеспечения его статической и динамической прочности необходимо руководствоваться справочными значениями его статической и динамической грузоподъемности. В старых ГОСТах (за 1975 и 1987 гг.) для указанных ниже в таблице подшипников приводились таблицы со справочными значениями их статической и динамической грузоподъемности. Но неожиданно для себя я обнаружил что в новых ГОСТах (за 2022 и 2023 гг.) данные таблицы отсутствуют, а также отсутствует какая-либо ссылка (сноска), где в этом случае смотреть справочную статическую и динамическую грузоподъемность подшипников. Поиск информации вывел на два ГОСТа: – ГОСТ 18855-2013. Подшипники качения. Динамическая грузоподъемность и номинальный ресурс – ГОСТ 18854-2013. Подшипники качения. Статическая грузоподъемность.   В данных ГОСТах действительно есть формулы для расчета статической и динамической грузоподъемности для каждого типа подшипника. Однако, чтобы рассчитать данные значения необходимо знать дополнительные параметры, например, для шариковых подшипников это: – Z – число шариков в подшипнике; – Dw – диаметр шарика в подшипнике; – Dpw – диаметр центов шариков в подшипнике. Данные параметры не приводятся ни в старых, ни в новых ГОСТах по подшипниках. Числовые значения двух данных параметров (Z и Dw) можно найти только в справочниках (например, Анурьев). Dpw – в справочниках не приводится, но если рассуждать логически то его можно принять равным Dpw=d+0.5(D-d), но это не точно. Все это делает нелогичным расчет грузоподъемности по ГОСТ, беря для этого недостающие данные из справочников или другой специальной литературы.   Решил проверить расчет статической и динамической грузоподъемности подшипников по формулам и сравнить их с приведенными в старых ГОСТах (приняв Z и Dw из справочников, а Dpw рассчитав по предложенной формуле). Для простоты выбрал шариковые радиальные однорядные подшипники с диапазоном номеров 200…220. В результате получилось следующее: 1 рассчитанная по формуле динамическая грузоподъемность достаточно близко совпадает с динамической грузоподъемностью приведенной в таблицах в старых ГОСТах 2 рассчитанная по формуле статическая грузоподъемность достаточно близко совпадает со статической грузоподъемностью, приведенной в таблицах в старых ГОСТах, но для подшипников с малым диаметром внутреннего кольца d. По мере увеличения диаметра внутреннего кольца подшипника расхождение между расчетными и табличными значениями существенно возрастает. Например, для подшипника №220 табличное значение статической грузоподъемности в старом ГОСТе составляло 79.000 Н, а рассчитанное по формуле составило 92.900 Н. 3 для аналогичных подшипников SKF и FAG, указанные в каталогах статическая и динамическая грузоподъемность достаточно близко совпадает с рассчитанной по формулам.   Файл с расчетом прилагаю ниже. Сравнение расчета по ГОСТ грузоподъемности подшипников.rar   Вопрос скорее всего будет риторический: что думаете по этому поводу и ваши предложения по расчету статической и динамической грузоподъемности по новым ГОСТам?
    • Zver 0209
    • tiomat
      Присоединяюсь к вопросу автора, аналогичная проблема в 22-ой версии. Элементы массива в дереве не подсвечиваются при их выборе в модели.
    • Павлуха
    • mcxuser
×
×
  • Создать...