注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

使用NXOpen查询部件存盘历史  

2014-05-17 09:18:34|  分类: UG NX |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在UG中,可以通过菜单栏上的“信息-部件-部件历史信息”查询到部件的存盘历史记录,如下图:

CX_0514_111605

CX_0514_111406

从上图中可见,在每次保存部件文件时,UG会保存版本号,时间、机器、用户和程序,这些信息也可以使用NXOpen中提供的相应的函数来获取,主要函数是UF_PART_ask_part_history、UF_PART_ask_num_histories和UF_PART_ask_nth_history,下例将当前显示的部件文件中的存盘历史保存在C盘目录下的SavePartHistory.txt文件中。

#include <uf.h>
#include <uf_part.h>
#include <uf_ui.h>
#include <uf_exit.h>
#include <string>
#include <time.h>

void ListPartHistory();

//入口函数
extern DllExport void ufsta( char *param, int *returnCode, int rlen)
{
    if(UF_initialize()) 
        return;
    //Add your code here
    ListPartHistory();
    UF_terminate();
}

//退出函数
extern int ufusr_ask_unload()
{
    return UF_UNLOAD_IMMEDIATELY;
}

void ListPartHistory()
{
    tag_t disp_part=NULL_TAG;
    disp_part=UF_PART_ask_display_part();
    if(disp_part==NULL_TAG)
    {
        uc1601("Query Display Part Tag Failed!",1);
        return;
    }
    char part_fspec[MAX_FSPEC_SIZE+1];
    //declare and create a history list
    UF_PART_history_list_p_t hl=NULL;
    UF_PART_create_history_list(&hl);
    int cnt=-1;//saving count    
    char *program,*user,*machine;
    int ver,gmt;
    struct tm *ptime=NULL;
    char timestring[30];
    UF_PART_ask_part_name(disp_part,part_fspec);
    FILE *fp=fopen("C:\\SavePartHistory.txt","w");
    fprintf(fp,"Part Name: %s\n",part_fspec);
    //acquire the part history
    UF_PART_ask_part_history(disp_part,hl);
    if(hl==NULL)
        fprintf(fp,"HL NULL!");
    //get total count of historis
    UF_PART_ask_num_histories(hl,&cnt);
    fprintf(fp,"Total Saving Histories Count: %d\n",cnt);
    fprintf(fp,"序号\t版本\t程序\t\t用户\t\t机器\t\t时间\n");
    fflush(fp);
    //process each item of histories
    for(int i=0;i<cnt;i++)
    {
        UF_PART_ask_nth_history(hl,i,&program,&user,&machine,&ver,&gmt);
        time_t disp_time=time_t(gmt);
        ptime=localtime(&disp_time);
        strftime(timestring,sizeof(timestring),"%Y-%b-%d %H:%M:%S",ptime);
        fprintf(fp,"%4d\t%4d\t%s\t%8s\t%s\t%s\n",i+1,ver,program,user,machine,timestring);
    }
    fflush(fp);
    fclose(fp);
    //release history list
    if(hl)
        UF_PART_delete_history_list(hl);
}
加载执行后,C盘创建的文件会显示存盘历史信息,其中有许多稀奇古怪的人名,例如wangming、wangz、x_tang、Shig等,估计是程序开发人员的名称,部件创建者的名称应该在最上面。
PS:其他相关函数包括:UF_PART_clear_history_list,该函数清除特定history list下的所有对象,从而使该history list能被其他部件使用,而不需要每次都新建一个。
  评论这张
 
阅读(618)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016