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

Создание двух одинаковых деталей NX API C#


zZzZzZzZz_92@mail.ru

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

Добрый день, моделирую кухню из 5 разных блоков.

Есть 5 процедур которые строят 5 разных шкафов.

Проблема в том что 2 раза построить один и тот-же шкаф не получается, ввиду того что Tag UFPart; не может 2 раза повторятся в одной модели так сказать. Может дальше и другое чтото тоже скажет что не может быть 2 раза выполнено, пока на этом ошибка.

Как сделать так, чтобы можно было строить таких хоть 10 деталей???

 

Внизу код на построение одной стенки кухни.

 

//Вертикальная стенка
        Tag UFPart; //Название детали
        String name1 = "Вертикальная стенка"; //Имя файла детали
        int units1 = 1; //Система счисления 1-метрическая
        theUfSession.Part.New(name1, units1, out UFPart); //Создание новой детали (вход,вход,выход)
        double[] o001_start = { 0, 0, 0.00 }; //Точки X Y Z
        double[] o001_end = { depth[s] - 20, 0, 0.00 };
        double[] o002_start = o001_end;
        double[] o002_end = { depth[s] - 20, height[s] - 20, 0.00 };
        double[] o003_start = o002_end;
        double[] o003_end = { 0, height[s] - 20, 0.00 };
        double[] o004_start = o003_end;
        double[] o004_end = o001_start;

        UFCurve.Line o001 = new UFCurve.Line(); //Создаём новую структуру
        UFCurve.Line o002 = new UFCurve.Line();
        UFCurve.Line o003 = new UFCurve.Line();
        UFCurve.Line o004 = new UFCurve.Line();

        o001.start_point = new double[3]; //Начальная точка
        o001.start_point[0] = o001_start[0];
        o001.start_point[1] = o001_start[1];
        o001.start_point[2] = o001_start[2];
        o001.end_point = new double[3]; //Конечная точка
        o001.end_point[0] = o001_end[0];
        o001.end_point[1] = o001_end[1];
        o001.end_point[2] = o001_end[2];
        o002.start_point = new double[3];
        o002.start_point[0] = o002_start[0];
        o002.start_point[1] = o002_start[1];
        o002.start_point[2] = o002_start[2];
        o002.end_point = new double[3];
        o002.end_point[0] = o002_end[0];
        o002.end_point[1] = o002_end[1];
        o002.end_point[2] = o002_end[2];
        o003.start_point = new double[3];
        o003.start_point[0] = o003_start[0];
        o003.start_point[1] = o003_start[1];
        o003.start_point[2] = o003_start[2];
        o003.end_point = new double[3];
        o003.end_point[0] = o003_end[0];
        o003.end_point[1] = o003_end[1];
        o003.end_point[2] = o003_end[2];
        o004.start_point = new double[3];
        o004.start_point[0] = o004_start[0];
        o004.start_point[1] = o004_start[1];
        o004.start_point[2] = o004_start[2];
        o004.end_point = new double[3];
        o004.end_point[0] = o004_end[0];
        o004.end_point[1] = o004_end[1];
        o004.end_point[2] = o004_end[2];

        Tag[] objarray = new Tag[4]; //Первая строка создает переменную objarray, представляющую собой массив тэгов
        theUfSession.Curve.CreateLine(ref o001, out objarray[0]);
        theUfSession.Curve.CreateLine(ref o002, out objarray[1]);
        theUfSession.Curve.CreateLine(ref o003, out objarray[2]);
        theUfSession.Curve.CreateLine(ref o004, out objarray[3]);
        //Каждая последующая строка создает отрезок в 3D пространстве с последующим его отображением на экране. 
        //В качестве входных данных используются координаты конечных точек отрезка.
        //Выходная информация, представляющая тэг каждого отрезка, записывается поэлементно в массив objarray1.

        double[] direction = { 0.0, 0.0, 1.0 };
        //Переменная задающая значения направления выдавливания ось CZ
        double[] ref_pt = new double[3];
        //Требуемая, но не используемая переменная
        string taper_angle = "0.0";
        //Переменная, определяющая значение уклона при выдавливании
        string[] limit = { "0", "20" };
        //Переменная, определяющая параметры начала и конца операции выдавливания
        Tag[] vert_stenka;
        //f – переменная для записи указателя на объект, получившийся в результате операции выдавливания
        theUfSession.Modl.CreateExtruded(objarray, taper_angle, limit, ref_pt, direction, FeatureSigns.Nullsign, out vert_stenka);

 

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


причем здесь tag. наверн нельзя создать две детали с одинаковым именем.
Смотрите документацию на UF_PART_new:
Name of the new part. This part name must be unique 
for the session. The leaf name for two parts in the 
same session can not be the same.

тут либо называть по новому, либо вставлять ранее созданный как компонент сборки.
 

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

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

Автор, имхо слишком сложным путем вы решили автоматизировать эту задачу. Если критично прямо с помощью NXOpen, то попробуйте использовать NXOpen.Features.WaveLinkBuilder, чтобы получить копию имеющегося объекта.

И 5 процедур у вас оформлены в виде классов? Если да, то доработайте и передавайте экземпляру класса атрибут имени part'a в конструкторе, по типу:

Class 1: Стенка 1

...

...

createBox(arg PartName, arg dim1, arg dim 2) etc.

 

Если все хранится в одном классе в виде последовательности действий без принципов ООП, то я бы переделал к виду выше или по-другому переосмыслил проект.

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

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

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

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

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

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

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

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

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

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

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




×
×
  • Создать...