层操作
// 层名不能用中文,层描述可以用
#include <uf_obj.h>
#include <uf_layer.h>
// 对象移动到层
UF_OBJ_set_layer (tag_t object_id,int layer );
// 读取工作层。
UF_LAYER_ask_work_layer (int * layer_number );
UF_LAYER_set_all_but_work (UF_LAYER_ACTIVE_LAYER); //所有层可见
UF_LAYER_set_all_but_work (UF_LAYER_INACTIVE_LAYER); //所有层不可见
UF_LAYER_set_all_but_work (UF_LAYER_REFERENCE_LAYER);//所有层只可见
//设置指定层指定相应的状态。
UF_LAYER_set_status(255,UF_LAYER_INACTIVE_LAYER); //255层不可见
//UF_LAYER_WORK_LAYER 工作层
//UF_LAYER_ACTIVE_LAYER 可选择
//UF_LAYER_REFERENCE_LAYER 只可见
//UF_LAYER_INACTIVE_LAYER 不可见
//读取层状态。
int layer_number=1; //输入 层号
int layer_status; //输出 层状态
UF_LAYER_ask_status (layer_number, &layer_status );
if(layer_status==UF_LAYER_WORK_LAYER) uc1601("工作层",1);
if(layer_status==UF_LAYER_ACTIVE_LAYER) uc1601("可见",1);
if(layer_status==UF_LAYER_REFERENCE_LAYER) uc1601("只可见",1);
if(layer_status==UF_LAYER_INACTIVE_LAYER) uc1601("不可见",1);
//---------------------------------------------------------------
//创建 层组 层名 层描述
UF_LAYER_category_info_t cat;
tag_t cat_tag=NULL;
strcpy(cat.name, "M_3"); //层名
strcpy(cat.descr, "产品未缩放"); //描述
for (i = -1; i < 255;)
{
i++;
cat.layer_mask = 0;
}
cat.layer_mask[3] = 1; //加入到层组
UF_LAYER_create_category(&cat, &cat_tag);//创建 层组 层名 层描述
//编辑
//UF_LAYER_edit_category_name(cat_tag, "ASM_20"); /* 编辑 名称 */
//UF_LAYER_edit_category_descr(cat_tag,"Assembly Line 20"); /* 编辑 描述 */
//UF_LAYER_edit_category_layer(cat_tag, cat.layer_mask); /* 编辑 范围 */
//UF_LAYER_ask_category_info(cat_tag, &cat); //得到的分类信息
//uc1601(cat1.name,1);
//uc1601(cat1.descr,1);
// 通过层名获得层标识
tag_t category;
UF_LAYER_ask_category_tag ("LEI", &category );
//通过层标识 编辑类别描述。
char cat_descr[81]="LEI";
UF_LAYER_edit_category_descr (category, cat_descr );
//通过层标识 编辑名称。
char cat_name[31]="MM";
UF_LAYER_edit_category_name (category, cat_name );
// 通过层名获得层标识
UF_LAYER_ask_category_tag ("MM", &category );
//通过层标识 编辑层组范围
logical layer_mask[256];
int i;
for (i = 0; i < 256; ++i)
{
layer_mask = 0;
}
layer_mask[5] = 1; //第6层 加入到层组
layer_mask[6] = 1; //第7层 加入到层组
layer_mask[18] = 1; //第19层 加入到层组
UF_LAYER_edit_category_layer (category, layer_mask);
//---------------------------------------------------------------
设置指定层指定相应的状态。的工作层不提及或无效。
只有一层可工作层。如果出现任何错误,则不是层状态改性。
UF_LAYER_set_many_layers_status
//读取类别名称,构件层,和描述
UF_LAYER_ask_category_info
循环工作部分的层。
第一个电话:返回第一层对象启用。
下一个电话:返回下一个对象层下启用。
最后呼吁:当所有的对象已经筋疲力尽,
返回object_tag = null_tag。
不要试图删除对象时,循环回路中的数据库。问题
可以发生在试图读取下一个对象时当前对象已经
删除。要删除的对象,在它的对象保存一个数组,然后
当你完成了循环,使用uf_obj_delete_array_of_objects删除
保存的对象数组。
UF_LAYER_cycle_by_layer
//---------------------------------------------------------------
//获得对象信息
tag_t object;
UF_OBJ_disp_props_s dispprops;
UF_OBJ_ask_display_properties (object, &dispprops);
/*
这些信息都保存在结构体UF_OBJ_disp_props_s中,
成员变量 成员变量描述
Int layer 对象所在的层
Int color 对象的颜色
Int blank_status 对象的隐藏状态:UF_OBJ_NOT_BLANKED;
UF_OBJ_BLANKED
Int line_width 对象的线宽:UF_OBJ_WIDTH_NORMAL;
UF_OBJ_WIDTH_THICK;
UF_OBJ_WIDTH_THIN;
UF_OBJ_WIDTH_ORIGINAL
Int font 对象的线型
Logical highlight_status 对象的高亮显示状态
int ll=dispprops.layer //对象所在的层
*/
_____________________________________________________________________________ _
中磊UG二次开发教程 梅雷著 qq1821117007
学UG就上UG网 http://www.9sug.com/ |