目 录CONTENT

文章目录
UF

PK VS UF 创建块的时间

WenzhouXv
2023-11-16 / 0 评论 / 0 点赞 / 33 阅读 / 0 字

PK VS UF 创建块的时间

image-20231116023344906

UF

	//计时开始
	UF_timer_t  Timer;
	UF_begin_timer(&Timer);


	//创建块
	UF_FEATURE_SIGN sign = UF_NULLSIGN;
	double corner_pt[3] = { 0.0, 0.0, 0.0 };
	char* edge_len[3] = { "10","20","30" };
	tag_t blk_obj_id = NULL_TAG;
	UF_MODL_create_block1(sign, corner_pt, edge_len, &blk_obj_id);

	//结束计时
	UF_timer_values_t ValueTimer;
	UF_end_timer(Timer, &ValueTimer);


	//打印信息
	char msg[256];
	UF_UI_open_listing_window();
	sprintf(msg, "该进程的总CPU时间(用户+系统):%f\n总运行时间:%f", ValueTimer.cpu_time, ValueTimer.real_time);
	UF_UI_write_listing_window(msg);

PK

封装PK块

bool PKCreateBlock::ag_create_block(const double point[3], const double mtx_3d[9], const double size[3],
	PK_BODY_t& pkBody)
{
//注意pk单位是米NX单位是mm  
//所以  传入pk大数据*0.001    
//返回  pk的数据*1000.0
//特殊 向量矩阵这种数据是正常的不需要单位转换

	int           i = 0;
	double        x_vec[3] = { 0.0 }, y_vec[3] = { 0.0 }, mtx_3d1[9] = { 0.0 };
	double        size1[3] = { 0.0 }, x_vec1[3] = { 0.0 }, y_vec1[3] = { 0.0 };
	double        mm = 0.001, magnitude = 0.0;
	PK_AXIS2_sf_s basis_set;

	pkBody = PK_ENTITY_null;
	UF_MTX3_x_vec(mtx_3d, x_vec);
	UF_MTX3_y_vec(mtx_3d, y_vec);
	UF_MTX3_initialize(x_vec, y_vec, mtx_3d1);
	UF_MTX3_x_vec(mtx_3d1, x_vec1);
	UF_MTX3_y_vec(mtx_3d1, y_vec1);
	UF_MTX3_z_vec(mtx_3d1, basis_set.axis.coord);
	UF_MTX3_x_vec(mtx_3d1, basis_set.ref_direction.coord);
	basis_set.location.coord[0] = (point[0] + x_vec1[0] * size[0] * 0.5 + y_vec1[0] * size[1] * 0.5) * mm;
	basis_set.location.coord[1] = (point[1] + x_vec1[1] * size[0] * 0.5 + y_vec1[1] * size[1] * 0.5) * mm;
	basis_set.location.coord[2] = (point[2] + x_vec1[2] * size[0] * 0.5 + y_vec1[2] * size[1] * 0.5) * mm;
	for (i = 0; i < 3; i++)
	{
		size1[i] = size[i] * mm;
	}
	PK_BODY_create_solid_block(size1[0], size1[1], size1[2], &basis_set, &pkBody);
	if (PK_ENTITY_null == pkBody)
		return false;
	return true;

}

实现

UF_timer_t  Timer;
	UF_begin_timer(&Timer);
		//例子:PK创建长方体
	tag_t partition = NULL_TAG;
	tag_t body_tag = NULL_TAG;
	PK_BODY_t pk_body = PK_ENTITY_null;
	UF_PS_create_partition(&partition);//为Parasolid创建一个隔层分区,并将其设置为当前分区 必须用
																	 //如果你只是用于计算 不显示到ug 可以不创建分区

	constexpr double point[3] = { 0.0 };
	const double mtx_3d[9] = { 1,0,0,0,1,0,0,0,1 };
	constexpr double size[3] = { 10,20,30 };
	ag_create_block(point, mtx_3d, size, pk_body);

	UF_PS_create_obj_from_ps_tag(pk_body, &body_tag);//pk对象创建到UG不会立即显示
	UF_DISP_add_item_to_display(body_tag);//在UG里显示出来

	//结束计时
	UF_timer_values_t ValueTimer;
	UF_end_timer(Timer, &ValueTimer);

	//打印信息
	char msg[256];
	UF_UI_open_listing_window();
	sprintf(msg, "该进程的总CPU时间(用户+系统):%f\n总运行时间:%f", ValueTimer.cpu_time, ValueTimer.real_time);
	UF_UI_write_listing_window(msg);
0
PK
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区