快捷导航 上传作品

[c++] uf属性

[复制链接]
梅雷工具箱发表于 2015-6-25 14:23:57 | 显示全部楼层 |阅读模式
属性操作讲解  

#include <uf_attr.h>

UF_ATTR_assign                 创建属性
UF_ATTR_read_value             获得属性值
UF_ATTR_delete                 删除属性
UF_ATTR_delete_all             删除所有的属性
UF_ATTR_assign                 分配属性
UF_ATTR_count_attributes       计算属性

属性是附加给部件或对象的信息,一般用于对部件或对象进行解释或说明。由于这些

信息随同模型一起保存在部件文件中,因此属性在建立相关应用模型时非常有用。属性中

的信息可以是字符串、整型值、实型值、日期/时间和引用。

//----------------------------------------------------------------------------
【与属性相关的数据结构】

(1)数据结构 UF_ATTR_part_attr_t

该数据结构用于返回部件的属性值,

成 员 变 量                                成员变量描述       
char  title[UF_ATTR_MAX_TITLE_LEN+1]            属性标题                       
UF_ATTR_value_t value                            部件属性值                               
char string_value[UF_ATTR_MAX_STRING_LEN+1] 部件属性字符串值的缓冲区,字符串指针 value.value.string       
                指向该缓冲区       
                       
                       

(2)数据结构 UF_ATTR_value_t

数据结构 UF_ATTR_value_t 用于定义属性值,
int type
成 员 变 量                成员变量描述
UF_ATTR_integer;        整数
UF_ATTR_real;           实数
UF_ATTR_time;           时间
UF_ATTR_null;
UF_ATTR_string;       字符串
UF_ATTR_reference



(3)数据结构 UF_ATTR_value_u_t  ,value属性值
数据结构 UF_ATTR_value_u_t 是一个共用体数据类型,用于存储属性的实际值
                       
成 员 变 量             成员变量描述       
int    integer          属性是整型值,用于存储该整型值                               
double real          属性是实型数,用于存储该实型数的值                               
int    time[2]          属性是日期/时间型数据:time[0]存储 UG 计算的日期;time[1]存储 UG 计算的时间                               
char   *string          属性是字符串型值,用于存储该字符串                               
char   *reference 属性是表达式引用类型,用于指向该属性值的指针,使用函数 UF_ATTR_read_value()可以获取该表达式的值

//----------------------------------------------------------------------------                               

【常用的属性操作函数】

UF_ATTR_ask_part_attrs 获得部件中属性的个数

        参    数                I/O 类型        描    述       
        const tag_t part_tag                Input        部件标识                                       
        int * n_attributes                Output        部件中属性的个数                               
        UF_ATTR_part_attr_p_t        *        Output   to   be        保存属性标题及属性值的数据结构的指针,使用 UF_free()释
        attributes                freed        放内存
                                       


UF_ATTR_count_attributes 计算对象中指定类型的属性的个数

函数用于计算对象中指定类型的属性的个数。如果属性类型为 UF_ATTR_any,则返回
所有类型的属性个数,

        参    数        I/O 类型        描    述       
        tag_t object        Input        可以为:部件标识;部件中对象的标识                               
        int type        Input        属性类型                       
        int * count        Output        属性个数
                               

//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------

【属性操作源代码】

//头文件
#include <uf_modl.h>
#include <uf_obj.h>
#include <uf_attr.h>
#include <string.h>


//设置选择的实体类型
static int init_proc( UF_UI_selection_p_t select, void *user_data )
{
int  errorCode   = 0;

//选择类型 曲线或直线
// int  num_triples = 2; //选择类型 数量
// UF_UI_mask_t mask_triples[]={UF_spline_type,0,0,UF_line_type,0,0,}; //定义选择类型

//只是选择实体
int  num_triples = 1; //选择类型 数量
UF_UI_mask_t mask_triples[]={UF_solid_type,0,0,}; //定义选择类型

//只是选择 面
//int  num_triples = 1; //选择类型 数量
//UF_UI_mask_t mask_triples[]={UF_face_type,0,0,}; //定义选择类型

errorCode = UF_UI_set_sel_mask(select, UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,num_triples, mask_triples);
if( errorCode == 0)
{
return UF_UI_SEL_SUCCESS;
}
else
{
return UF_UI_SEL_FAILURE;
}
}



//----------------------------------------------------------------------------
//  Activation Methods
//----------------------------------------------------------------------------

//  Unigraphics Startup
//      This entry point activates the application at Unigraphics startup
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
{
    /* Initialize the API environment */
    int errorCode = UF_initialize();

    if ( 0 == errorCode )
    {
        /* TODO: Add your application code here */

char *message="梅雷提示!请选择实体。";
  char *title="梅雷-QQ1821117007";
  int  scope=UF_UI_SEL_SCOPE_WORK_PART;//UF_UI_SEL_SCOPE_NO_CHANGE
  int  response;
  tag_t object_tag;
  double  cursor[3]={0.0};
  tag_t view=NULL_TAG;


//加锁
//UF_UI_lock_ug_access (UF_UI_FROM_CUSTOM);
  UF_UI_select_with_single_dialog(message,title,scope,init_proc,NULL,&response,&object_tag,cursor,&view);  //选择框】
UF_DISP_set_highlight(object_tag,0); //1高亮显示 0不高亮显示
  //UF_OBJ_set_color(object_tag,20);     //改颜色
//解锁
//UF_UI_unlock_ug_access (UF_UI_FROM_CUSTOM);

// 返回值response;
//UF_UI_BACK   后退
//UF_UI_CANCEL 取消
//UF_UI_OK     确定
//UF_UI_OBJECT_SELECTED         选择的对象
//UF_UI_OBJECT_SELECTED_BY_NAME 所选对象的名字

if (response==UF_UI_OBJECT_SELECTED)
{



// 创建属性
char ssa[100]="模板名称";    //属性标题
char sva[100]="台面";        //属性值
UF_ATTR_value_t  attr_va;   
attr_va.type=UF_ATTR_string; //属性类型 字符串
attr_va.value.string=sva;
UF_ATTR_assign(object_tag,ssa,attr_va);// 创建属性



// 获得属性值
char mess[100]="",sval[100]="";
char ssaa[100]="模板名称";        //属性标题
int type=UF_ATTR_string;          //属性类型 字符串
UF_ATTR_value_t  attr_value;
attr_value.value.string=sval;
UF_ATTR_read_value(object_tag,ssaa,type,&attr_value); //获得属性值

sprintf(mess,"模板名称的属性值为:\n%s",attr_value.value);  //attr_value.value返回属性值
uc1601(mess,1);

// 计算对象中指定类型的属性的个数
int typea=UF_ATTR_string;          //属性类型 字符串
int count=0;
UF_ATTR_count_attributes(object_tag,typea,&count);

char msg[64];
sprintf(msg, "%d",count); //数字转字符串
uc1601(msg,1);            //弹出框 显示
}







        /* Terminate the API environment */
        errorCode = UF_terminate();
    }

    /* Print out any error messages */
    PrintErrorMessage( errorCode );
}





_____________________________________________________________________________ _

中磊UG二次开发教程 梅雷著 qq1821117007
学UG就上UG网 http://www.9sug.com/
就上UG网淘宝直营店
回复

使用道具 评分 举报

您需要登录后才可以回帖 登录 | 注册UG网

本版积分规则