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

Knowledge Fusion


Sxurik

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

Добрый день,

у меня есть программа (написана не мной!), в которой идет построение стрингера на поверхности по кривой, в ней тело стрингера создается "заеметанием" сечений стрингера, построенных с помощью ug_line и ug_arc. Ориентирование сечений не имеет значение сейчас, но вот не могу никак сделать чтобы построение сечения было ассоциативным пробовал с помощью %nx_associative_arc/line - не получилось, приложение выдает ошибку, встроенный дебагер ничего толком не показывает (или я не вижу).

Подскажите пожалуйста, есть ли способы построить ассоциированные линии и дуги?

часть кода построения сечения:

(Child) ug_line: { Class; ug_line;

start_point;Point(0,0,0);

end_point;pt_to_pt(Point(B:,0,0),x_p:,an_x:);

Suppress?;FALSE;

Color;2;

Layer;1;

};

(Child) ug_line_0: { Class; ug_line;

start_point;pt_to_pt(Point(B:,0,0),x_p:,an_x:);

end_point;pt_to_pt(Point(B:,S:-RR1:,0),x_p:,an_x:);

Suppress?;FALSE;

Color;2;

Layer;1;

};

(Child) ug_arc_0:{ Class; ug_arc;

radius;RR1:;

Start_Angle;NormalizeAngle(0+an_x:);

End_Angle;if (ug_arc_0:Start_Angle:>NormalizeAngle(90+an_x:)) then NormalizeAngle(90+an_x:)+360

else NormalizeAngle(90+an_x:);

Center;pt_to_pt(Point(B:-RR1:,S:-RR1:,0),x_p:,an_x:);

X_Axis;Vector(1,0,0);

Y_Axis;Vector(0,1,0);

Color;2;

Layer;1;

Suppress?;FALSE;

};

(Child) ug_line_1: { Class; ug_line;

start_point;pt_to_pt(Point(B:-RR1:,S:,0),x_p:,an_x:);

end_point;pt_to_pt(Point(S:+RR:,S:,0),x_p:,an_x:);

Suppress?;FALSE;

Color;2;

Layer;1;

};

# найдем приближенный центр дуги как точку пересечения перпендикуляров к концам

# соседних линий

(point) cent: interLineLine(Point(S:,S:+RR:,0),vector(1,0,0),ug_line_1:end_point:,

perpendicular(ug_line_1:start_point:-ug_line_1:end_point:));

(Child) ug_arc_1:{ Class; ug_arc;

# определим радиус как дистанцию от центра до конца одной из линий

radius;max(dist(ug_line_1:end_point:,cent:),dist(ug_line_02:start_point:,cent:));

# вычислим углы между векторами Х и от центра дуги к концам линий

Start_Angle;angle2vectors(vector(1,0,0),Point(S:,S:+RR:,0)-ug_arc_1:center:,vector(0,0,1));#180;

End_Angle;angle2vectors(vector(1,0,0),ug_line_1:end_point:-ug_arc_1:center:,vector(0,0,1));#270+an_x:;

# найдем новый центр по 2-м точкам и радиусу

Center;ArcCenter2Point(Point(S:,S:+RR:,0),ug_line_1:end_point:,

ug_arc_1:radius:,vector(0,0,1),False);

X_Axis;Vector(1,0,0);

Y_Axis;Vector(0,1,0);

Color;2;

Layer;1;

Suppress?;FALSE;

};

# добавочная линия - потом заменить на дугу

(Child) ug_line_02: { Class; ug_line;

start_point;Point(S:,S:+RR:,0);

end_point;ug_line_2:start_point:;

Suppress?;FALSE;

Color;2;

Layer;1;

};

#верт. полка

(Child) ug_line_2: { Class; ug_line;

start_point;pt_to_pt(Point(S:,S:+RR:,0),y_p:,an_y:);

end_point;pt_to_pt(Point(S:,HH:-R:-XX:,0),y_p:,an_y:);

Suppress?;FALSE;

Color;2;

Layer;1;

};

(Child) ug_arc_2:{ Class; ug_arc;

radius;RR2:;

#Start_Angle;180-AA:;

#End_Angle;180;

Start_Angle;NormalizeAngle(180-AA:+an_y:);

End_Angle;if (ug_arc_2:Start_Angle:>NormalizeAngle(180+an_y:)) then NormalizeAngle(180+an_y:)+360

else NormalizeAngle(180+an_y:);

Center;pt_to_pt(Point(S:+RR2:,HH:-R:-XX:,0),y_p:,an_y:);

X_Axis;Vector(1,0,0);

Y_Axis;Vector(0,1,0);

Color;2;

Layer;1;

Suppress?;FALSE;

};

(Child) ug_arc_3:{ Class; ug_arc;

radius;R:;

# Start_Angle;360-AA:;

# End_Angle;540;

Start_Angle;NormalizeAngle(360-AA:+an_y:);

End_Angle;if (ug_arc_3:Start_Angle:>NormalizeAngle(540+an_y:)) then NormalizeAngle(540+an_y:)+360

else NormalizeAngle(540+an_y:);

Center;pt_to_pt(Point(R:,HH:-R:,0),y_p:,an_y:);

X_Axis;Vector(1,0,0);

Y_Axis;Vector(0,1,0);

Color;2;

Layer;1;

Suppress?;FALSE;

};

(Child) ug_line_03: { Class; ug_line;

start_point;pt_to_pt(Point(0,HH:-R:,0),y_p:,an_y:);

end_point;pt_to_pt(Point(0,S:+RR:,0),y_p:,an_y:);

Suppress?;FALSE;

Color;2;

Layer;1;

};

# добавочная линия - потом заменить на дугу

(Child) ug_line_003: { Class; ug_line;

start_point;ug_line_03:end_point:;

end_point;ug_line_3:start_point:;

Suppress?;FALSE;

Color;2;

Layer;1;

};

# пятка

(Child) ug_line_3: { Class; ug_line;

start_point;Point(0,S:+RR:,0);

end_point;Point(0,0,0);

Suppress?;FALSE;

Color;2;

Layer;1;

};

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


О, знакомая программа - тож когда то с неё начинал освоение KF.

Можно сказать, на ней же и закончил...

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

Очень содержательный комментарий :)

насколько мне известно, написано приложение сотрудником сименс, кое что допиливалось потом на ИАЗе под конкретные нужды.

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

Можете прислать начало кода и подробно расписать процесс создания.

Что-то мне подсказывает проблема в задающих параметрах

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

Простите, долго не заходил на форум, так как уже не ожидал каких либо ответов.

Вообще эта программа состоит из нескольких dfa-файлов, могу скинуть в архиве всю программку на файло-обменник или на почту.

вдруг она Вам пригодится. Жду мыло в личку или другие предложения.

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

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

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

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

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

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

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

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

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

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

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




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