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

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

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




  • Сообщения

    • gudstartup
      вынимаешь ncu карту и смотришь если ни фига не видно в винде то это линукс
    • Bot
      Крупнейший мировой производитель карьерных самосвалов БЕЛАЗ и российский разработчик инженерного программного обеспечения АСКОН объявили на форуме «ТИБО» в Минске об успешном завершении совместного пилотного проекта. Система проектирования КОМПАС-3D от АСКОН прошла испытания в связке с программными продуктами компании ИНТЕРМЕХ и рекомендована к применению для решения задач конструкторского проектирования на предприятии БЕЛАЗ. В перспективе российская разработка заменит зарубежные CAD-системы, в которых сейчас проектируется тяжелая горнодобывающая и строительная техника. В ходе пилотного проекта в КОМПАС-3D и среде IPS был смоделирован карьерный экскаватор БЕЛАЗ ВХ20012, 200-тонная гидравлическая машина на гусеничном ходу, предназначенная для разработки горных пород. Цикл работ включал в себя создание подробной 3D-компоновки экскаватора, детальную проработку основных узлов, разработку конструкторской документации и проведение инженерных расчетов. Помимо базовых возможностей [...] View the full article
    • ID_Hacker
      Надо смотреть тип HMI. Может быть integrated, то она прям в NCU на линуксе. Можете через X127 подключить ноутбук и VNC Viewer'ом попробовать подключиться по адресу 192.168.214.1 или 215.1, если при этом на экране то же самое что и на TCU тогда у вас нет внешней HMI. Иначе 192.168.214.241 должен быть адрес Simatic IPC. Ну и по электросхема можно посмотреть наличие.
    • Turgenev
      Есть 2 платы, которые экспортировал из Altium в STEP. Импортировал их в Solid, создались 2 сборки. Есть корпус, который создал как деталь в Solid. Хочу создать сборку плат и корпуса. Создаю сборку, помещаю в нее корпус и первую плату- все норм. Помещаю вторую плату и вставляется предыдущая, хоть в уменьшенном предпросмотре показана нужная плата. Иду в Solis второй платы, программа просит перестроить, перестраиваю и вместо второй платы появляется первая плата. Смотрю в дерево сборки второй платы, а там откуда то взялась STEP модель первой платы. Создаю новую деталь и импортирую вторую плату, вставляется все равно первая. В онлайн просмотрщике степ моделей все нормально- степ модели соответствуют своим платам. Подскажите, как это можно исправить?
    • Артур8991
    • SAPRonOff
      хз, напишете в тех поддержку, что ответят?
    • Alexandr97
    • ak762
      а мне нравятся производственные истории, как-будто обратно в цех вернулся.
    • 3d_oemr
      Лучший выбор для творчества: 3D принтер Picaso Designer X S2, для самых требовательных пользователей. Современный дизайн и инновационные технологии в 3D принтере Picaso Designer X S2, который изменит ваш взгляд на создание моделей. Эффективный инструмент для прототипирования: 3D принтер Picaso Designer X S2, которое подарит вам новые возможности и перспективы. Уникальный 3D принтер Picaso Designer X S2 для реализации ваших творческих идей, который станет вашим незаменимым помощником в работе. Лучший выбор для профессиональных дизайнеров: 3D принтер Picaso Designer X S2, который поразит вас своей эффективностью и надежностью. Почувствуйте мощь технологии с 3D принтером Picaso Designer X S2, который отличается высоким качеством печати и точностью деталей. Новейший 3D принтер Picaso Designer X S2 для дизайнеров и инженеров, который поможет вам воплотить ваши идеи в жизнь. Уникальные возможности для творчества с 3D принтером Picaso Designer X S2, которое подарит вам новый уровень ваших проектов. Уникальный инструмент для инженеров и дизайнеров: 3D принтер Picaso Designer X S2, которое обеспечит вас всем необходимым для воплощения идей. Удивительные возможности для создания моделей с 3D принтером Picaso Designer X S2, который не оставит вас равнодушными. Эффективное оборудование для творчества: 3D принтер Picaso Designer X S2, который поможет вам реализовать любые проекты. Превосходное качество печати и скорость работы: 3D принтер Picaso Designer X S2, которое подарит вам новый взгляд на создание моделей. Лучшее оборудование для моделирования: 3D принтер Picaso Designer X S2, который поможет вам воплотить свои идеи в реальность. Мощный инструмент для проектирования: 3D принтер Picaso Designer X S2, который превзойдет ваши ожидания. Революционный 3D принтер Picaso Designer X S2 для ваших проектов, которое станет вашим верным помощником в работе. Исключительное качество и производительность с 3D принтером Picaso Designer X S2, который поможет вам воплотить ваши идеи в жизнь. Продуктивное решение для дизайнеров: 3D принтер Picaso Designer X S2 picaso designer x s2 купить [url=https://aso-design2.ru]https://aso-design2.ru[/url] .
    • Бестолковый
      Сидю, конструячу (SW 2022), никого не трогаю (винду не пересыпаю, дров не ставлю, в реестр не лезу).   Дохожу до листовых деталей, создаю некий Part1 с габаритами (условно) 240х58х8мм через использование Base Flange/Tab, далее делаю то что обычно в таких случаях: - Открываю CutList, ПКМ по Cut-List-Item1 -> Properties -> в открывшемся списке снимаю галочку с нужной мне СЕРОЙ /неактивной/ строки (длина или ширина), копирую содержимое строки, закрываю все окна, открываю File Properties и вставляю код в необходимую мне строку из которой она подтянется в чертёж. Да, наверняка через *опу, но я самоучка и это мой метод переноса габаритов листовых деталей с чертёж и BOM.   Но что-то пошло не так, а именно: Таблица CutList НЕ СЕРАЯ (активны все её строки), а при попытке скопировать оттуда данные и вставить в File Properties строка вида"SW-Bounding Box Length@@@Cut-List-Item1@Лист 240х58х8.SLDPRT" такой и остаётся. Хотя ранее там были цифры габаритов. Открываю старые sldpt'ы в которых 100% это работало и указывало габариты - там та же беда... Откат с резервной копии настроек результата не принёс (((   Что не так-то? Луна не в фазе? Меркурий метроградный? Пятница на носу? Я сам что-то не того тыцнул?   https://fastpic.org/view/123/2024/0606/09656cc22a1847c4b1fbbd66d1324e19.jpg
×
×
  • Создать...