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

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

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




  • Сообщения

    • Алекс АМ
      Добрый день! По вашему вопросу можно решить прописав дистрибутив. Ключ у вас USB какого типа? можете телеграмм написать и фото 89898550527
    • kkk
      Так я не о тех, кому и так хорошо, а о тех, кто хочет научиться. Собственно сужу по себе - считаю, что знаю и владею СВ на высоком уровне (по крайней мере тот функционал, который у меня востребован), и всегда подтягивают тех, сослуживцев, кто высказывает заинтересованность. Этакое бесплатное обучение, причем на реальных задачах. :) В мелких конторах не раз видел, когда сидит, к примеру, 3 конструктора и каждый ваяет в своем софте. Пиратском, понятное дело.  
    • Fedor
      https://files.stroyinf.ru/Data/740/74099.pdf   судя по этому  ( 9.1   9.2 ) атмосферное давление на грунт не учитывается хотя действует ... 
    • maxx2000
      @РоманВ ответ на этот вопрос должны дать правила оформления чертежей и как следовательно правила простановки угловых размеров. Т.е. указывается положение одного элемента относительно оси, а второго относительно положения первого. Независимо от того чертёж это или эскиз. В эскизе можно наложить ограничение симметрии относительно оси и указать угол между элементами. Т.е. первоначально дать себе ответ -  чертёж это или эскиз.
    • Shura762
      @mamomot , вы "за лесом деревья не видите", процесс перехода на единую систему проектирования (не факт что на ТФ) в рамках предприятия идет, но только на предприятиях которые могут себе позволить. В большинстве же в КБ работают конструкторы кто в чем силен и не заморачиваются, ведь требуют результат в виде конструкции соответствующей ТЗ а чертежи дело второе, (военку не рассматривать в принципе) и в чем будет решена задача начальству наср.... Речь идет как человеку изучить ТФ когда он силен в Крео, пересесть с Феррари на ладу калину надо иметь очень большое желание
    • Fedorly
      1. Если бы не было смысла, то никто не заказывал бы разработку "сиго" 2. Смысл программы в том, что она позволяет получать данные о DXF файле, без CAD-программ(типа AutoCAD, Компас, SW и др), таким образом, программа может работать на любом "офисном" ПК. Полученные в программе данные, идут в подготовленный шаблон excel, где также быстро получаются расчеты себестоимости. Возможно "сие" не такое и законеченное решение, но у заказчика это получается очень быстро, и не дорого
    • РоманВ
      В эскизах солида при простановке линейных размеров от осевой можно ставить диаметральный размер, сместив курсор за осевую. Как ставить подобные размеры угловые?
    • Anat2015
      Скорее видеокарта, компьютер там, если не ошибаюсь, один, моноблок. Знатоки поправят.
    • clavr
      Для солида есть встроенный Costing. который прекрасно справляется с этим, и даже сразу стоимость напишет. есть ли смысл сиго чуда для солида?
    • si-64
      привязана до и после. да, пользователем ограничено, но не программой 
×
×
  • Создать...