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

Расширение поверхности.


lDeliriuml

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

Добрый день. Меня интересует вот такой вопрос.

Я используя DLL строю сплайны сечения лопатки и сплайны по набору точек, взятых из файла.

После соединяю их мостиками. Затем натягиваю поверхность по полученным сплайнам.

При необходимости расширить(удлинить) поверхность программно на одной из отрезков NX выдает ошибку.

Если удлинять ручками в NX, то все прекрасно получается, программно же нет.

На другой лопатке никаких ошибок не выдает.

В чем может быть причина данной ошибки?

Заранее спасибо.

post-46672-0-05124200-1430210298_thumb.jpg

Ссылка на сообщение
Поделиться на других сайтах


Если ручками без проблем, то где-то в программе косяк, значит. Я не помогу, но для сведущих неплохо будет увидеть и модель, и DLL для адекватного анализа.

Ссылка на сообщение
Поделиться на других сайтах

Но все другие поверхности почему-то удлиняются нормально...

Вот код DLL.

Есть массив с тегами сплайнов.
Тут я строю по этим тегам поверхность:

int create_surface2(int NumberListTags, tag_t *curves, tag_t *ResultSurface)
{
UF_STRING_t prim;
prim.num = NumberListTags
prim.string = new int[NumberListTags];
prim.dir = new int[NumberListTags];
prim.id = new tag_t[NumberListTags];
for(int i=0; i<NumberListTags; i++)
{
prim.string = 1;
prim.dir = UF_MODL_CURVE_START_FROM_BEGIN;
//prim.dir = UF_MODL_CURVE_START_FROM_END;
prim.id = curves
}
UF_STRING_t spine;
spine.num = 0;
spine.id = NULL;
spine.dir = 0;
spine.string = NULL;
int patch;
//patch = 1; //Single (Bezier) 
patch = 2; //Multiple (B-spline)
int alignment;
alignment = 1; //parameter 
//alignment = 2; //arc length
//alignment = 3; //distance
//alignment = 4; //angles
//alignment = 5; //spine curves
//alignment = 6; //spline Points
int vdegree;
vdegree = 2;
int vstatus;
vstatus = 0;
int body_type;
//body_type = 0; //sheet
body_type = 1; //solid
UF_FEATURE_SIGN sign;
sign = UF_NULLSIGN; //create new target solid
//sign = UF_POSITIVE; //add to target solid
//sign = UF_NEGATIVE; //subtract from target solid 
//sign = UF_UNSIGNED; //intersect with target solid
double tolerances[3];
tolerances[0] = 0.001;
tolerances[1] = 0.3;
tolerances[2] = 0.0;
tag_t c_face_id [2];
c_face_id[0] = NULL;
c_face_id[1] = NULL;
int c_flag [2] ;
c_flag [0] = 0;
c_flag [1] = 0;
tag_t surface;
UF_MODL_create_thru_curves(&prim, &spine, &patch, &alignment, NULL, &vdegree, &vstatus, &body_type, sign, tolerances,c_face_id ,c_flag , &surface);
*ResultSurface = surface;
delete[] prim.string;
delete[] prim.dir;
delete[] prim.id;
return 0;
}

 

Затем удлиняю данную поверхность:

int enlarge_face2(tag_t body,tag_t *out_body)
{
int count = 0;
tag_t out_face;
tag_t obj_enlarge_face;
uf_list_t* face_list;
UF_MODL_create_list(&face_list);
UF_MODL_ask_body_faces(body, &face_list);
UF_MODL_ask_list_count(face_list, &count);
int type;
//type = 0; //linear extension
type = 1; //natural extension
char *percent_size[4];
 
percent_size[0] = "0"; //is the percent for U-min 
percent_size[1] = "0"; //is the percent for U-max 
percent_size[2]= "60"; //is the percent for V-min 
percent_size[3]= "0"; //is the percent for V-max
 
double tolerance;
tolerance = 0.001;
UF_MODL_create_enlarge(face_list->eid, type, percent_size,  tolerance, &out_face);
UF_MODL_ask_feat_body(out_face, &obj_enlarge_face);
*out_body = obj_enlarge_face;
UF_MODL_delete_list(&face_list);
return 0;
}
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Ветерок
      разве что. Но тоже не понятно. В электропакетах есть свои библиотеки компонентов. Я наоборот от тех "разводчиков" получаю модели платы в СТЕП со всеми компонентами. Твои ролики не отображаются.
    • Ветерок
      Материал "либо аналог" - это круто. Я обычно указываю конкретную марку и пишу в ТТ "Допускается замена материала на аналогичный."
    • davidovka
      Почти. Для разводчиков плат часто приходится рисовать разъемы, а они там от 2 до 100 контактов, через исполнения удобно. Видео по таблице семейств https://disk.yandex.ru/i/VmP3DVoPo9SayQ Видео по массиву https://disk.yandex.ru/i/2wjwXZY7GO7NNg  
    • Ветерок
      Наверное, это круто. Но нафига? Чтобы выложить кучу болтов на ГрабКад?
    • Ветерок
      Отрезать ненужное, приделать нужное.
    • Павлуха
      Бобышкодавы... Поверхности никто не пробовал?
    • davidovka
      pattern_and_famtable.7z Приложение с двумя функциями: 1) Famtable to STEP - экспортирует каждое исполнение с "наименование экземпляра".step 2) Pattern_no - записывает в параметры массива инфу о количестве элементов. Порядок работы: выбрать элемент в дереве массив, нажать кнопку.   Проверялось в Creo 9 famtable_to_step.mp4 pattern_no.mp4
    • Krusnik
      Так?   Зебру приложить забыл...  
    • areg
      Здравствуйте! Нужно изготовить 13 комплектов сборок "Крепление с кольцом" и столько же "Крепление". Чертежи деталей прилагаются. Заготовка детали "Пластина" будет прилагаться. В ней надо будет получить зенковку и убрать грат. Варить аргоном аккуратно, швы потом осветлить. Если у вас нет такой сварки - сообщите стоимость изготовления без нее. И самое главное - надо сделать максимально возможно быстро. Поэтому сразу пишите сроки изготовления. Кольцо.PDF Крепление с кольцом.PDF Крепление.PDF Пластина.PDF Резьбовая стойка.PDF Шпилька.PDF
    • jtok
      Здравствуйте   Есть модель в STEP, которую нужно дорабатывать и с неё впоследствии сделать прессформу для  формования ковров на пол авто. Я выложил ее кусочек. Проблема с работой со сложной геометрией.   Задача: Имеется "ступенька", которую необходимо "убрать".   На рисунке начальные грани и как бы направление "убирания": Это конечная поверхность, до которой нужно "продлить" выделенные вверху грани: На рисунке ниже мое представление, как я пробовал строить - типа "заполнить по траектории": Но так как геометрия вся кривая, понятно, получается ерунда. Поверхности должны быть гладкими, без ступенек и переходов, "зебра" должна присутствовать. Пробовал кучу инструментов - поверхностями, границами, грани туда/сюда удалял и заплатки ставил. В общем, перепробовал весь инструментарий, который знаю. Знаю, как оказалось, не всё.   Уверен, что эту операцию можно сделать одним, максимум двумя фичерами. Не покажете, как?   1.STEP
×
×
  • Создать...