ccdb_2222

double tolerance ;//获取建模公差
UF_MODL_ask_distance_tolerance (&tolerance);
double pi = 3.1415926535897932;
//块
UF_FEATURE_SIGN sign = UF_NULLSIGN;
char *length_plate=p_dim[1];
char *width_plate=b;
char *heigh_plate=p_dim[0];
double d_length_plate=atof(length_plate) ;
double d_width_plate=atof(width_plate);
double d_heigh_plate=atof(heigh_plate);



double plate_center[3]={0,0,0}; //定位原点
char * plate_dim[3]={length_plate,width_plate,heigh_plate}; //大小(x,y,z)
tag_t plate_tag=NULL_TAG;
UF_MODL_create_block1(sign,plate_center,plate_dim,&plate_tag);
//倒角
uf_list_p_t edgelist = NULL;//特征找边
int count;
UF_MODL_ask_feat_edges (plate_tag,&edgelist);
UF_MODL_ask_list_count (edgelist, &count);

double p1[3],p2[3];;//P1,P2为大导滑面C角选的两线
tag_t  edgeTAG1 = NULL_TAG;
int vertex_count1;
uf_list_p_t edgelist2 = NULL;
UF_MODL_create_list (&edgelist2);
for (int i = 0; i < count; i++)
{
	UF_MODL_ask_list_item (edgelist, i, &edgeTAG1);
	UF_MODL_ask_edge_verts(edgeTAG1, p1, p2, &vertex_count1);
	if(fabs(p1[1]-p2[1])==d_width_plate && fabs(p1[0])-plate_center[0]==d_length_plate && fabs(p1[2])-plate_center[1]==d_heigh_plate)
		{  UF_MODL_put_list_item (edgelist2,edgeTAG1); }
}
//创建导滑面大C角----------------------------------------------------------
//UF_MODL_create_blend ("10.0",edgelist2,0,0,0,tolerance, &featurR);
double d_l1=atof(p_dim[2]);
double d_w=atof(p_dim[3]);//角度转double
double c1=d_length_plate-d_l1;
char msg_c1[256];
char msg_c2[256];
sprintf(msg_c1,"%f",c1);
sprintf(msg_c2,"%f*tan(%f)",c1,d_w);
tag_t ChamferTag_1;
int subtype=5;
char* cha_c1=msg_c1;
char* cha_c2=msg_c2;
UF_MODL_create_chamfer(subtype,cha_c1, cha_c2,p_dim[3], edgelist2, &ChamferTag_1);//类型,距离1 距离2 角度 线 tag
UF_MODL_delete_list(&edgelist2);
UF_MODL_delete_list(&edgelist);

//倒角C5----------------------------------------------------------
uf_list_p_t edgelist3 = NULL;//特征找边
int count3;
UF_MODL_ask_feat_edges (plate_tag,&edgelist3);
UF_MODL_ask_list_count (edgelist3, &count3);
double p3[3],p4[3];;//P1,P2为大导滑面C角选的两线
tag_t  edgeTAG3 = NULL_TAG;
int vertex_count3;
uf_list_p_t edgelist4 = NULL;
UF_MODL_create_list (&edgelist4);
for (int i = 0; i < count3; i++)
{
	UF_MODL_ask_list_item (edgelist3, i, &edgeTAG3);
	UF_MODL_ask_edge_verts(edgeTAG3, p3, p4, &vertex_count3);
	if(fabs(p3[1]-p4[1])==d_width_plate && fabs(p3[0])==plate_center[0] && fabs(p4[2])-plate_center[1]==d_heigh_plate)
		{  UF_MODL_put_list_item (edgelist4,edgeTAG3); }
}
tag_t ChamferTag_3;
UF_MODL_create_chamfer(5,"5", "5","45", edgelist4, &ChamferTag_3);//倒角为常量,不需要驱动
UF_MODL_delete_list(&edgelist4);
UF_MODL_delete_list(&edgelist3);

//倒角C3----------------------------------------------------------
uf_list_p_t edgelist5 = NULL;//特征找边
int count5;
UF_MODL_ask_feat_edges (plate_tag,&edgelist5);
UF_MODL_ask_list_count (edgelist5, &count5);
double p5[3],p6[3];//P1,P2为大导滑面C角选的两线
tag_t  edgeTAG4 = NULL_TAG;
int vertex_count4;
uf_list_p_t edgelist6 = NULL;
UF_MODL_create_list (&edgelist6);
for (int i = 0; i < count5; i++)
{
	UF_MODL_ask_list_item (edgelist5, i, &edgeTAG4);
	UF_MODL_ask_edge_verts(edgeTAG4, p5, p6, &vertex_count4);
	if(fabs(p5[0])-fabs(plate_center[0])<tolerance && fabs(p5[1])-fabs(p6[1])==d_width_plate)
		{  UF_MODL_put_list_item (edgelist6,edgeTAG4); }
}
tag_t ChamferTag_4;
UF_MODL_create_chamfer(5,"3", "3","45", edgelist6, &ChamferTag_4);//倒角为常量,不需要驱动
UF_MODL_delete_list(&edgelist6);
UF_MODL_delete_list(&edgelist5);

//倒圆角----------------------------------------------------------------------
tag_t bodyTAG1=NULL_TAG ;
UF_MODL_ask_feat_body(plate_tag,&bodyTAG1);
uf_list_p_t face_list2;
UF_MODL_create_list(&face_list2);
UF_MODL_ask_body_faces(bodyTAG1,&face_list2);
int count1=0;
UF_MODL_ask_list_count(face_list2,&count1);

tag_t face5,face6;
tag_t obj4=NULL_TAG;
for(int i=0;i<count1;i++)
{
UF_MODL_ask_list_item(face_list2,i,&obj4);//查询列表中的对象 上面的facelist
int type;
double point [3] ;
double dir [3] ;
double box [6] ;
double radius;
double  rad_data;
int  norm_dir ;
UF_MODL_ask_face_data(obj4,&type,point,dir,box,&radius,&rad_data,&norm_dir);//查询与面有关的数据,输入obj,输出type
if(type==22)//“22”代表有界平面,该处还有其他值,可以查阅帮助
		{
		if(fabs(point[2]-plate_center[2])==d_heigh_plate)		{ face5=obj4; }
		if(fabs(point[0]-plate_center[0])>d_l1)		{ face6=obj4;}
		int typel;
		UF_MODL_ask_face_type(obj4,&typel);
		if(typel==UF_MODL_PLANAR_FACE )
			{
				uf_list_p_t blend_face;
				UF_MODL_create_list(&blend_face);
				UF_MODL_ask_shared_edges(face5,face6,&blend_face);//查新面的交线
				char *radius="20";
				int smooth_overflow=0;
				int cliff_overflow=0;
				int notch_overflow=0;
				double vrb_tool=3;
				tag_t feature_obj_id;
				UF_MODL_create_blend(radius, blend_face, smooth_overflow, cliff_overflow, notch_overflow, vrb_tool, &feature_obj_id );							
			 }
		}				
}
UF_MODL_delete_list(&face_list2);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小中百买鸡蛋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值