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

Создание двух одинаковых деталей 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 пользователей

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




  • Сообщения

    • Ander
    • ak762
      я бы попросил у заказчика дать конкретную марку применяемого материала и использовать эти данные для расчета судя по данным с MatWeb https://www.matweb.com/search/DataSheet.aspx?MatGUID=08fb0f47ef7e454fbf7092517b2264b2 там разброс механических свойств материала существенный включая зависимость от наполнителя и способа изготовления    
    • Jesse
      потестил со смещённым колесом.. Если коротко, то печаль)) В модальнике прикладываю вращение в разные сторона, частота та же. Пробовал даже "гнуть в разные стороны" - извлекать деформированные модели, когда уск. своб. падения направлено вверх и вниз. В модальниках частота та же, без изменения.. @Борман@AlexKazну что ж, если выкрутиться никак, будем осваивать Ansys. Чё ещё остаётся делать?!)))) Вроде какие-то видосики есть на ютюбе. Спс за овтеты)
    • soldo
      Приветствую всех! Часто искала информацию на форуме, связанную с переводом, но кое-что не могу найти и хочу попросить о помощи. Я перевожу инструкцию для токарного автомата продольного точения и не очень хорошо понимаю все, что связано с креплением инструмента к станку. Конкретно меня интересуют следующие вопросы. Станок оснащен разными инструментальными блоками, есть суппорт с резцами, блок с инструментами для поперечного сверления и т.д.  И есть один блок, который на корявом английском называется 5 spindle sleeve holder, На этом блоке 5 шпинделей и на них можно закрепить инструмент для сверления, нарезания резьбы и растачивания. В названии этого блока фигурируют какие-то втулки (sleeve), предполагаю, что это патроны? Вот, что примерно написано в инструкции по поводу установки инструмента в этом блоке: (1) Ослабьте стопорный винт ② и установите режущий инструмент ① на втулку ③. (2) Затяните стопорный винт ② и закрепите режущий инструмент ① на втулке ③. (3) Ослабьте резьбу ⑤ и вставьте втулку ③ в блок ④ . (4) Переместите втулку ③ в направлении длины и отрегулируйте прямоугольное положение режущего инструмента ①. (5) После регулировки затяните резьбу ⑤ и зафиксируйте втулку ③. Мой вопрос: как можно назвать этот блок и что это за "втулка"?  Прикрепляю ссылку, на ней скриншоты из инструкции с общим видом инструментальной системы, 5-шпиндельного блока и соответствующих инструментов для сверления. https://imgur.com/a/fpBgmLA
    • Snake 60
      @alek77  У меня норм, просто надо соблюсти условия: 1) масштаб вида 1:1 2) масштаб листа 2:1 почему такие условия хз.
    • nicomed
      Пробовал (хотел "накостылить" разрыв линии), но получалась, примерно, такая ерунда, как и у Вас. Брал примеры и с офф сайта, и с сайта Артема.
    • AlexKaz
      Всё же. не ANSYS, а Autodyn. Лог   К сожалению, у меня Autodyn нет. Вероятно, как правило, это либо проблемы с масскейлингом, либо НУ, либо ГУ, либо свойства материалов не коректны, либо выбраны не согласованные единицы измерения (где-то СИ, где-то миллиметры или подобное), либо скорости заданы очень большими.
    • mrVladimir
      Если никто с таким же станком не откликнется, то проще Вам ладдер , наверное, выложить. И если какие-то комментарии там имеются - совместно, я думаю, разберемся.
    • alek77
      По этой теме есть хорошая статья: https://cadbooster.com/complete-overview-of-matrix-transformations-in-the-solidworks-api/ У Артема есть несколько примеров. Но Все примеры у меня не работают, т.е. работают, но при пристальном взгляде везде есть ошибка. Или в примерах никто не углублялся до вывода полученных координат на экран и проверки. Да ну на, не может быть. Если полученные координаты не смотреть, то и у меня мой изначальный макрос работает, и ошибок нет. А если смотреть, то координаты не верные. Если у кого есть возможность, проверьте работу макроса от Артема: https://www.codestack.net/solidworks-api/document/drawing/sheet-context-sketch/ У меня выдает следующий результат: И я думаю, что это у меня в системе что-то сбито, а что - нужно понять. Такая же ерунда со смещенными координатами у любых макросов с трансформацией, кроме макроса из справки SW, Dimension Edge In Drawing Example. Там все отлично.    
    • Fedor
      А ваши грустно. Демонстрируете наступление компьютерного фетишизма - когда могут больше чем понимают :) 
×
×
  • Создать...