iCAx开思工具箱

标题: 求助:帮忙看段程序,求旋转体质量,质心,急! [打印本页]

作者: youyshzhy05    时间: 2005-12-28 19:33
标题: 求助:帮忙看段程序,求旋转体质量,质心,急!
这是我写的求质量代码,哪位高手能帮忙看下是哪里不对,急!多谢!
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("\n");
UF_UI_write_listing_window(str);
gcvt(t.mass,sig,str);
UF_UI_write_listing_window(str);
在UG下,显示运行程序的结果面积和质量是相等的负值。
作者: youyshzhy05    时间: 2005-12-28 21:37
标题: --
上面的代码是在VC下编写的,前面用
tag_t *objects;
UF_CALL(UF_MODL_create_revolution(generators,4,trim_data,body_limit,offsets,//去掉UF_CALL()
                origin,false,true,origin,direction,
                mode_sign,&objects,&obj_count ));
创建了一个旋转体(圆筒)。
大家帮帮忙吧,急!多谢了!
作者: zzz    时间: 2005-12-29 09:10
求这些参数好像只要一个函数就完了:UF_MODL_ask_mass_props_3d
作者: youyshzhy05    时间: 2006-1-7 17:15
标题: 还是没能做出来
//创建旋转体
  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个相等的 负值。
      高手请帮忙看看是哪里的错误。
作者: zhjb113    时间: 2006-1-22 22:48
UF_MODL_ask_mass_props_3d用于计算solidbody或者sheetbody的体积,质量,面积等属性,你用UF_MODL_create_revolution创建出来的是特征,所以你直接传boject0肯定是不对的,必须先ask特征的body才可以
作者: youyshzhy05    时间: 2006-2-11 22:10
能说具体点吗,我应该用哪个函数,怎么写?
多谢了!
作者: zhjb113    时间: 2006-2-20 18:06
你的函数是对的,只不过你给错参数了。你生成的是feature,你应该ask他的body,然后把body传进去。
作者: youyshzhy05    时间: 2006-3-20 12:54
用哪个函数能 ask 他的 body ,能在帮 我在上面的程序上 改动下吗?多谢了!
作者: youyshzhy05    时间: 2006-4-9 20:38
有人知道吗?高手请帮忙呀!
作者: zzz    时间: 2006-4-10 14:14
UF_MODL_ask_feat_body()
拜托一下,自己能不能稍微下点功夫啊。你能做到这,相信对UG开发的基本过程已经有所了解。请把函数库看一下好吧,即使不全看,也看几个重要的也可以,象uf_modl, uf_curve, uf_obj, uf_part, uf_assem uf_ui uf_styler等(我没有做过CAM,所以不知到CAM有哪些),把里面的函数仔细研究一下,不要什么简单问题都摆到这里,就等别人给你回答。
这些话不止是对你一个人,很多人简单的问题,摆在这,后面没人跟帖,其实好问题我们还是很愿意讨论参与的。
作者: youyshzhy05    时间: 2006-4-14 21:40
谢谢  ZZZ帮忙解答和你的建议。真该好好看看那些函数了!




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