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