UG二次开发

您所在的位置:网站首页 ug仿真加工教程 UG二次开发

UG二次开发

2023-03-15 09:18| 来源: 网络整理| 查看: 265

/***************************************************************************** ** **  Project_Part_parameter.c ** **  Description: **     Contains Unigraphics entry points for the application. ** *****************************************************************************/

/*  Include files */ #include #include #include #include #include #include   #include "Project_Part_parameter.h" #include "workpart_para_edit_dialog.h" /***************************************************************************** **  Activation Methods *****************************************************************************/

//部件实例名从数据库中博主跑了,来Vxin公众耗找‘ug 二次开发 cam’

/*  Unigraphics Startup **      This entry point activates the application at Unigraphics startup */ extern DllExport void ufsta( char *param, int *returnCode, int rlen ) {    UF_MB_cb_status_t Project_Part_DISPLAY_PART_edit_fun( UF_MB_widget_t,UF_MB_data_t,UF_MB_activated_button_p_t );     static UF_MB_action_t actionTable[]=     {             {"ASSEMBLY_PART_PARA_EDIT",Project_Part_DISPLAY_PART_edit_fun,NULL},             {NULL,NULL,NULL}     };     int errorCode = UF_initialize();

    if ( 0 == errorCode )     {

        /* TODO: Add your application code here */         UF_MB_add_actions(actionTable);         /* Terminate the API environment */         errorCode = UF_terminate();     }     /* Print out any error messages */     PrintErrorMessage( errorCode ); } void Project_PartParameterFree(DB_part_para_struct *p_part_para) {     DB_part_para_struct  * p_para,*p_para_next;     int             i,num=0;

    if(p_part_para==NULL)         return;     p_para=p_part_para;     while(p_para!=NULL)     {         num++;         p_para=p_para->next;     }     p_para=p_part_para;     p_para_next=p_part_para;     for(i=0;i     tag_t                 disp_part;     Project_workpart_edit m_part_para;     int                      response;

    /*     遍历装配体,根据系列值、部件实例名从数据库中获取各个部件的参数表达式     获取显示部件的标识,通过与装配模型中各个部件的标识比较获取当前显示部件的参数表达式     结构体DB_part_para_struct *p_para的指针,将其赋值给m_part_para.p_para。如以下代码所示:

    VA_component            *p_comp=NULL,*p_goal_comp=NULL;     DB_part_para_struct      *p_backup_para=NULL,*p_first,*p_second,*p_next;

    displaypart_tag=UF_PART_ask_display_part( );     p_comp=gbl_asm->head_comp; //gbl_asm->head_comp为VA_component装配模型的根节点

    Project_SearchForDisplayPart(displaypart_tag,p_comp,&p_goal_comp);//该函数用于从VA_component装配模型查找当前显示部件的节点     if(p_goal_comp==NULL)     {         uc1601("没有找到该显示零部件",1);         return UF_MB_CB_CONTINUE ;     }     p_next=p_goal_comp->part_parameter;     while(p_next!=NULL)     {            num++;         p_next=p_next->next;     }     p_next=p_goal_comp->part_parameter;     for(i=0;i             p_backup_para=p_first;             p_second=p_first;         }         else         {             p_second->next=p_first;             p_second=p_first;         }          p_next=p_next->next;     }     m_part_para.num=num;     m_part_para.p_para=p_backup_para;     m_part_para.for_work_or_display=UG_FOR_DISPLAY_PART;     */     m_part_para.for_work_or_display=0;     m_part_para.num=0;     m_part_para.p_para=NULL;

    UF_initialize();     disp_part=UF_PART_ask_display_part();     if(disp_part==NULL_TAG)     {         uc1601("当前没有显示部件",1);         return UF_MB_CB_CONTINUE;     }     LaunchWorkPartParameterEditDialog(&response,&m_part_para);     /*     if(response==UF_UI_CANCEL)          Project_PartParameter_Free(m_part_para.p_para);释放内存     else //用户确定保存到数据库,调用操作数据库函数,更新数据库     {          DB_DimToDBAndCheck(series_num,instance_name,m_part_para.p_para);                               系列值      实例名         尺寸参数信息     }     */     Project_PartParameterFree(m_part_para.p_para);     return UF_MB_CB_CONTINUE;     

}

/***************************************************************************** **  Utilities *****************************************************************************/

/* Unload Handler **     This function specifies when to unload your application from Unigraphics. **     If your application registers a callback (from a MenuScript item or a **     User Defined Object for example), this function MUST return **     "UF_UNLOAD_UG_TERMINATE". */ extern int ufusr_ask_unload( void ) {     return( UF_UNLOAD_UG_TERMINATE ); }

/* PrintErrorMessage ** **     Prints error messages to standard error and the Unigraphics status **     line. */ static void PrintErrorMessage( int errorCode ) {     if ( 0 != errorCode )     {         /* Retrieve the associated error message */         char message[133];         UF_get_fail_message( errorCode, message );

        /* Print out the message */         UF_UI_set_status( message );

        fprintf( stderr, "%s\n", message );     } }  



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3