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

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


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 пользователей

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




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