iCAx开思工具箱

标题: UG/API:求助:求旋转体质量、质心、转动惯量。急! [打印本页]

作者: youyshzhy05    时间: 2005-12-28 21:19
标题: UG/API:求助:求旋转体质量、质心、转动惯量。急!
这是我的代码,课题快要交了,大家帮忙看看,多谢了!急!
UF_WEIGHT_units_type_t units=UF_WEIGHT_units_gm;
UF_WEIGHT_properties_t t;
tag_t object1=*objects;
UF_WEIGHT_ask_props (object1,units,&t);
char str[6];
double num;
int sig = 10;  //significant digits
UF_UI_write_listing_window("\n");
gcvt(t.area,sig,str);
UF_UI_write_listing_window(str);
UF_UI_write_listing_window("\n");
gcvt(t.mass,sig,str);
UF_UI_write_listing_window(str);
UF_UI_write_listing_window("\n");
在UG下运行输出的的面积和质量是一样的负值。
大家帮我看看是哪里错了。多谢!
作者: supergirl    时间: 2005-12-29 17:18
估计是送进去的tag有问题吧,这个函数要求是part或者solid的tag。
还有一个函数UF_MODL_ask_mass_props_3d也可以求质量,转动惯量什么的。这个函数可以求多个solid或者sheet body的。你可以试一试
作者: youyshzhy05    时间: 2005-12-31 19:09
多谢!supergirl.
用UF_MODL_ask_mass_props_3d函数做出来了!
作者: youyshzhy05    时间: 2006-1-1 20:40
标题: 怎样把给定密度带入到UF_MODL_ask_mass_props_3d计算中?
怎样把给定密度带入到UF_MODL_ask_mass_props_3d计算中?
      用UG帮助中的例子,初始化密度为1.0 ,结果求出物体的特征参数中密度显示为7.83。
我怎样把特定的密度带入到函数计算中?
作者: supergirl    时间: 2006-1-4 10:09
晕,怎么都不看函数说明呢,明明说得很清楚啊。那个density是你输入sheet body的时候,才有用的,对于solid body,就用每个solid 自己的density,最后输出的density是平均的density。

设置body 的density的函数:UF_MODL_set_body_density


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]).
作者: koko63    时间: 2006-1-7 09:46
中国外贸通,把的您产品上传到网上让全国各地看到.为您创造更多的生意机会.而且可免费注册发布供求信息和产品信息https://china.53trade.com/?lms0107
作者: koko63    时间: 2006-1-7 09:47
中国外贸通,把的您产品上传到网上让全国各地看到.为您创造更多的生意机会.而且可免费注册发布供求信息和产品信息https://china.53trade.com/?lms0107
作者: youyshzhy05    时间: 2006-1-7 16:58
标题: 还是没有解决,输出的是负值。
//创建旋转体
  int  obj_count;
  UF_FEATURE_SIGN mode_sign = UF_NULLSIGN;
  tag_t generators[4], line1, line2, line3, line4;
  char *body_limit[2] = {"0.0", "360.0"};
  char *offsets[2]= {"0.0", "0.0" };
  double origin[3] = {-2.0, 0.0, 0.0};
  double direction[3] = {0.0, 1.0, 0.0};

  UF_MODL_SWEEP_TRIM_object_p_t trim_data = NULL;

  UF_CURVE_line_t sline1, sline2, sline3, sline4;
    /* line#1 */
  sline1.start_point[0] = 0.0;
  sline1.start_point[1] = 0.0;
  sline1.start_point[2] = 0.0;
  sline1.end_point[0] = 0.0;
  sline1.end_point[1] = 1.0;
  sline1.end_point[2] = 0.0;
  UF_CALL(UF_CURVE_create_line(&sline1,&line1));
/* line#2 */
  sline2.start_point[0] = 0.0;
  sline2.start_point[1] = 1.0;
  sline2.start_point[2] = 0.0;
  sline2.end_point[0] = 2.5;
  sline2.end_point[1] = 3.5;
  sline2.end_point[2] = 0.0;
  UF_CALL(UF_CURVE_create_line(&sline2,&line2));
/* line#3 */
  sline3.start_point[0] = 2.5;
  sline3.start_point[1] = 3.5;
  sline3.start_point[2] = 0.0;
  sline3.end_point[0] = 1.0;
  sline3.end_point[1] = 0.0;
  sline3.end_point[2] = 0.0;
  UF_CALL(UF_CURVE_create_line(&sline3,&line3));
/* line#4 */
  sline4.start_point[0] = 1.0;
  sline4.start_point[1] = 0.0;
  sline4.start_point[2] = 0.0;
  sline4.end_point[0] = 0.0;
  sline4.end_point[1] = 0.0;
  sline4.end_point[2] = 0.0;
  UF_CALL(UF_CURVE_create_line(&sline4,&line4));
  generators[0] = line1;
  generators[1] = line2;
  generators[2] = line3;
  generators[3] = line4;
  tag_t  *object0;
  UF_CALL(UF_MODL_create_revolution(generators, 4, trim_data,
                            body_limit, offsets, origin, false,
                            true, origin, direction, mode_sign,
                            &object0, &obj_count ));
设置密度:
  int  type = 1;
  int  unit = 3;
  int  accuracy =  1;
  int  count = 0;
  int  i;
  double  acc_val[11] = {.01,0,0,0,0,0,0,0,0,0,0};  
  double  density = 0.5;
  double  massprop[47];
  double  massprop_stat[13];
          UF_MODL_density_units_t units = UF_MODL_grams_centimeters;
          double density0 = 6.80;
      UF_MODL_set_body_density
          (
             *object0, units, density0
                 );
   UF_CALL(UF_MODL_ask_mass_props_3d(object0,
                                       count,
                                       type,
                                       unit,
                                       density,
                                       accuracy,
                                       acc_val,
                                       massprop,
                                       massprop_stat));
    for (i=0; i<47; i++)         
     {
                 char message[130];         
       sprintf(message,"[%d] = %f\n",i,massprop[i]);   
                 
                 UF_UI_write_listing_window(message);   
                                                      
     }
         UF_free(object0);
       我创建一个旋转体,先设置了body密度,然后用UF_MODL_ask_mass_props_3d()函数求质量、质心和转动惯量,结果输出的是 47个相等的 负值。
      高手请帮忙看看是哪里的错误。




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3