找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 21078|回复: 7
打印 上一主题 下一主题

UG/API:求助:求旋转体质量、质心、转动惯量。急!

[复制链接]
跳转到指定楼层
1
发表于 2005-12-28 21:19:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
这是我的代码,课题快要交了,大家帮忙看看,多谢了!急!
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下运行输出的的面积和质量是一样的负值。
大家帮我看看是哪里错了。多谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2005-12-29 17:18:18 | 只看该作者
估计是送进去的tag有问题吧,这个函数要求是part或者solid的tag。
还有一个函数UF_MODL_ask_mass_props_3d也可以求质量,转动惯量什么的。这个函数可以求多个solid或者sheet body的。你可以试一试
3
发表于 2005-12-31 19:09:40 | 只看该作者
多谢!supergirl.
用UF_MODL_ask_mass_props_3d函数做出来了!
4
发表于 2006-1-1 20:40:27 | 只看该作者

怎样把给定密度带入到UF_MODL_ask_mass_props_3d计算中?

怎样把给定密度带入到UF_MODL_ask_mass_props_3d计算中?
      用UG帮助中的例子,初始化密度为1.0 ,结果求出物体的特征参数中密度显示为7.83。
我怎样把特定的密度带入到函数计算中?
5
发表于 2006-1-4 10:09:43 | 只看该作者
晕,怎么都不看函数说明呢,明明说得很清楚啊。那个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]).
6
发表于 2006-1-7 09:46:55 | 只看该作者
中国外贸通,把的您产品上传到网上让全国各地看到.为您创造更多的生意机会.而且可免费注册发布供求信息和产品信息https://china.53trade.com/?lms0107
7
发表于 2006-1-7 09:47:19 | 只看该作者
中国外贸通,把的您产品上传到网上让全国各地看到.为您创造更多的生意机会.而且可免费注册发布供求信息和产品信息https://china.53trade.com/?lms0107
8
发表于 2006-1-7 16:58:47 | 只看该作者

还是没有解决,输出的是负值。

//创建旋转体
  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个相等的 负值。
      高手请帮忙看看是哪里的错误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-27 01:15 , Processed in 0.035705 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表