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

C# NX Open Api


Koreshk1992

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

Всем доброго дня!

Возник следующий вопрос. Задача вроде бы элементарна. Необходимо создать прямую под углом) Облазил весь интернет - ничего.

Попробовал посмотреть как это делает сам NX. Включил  журнал. Создал прямую длиною 50 мм под углом 6 градусов.

Надеялся увидеть что-то вроде

 

lenght = 50

angle = 6

createLine(length,angle)

 

В журнале следующее)):

 

 Point3d startPoint1 = new Point3d(0.0, 0.0, 0.0);

 Point3d endPoint1 = new Point3d(49.7260947684137, 0.0, 5.22642316338267);

 

Насколько я понял, он просто взял и посчитал координаты.

Сдается мне, что нету никакой специальной функции для этих нужд.

Подскажите пожалуйста выход из данной ситуации. Может есть какие-то библиотеки для расчета координат или еще что-то.

Заранее премного благодарен.

 

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


Для прямой на плоскости все очень просто. Сначала посчитай (i,j)  вектора исходной прямой. Перп-вектор к ней будет иметь очень простой вид - (j,i).

 

А вот в пространстве все посложнее.

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

Спасибо большое за ответ!)

Полазил еще по интернету, на этот раз уже искал не готовое программное решение, а так сказать математическое. Все оказалось очень просто:

 

x=x0+R*cos(a)

y=y0+R*sin(a)

x,y - искомые координаты. x0,y0 - координаты начальной точки. R  - длина моего отрезка. а - заданный угол.

 

Подставил в формулу R= 50 и a = 6 градусам.

получил тоже самое, что рассчитал NX.

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

Опять наткнулся на проблему...рисовать линии под углом получилось. На данный момент необходимо реализовать вращение. Причем ось вращения - прямая под углом. В NX-е все делается просто. осью можно выбрать любую грань, отрезок и т.д.

 

Вращение у меня происходит следующим образом:

 theUfSession.Modl.CreateRevolved(sketch, limit1, ref_pt1, direction1, FeatureSigns.Nullsign, out features1);

где direction - ось вращения и задается она следующим образом:

double[] direction1 = { 0.00, 0.00, 1.00 };
Насколько я понял, таким образом можно задать осью вращения X,Y,Z.

В журнале используется другой метод - RevolveBuilder. Там в качестве оси можно выбрать линию, но на понимание как сей метод работает уйдет очень много времени. Может есть способ заставить CreateRevolved использовать в качестве оси линию?)

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

direction1 - это координаты вектора

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

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

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

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

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

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

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

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

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

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

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

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




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