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

Получение площади поверхности с помощью UF_SF_face_ask_area


gk3d

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

пытаюсь получить площадь поверхности с помощью функции

UF_SF_face_ask_area

NX с завидной регулярностью выдает ошибку:

an operation was attempted on an invalid or unsuitable om object

face_list - список поверхностей.

count_face - их количество.

for(j=0; j<count_face; j++) // перебираем грани

{

	double area = 0;

	result = UF_SF_face_ask_area(face_list->eid, &area); // ДОЛЖНЫ ПОЛУЧИТЬ ПЛОЩАДЬ.

	

	if (result)

	{	report_error(result, "AREA ERROR");  }

	else

	{	printf("area -  %d \n", area);  }



	// выводятся атрибуты граней.

	while (!(UF_ATTR_cycle(face_list->eid, &indx, UF_ATTR_any, title, &att)) && (indx != 0))

	{

	switch ( att.type )

	{

		case UF_ATTR_integer: sprintf(mstr, "%s = %d (INTEGER)\n", title, att.value.integer);	break;

		case UF_ATTR_real:	sprintf(mstr, "%s = %f (FLOATING POINT)\n", title,att.value.real);	break;

		default:	break;

		}

		fprintf(fn, "	Атрибут %s -  %d грани\n", title, j+1);

	}





	face_list = face_list->next;

}
у меня было предположение, что face_list->eid как-то неверно вычисляется

но.

этот же параметр используется при получении атрибутов (в цикле ниже).

а атрибуты выводятся корректно.

Изменено пользователем gk3d
Ссылка на сообщение
Поделиться на других сайтах


пытаюсь получить площадь поверхности с помощью функции

UF_SF_face_ask_area

NX с завидной регулярностью выдает ошибку:

an operation was attempted on an invalid or unsuitable om object

UF_SF -
Open C API interface to the Scenario product

int UF_SF_face_ask_area

(

tag_t cae_tag,

double * pd_area

)

Пользуйтесь

int UF_MODL_ask_mass_props_3d

(

tag_t * objects,

int num_objs,

int type,

int units,

double density,

int accuracy,

double acc_value [ 11 ] ,

double mass_props [ 47 ] ,

double statistics [ 13 ]

)

tag_t * objects Input num_objs

Array of solid or sheet body identifiers,

Solid bodies for analysis type 1,

Sheet bodies for analysis types 2 and 3

int num_objs Input Number of objects

int type Input Type of 3D Analysis

1 = Solid Bodies

2 = Thin Shell - Sheet Bodies

3 = Bounded by Sheet Bodies

int units Input Units of mass and length

1 = Pounds and inches

2 = Pounds and feet

3 = Grams and centimeters

4 = Kilograms and meters

double density Input Density - Mass per unit volume (Mass per unit area for thin

shell). Not used for solid body analysis; for solid bodies

the densities of the solid bodies are used in the analysis

and the density of the combined set of bodies is output

in the mass properties array (mass_props[46]).

int accuracy Input 1 = Use Accuracy

2 = Use Relative Tolerances

double acc_value [ 11 ] Input [0] = Accuracy value between 0.0 and 1.0

if accuracy = 1

[1-10] not used if accuracy = 1

[0] = Relative Tolerance for Area if accuracy = 2

[1] = Relative Tolerance for Volume

[2-4] = Relative Tolerances for First Moments (centroidal)

[5-7] = Relative Tolerances for Moments of Inertia

(centroidal)

[8-10]= Relative Tolerances for Products of Inertia

(centroidal)

double mass_props [ 47 ] Output Mass properties

[0] = Surface Area

[1] = Volume (0.0 For Thin Shell)

[2] = Mass

[3-5] = Center Of Mass (COFM), WCS

[6-8] = First Moments (centroidal)

[9-11] = Moments Of Inertia, WCS

[12-14] = Moments Of Inertia (centroidal)

[15] = Spherical Moment Of Inertia

[16-18] = Inertia Products, WCS

[19-21] = Inertia Products (centroidal)

[22-30] = Principal Axes, WCS

[31-33] = Principal Moments (centroidal)

[34-36] = Radii Of Gyration, WCS

[37-39] = Radii Of Gyration (centroidal)

[40] = Spherical Radius Of Gyration

[41-45] = Unused

[46] = Density

double statistics [ 13 ] Output Errors are Estimates of the Relative Tolerances

achieved if accuracy = 2; otherwise

+/- range errors are given

[0] = Error For Surface Area

[1] = Error For Volume

[2] = Error For Mass

[3] = Radius Of Error Sphere

[4] = Error For Moment XC

[5] = Error For Moment YC

[6] = Error For Moment ZC

[7] = Error For Moment Of Inertia XC

[8] = Error For Moment Of Inertia YC

[9] = Error For Moment Of Inertia ZC

[10] = Error For Product Of Inertia XCYC

[11] = Error For Product Of Inertia YCZC

[12] = Error For Product Of Inertia XCZC

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

посмотрел \ поковырялся...

проблема не очень-то решается этой функцией..

дело во входных параметрах:

tag_t * Array of solid or sheet body identifiers

а я хочу найти площадь поверхности\грани какой-то.

потому, когда я пытаюсь в UF_MODL_ask_mass_props_3d передать tag_t поверхности он начинает ругаться и ничего считать не хочет...

вопрос:

может есть какая-нить еще функция?

или же как-то можно эту самую поверхность конвертировать в листовое тело?

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

посмотрел \ поковырялся...

проблема не очень-то решается этой функцией..

дело во входных параметрах:

tag_t * Array of solid or sheet body identifiers

а я хочу найти площадь поверхности\грани какой-то.

потому, когда я пытаюсь в UF_MODL_ask_mass_props_3d передать tag_t поверхности он начинает ругаться и ничего считать не хочет...

вопрос:

может есть какая-нить еще функция?

или же как-то можно эту самую поверхность конвертировать в листовое тело?

Попробуйте выделить грань (extract face, смотреть в wave geometry linked) - получиться листовое тело (sheet body). Потом удалить. Как вариант сделать метку отмены, выделить грань, посчитать площадь, отмена (я так делал)
Ссылка на сообщение
Поделиться на других сайтах

посмотрел \ поковырялся...

проблема не очень-то решается этой функцией..

дело во входных параметрах:

tag_t * Array of solid or sheet body identifiers

а я хочу найти площадь поверхности\грани какой-то.

потому, когда я пытаюсь в UF_MODL_ask_mass_props_3d передать tag_t поверхности он начинает ругаться и ничего считать не хочет...

вопрос:

может есть какая-нить еще функция?

или же как-то можно эту самую поверхность конвертировать в листовое тело?

int UF_MODL_extract_face

(

tag_t face,

int mode,

tag_t * sheet_body

)

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

большое спасибо, nut888, avd :)

помогло.

использовал примерно следующее ( вдруг кому интересно будя):

tag_t my_f[1];

UF_MODL_extract_face(face_list->eid, 0, &my_f[0]);

result = UF_MODL_ask_mass_props_3d(my_f, 1, 3,   3, 1.0, 1, acc_val, massprop, massprop_stat);
еще раз.

большое спасибо :)

*там, вроде бы, надо будет еще потом удалить тело созданное.

но с этим я, думаю, как-нить разберусь.

Изменено пользователем gk3d
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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



  • Сообщения

    • IGor2D
      По итогу...: По гарантии приехали и поправили только точность реза, остальное не смогли исправить, нужен инженер с HSG. Глючный однако китаец, пытается сам себя сломать.
    • Gmv
      По кнопке FTP стойка имеет 6 страниц для трех разных хостов. Где можно указать IP , имя, пароль 1страница. каталог 2 страница. Больше настроек не нашел.
    • gudstartup
      на фануке настраиваете доступ по ftp на соответствующей вкладке  и также расшариваете папку  вашим сервером и все прекрасно работает.
    • gudstartup
      симулятор предполагает взаимодействие как с чпу так и со станком посредством другой plc программы иначе вам придется самому управлять входами и выходами а это непросто.    
    • Gmv
      У кого есть опыт организации FTP именно на станке? Стойка 0i-MF plus   Сейчас пока сервер настроен на компе, и то не до конца. файлы видны, извлечь их или скопировать в память станка не выходит. Но операторы уже сразу возмущены,  им проще бегать с USB флешкой и нажимать одну кнопку, чем прыгать по папкам. На хаасе это реализовано классно, он создает сетевой диск и полный доступ и со стойки с пк. Хотелось бы подобного.
    • Guhl
      Я нормально проекты писал и отлаживал на эмуляторе Балт-Систем На Heidenhain, насколько я понял, работает симулятор с их сайта в связке с PLC design @gudstartup пользовался этим вот в этой ветке
    • ID_Hacker
      Ну уж балт-систем то не надо сюда. Там такое ущербное всё, что аж страшно вспомнить. Haidenhain эмулятор где взять, подскажете? А как отработать взаимодействие между NC и PLC, действия где работают и оси и механизмы электроавтоматики. Сам хочу попробовать Run my virtual machine, да всё времени нет.
    • Bot
      Данное приложение разработано на языке Visual Basic с использованием программного интерфейса NX Open API и предназначено для использования в САПР Siemens NX, начиная с версии 2000. Стиль интерфейса пользователя идентичен стилю САПР Siemens NX. View the full article
    • Jesse
      @ГЕЛА Ещё можно посчитать в балках и учесть влияние отверстия через коэффициент концентрации напряжений..) Но у вас отверстие на всю стенку, так что лучше, проще и быстрее посчитать всё это дело в оболочках как выше сказали. Скругления перехода от стенки к полке удалите и в запас считайте.
    • 5axisCNC
      Можно плоскость дна задать множеством вариантов например точка направление
×
×
  • Создать...