//1.进入草图环境
char name[UF_OBJ_NAME_BUFSIZE] = "SKETCH";
tag_t sketTAG = NULL_TAG;
UF_SKET_initialize_sketch(name, &sketTAG);
//2.指定CSYS创建草图
double matrix[9] = { 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 };
tag_t object[2];
int reference[2];
int plane_dir = 2;
UF_SKET_create_sketch(name, 2, matrix, object, reference, plane_dir, &sketTAG);
//3.创建直线
UF_CURVE_line_t line;
line.start_point[0] = 2.0;
line.start_point[1] = 2.0;
line.start_point[2] = 0.0;
line.end_point[0] = 10.0;
line.end_point[1] = 10.0;
line.end_point[2] = 0.0;
tag_t lineTAG = NULL_TAG;
UF_CURVE_create_line(&line, &lineTAG);
//4.添加曲线到当前草图
tag_t objline[1] = { lineTAG };
UF_SKET_add_objects(sketTAG, 1, objline);
//5.添加线性尺寸约束
UF_SKET_dim_object_t obj1[2];
obj1[0].object_tag = lineTAG;
obj1[0].object_assoc_type = UF_SKET_end_point;
obj1[0].object_assoc_mod_value = UF_SKET_first_end_point;
obj1[1].object_tag = lineTAG;
obj1[1].object_assoc_type = UF_SKET_end_point;
obj1[1].object_assoc_mod_value = UF_SKET_last_end_point;
double dim_origin[3] = { 10, 5, 0 };
double dim_origin1[3] = { 5, 12, 0 };
tag_t con_TAG = NULL_TAG;
tag_t con_TAG1 = NULL_TAG;
UF_SKET_create_dimensional_constraint(sketTAG, UF_SKET_vertical_dim, 2, obj1, dim_origin, &con_TAG);//创建竖直的尺寸
UF_SKET_create_dimensional_constraint(sketTAG, UF_SKET_horizontal_dim, 2, obj1, dim_origin1, &con_TAG1);//创建水平的尺寸
//6.创建几何约束
UF_SKET_con_geom_t con_geoms[1];
con_geoms[0].geom_tag = lineTAG;
con_geoms[0].vertex_type = UF_SKET_start_vertex;
tag_t con_tag1 = NULL_TAG;
UF_SKET_create_geometric_constraint(sketTAG, UF_SKET_fixed, 1, con_geoms, &con_tag1);
//7.获取草图的表达式Tag
int countExp;
tag_t* exprTAG = NULL;
UF_SKET_ask_exps_of_sketch(sketTAG, &countExp, &exprTAG);
//打印表达式Tag
UF_UI_open_listing_window();
char msg[256];
for (int i = 0; i < countExp; i++)
{
sprintf(msg, "%d\n", exprTAG[i]);
UF_UI_write_listing_window(msg);
}
UF_free(exprTAG); //释放内存
//8.更新草图
UF_SKET_update_sketch(sketTAG);
//9.退出草图环境
UF_SKET_terminate_sketch();
创建草图,添加约束,获取草图表达式
最新推荐文章于 2024-06-04 05:41:15 发布