QQ登录

只需一步,快速开始

快捷登录

登录 或者 注册 请先

UG爱好者

查看: 21895|回复: 12
打印 上一主题 下一主题

[分享] 小白学UG二次开发_UG/Open UIStlyer对话框设计

[复制链接]

三级士官

Rank: 3Rank: 3

11

主题

54

帖子

641

积分
跳转到指定楼层
楼主
发表于 2015-3-23 22:35:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本例参考《UG/Open API、MFC和COM  开发实例精解》 黄勇,本例基本参照书中内容操作,没有做太大修改,能正常运行。第一步,准备工作
      在UGII_USER_DIR目录里新建startup,application两个文件夹。书中是这么说的,但是我只用到了application,startup我没有用到。怎么设置环境变量我就不说了。

第二步,设计UI.
       UG  开始-》所有应用模块-》NX 6 之前版本UI样式编辑器  选之前的版本主要为了降低开发难度。进入UIStyler 对话框设计环境,新建文件。
       里面有很多控件,自己试着点点看,探索下。

里面有对象浏览器,对话框和资源编辑器,对话框的标题和提示如下图所示,前缀名比较重要,直接关系到后续程序生成后的一些参数名称,我们这边设置为DIALOG_ACCESS。

设置如图所示的整数、实数、字符串和按钮控件,导航按键中按钮样式选项里选择的不同项会影响到后续的回调函数。这里选择关闭。整数,实数,字符串修改下标签和标识符。这个会在对象浏览器里反应出来。目前我还不会修改类型,就放着没管,如果有知道的,请帮忙解释下类型。
另外,我对回调函数的名称生成机制也不是很清楚,只是知道Back_cb应该是关闭对话框时触发的回调函数,action_3_act_cb是按钮空间触发的回调函数,名字和书上不太一样,但是能正常实现功能。

      完成后,另存为对话框到application,语言选C,对话框名称为access_dialog,在目录下会生成access_dialog.dlg,access_dialog.h,access_dialog_template.c三个文件,进入文件夹,将最后一个文件改成access_dialog.cpp并保存。
       按之前帖子的方法建立一个DDL工程,注意目录放在UGII_USER_DIR下,名称也为Dialog_Access.将access_dailog.h和 access_dialog.cpp复制到工程中,添加到头文件和源文件中。接下来是虐心的代码。。。。
  1. /*=============================================================================
  2.    WARNING!!  This file is overwritten by the UIStyler each time the Styler
  3.    file is saved.


  4.         Filename:  access_dialog_template.c

  5.         This file was generated by the NX User Interface Styler
  6.         Created by: Daniel
  7.         Version: NX 8.5
  8.               Date: 03-23-2015
  9.               Time: 19:32

  10.    This template file is overwritten each time the UIStyler dialog is
  11.    saved.  Any modifications to this file will be lost.
  12. ==============================================================================*/



  13. /*==============================================================================
  14.    Purpose:  This TEMPLATE file contains C source and static structures to      
  15.    guide you in the construction of your NX Open application dialog.            
  16.    The generation of your dialog file (.dlg extension) is the first step towards
  17.    dialog construction within Unigraphics.  You must now create a UGOpen        
  18.    application that utilizes this file (.dlg).                                 
  19.      生成对话框文件dig是第一步,然后要利用dlg文件创建一个UGOpen应用                                                        
  20.    The information in this file provides you with the following:               

  21.    1.  Help on the use of the functions, UF_MB_add_styler_actions and           
  22.        UF_STYLER_create_dialog in your NX Open application.  These functions   
  23.        will load and display your UIStyler dialog in Unigraphics.               
  24.            两个重要函数                                                              
  25.        An example of the function, UF_MB_add_styler_actions to associate your   
  26.        dialog to the menubar is shown below (Search on Example 1).              
  27.        这个example1 和2 在哪里?谁知道?                                                                        
  28.        An example of a invoking a dialog from a callback utilizing              
  29.        UF_STYLER_create_dialog is also shown below (Search for Example 2).      

  30.        An example of a user exit utilizing UF_STYLER_create_dialog is also      
  31.        shown below (Search for Example 3).                                      

  32.    2.  The callback structure(回调结构体?不知道是不是这么翻译的): --- DIALOG_ACCESS_cbs ---               
  33.        This structure is VERY important if you have callbacks associated with   
  34.        your dialog.  It correlates the dialog items in your dialog with the     
  35.        callback functions you must supply.  You should not modify this         
  36.        structure since it MUST match up to the information stored in your      
  37.        dialog file (.dlg).  用以链接对话框项目(item)和回调函数,其必须和dlg文件匹配,不要修改。Any attempt to do so will cause an error while      
  38.        constructing your dialog.   If you wish to modify the association of     
  39.        your callbacks to your dialog, please reload your dialog file (.dlg) into
  40.        the UIStyler and regenerate your files.                                 
  41.        You do not need to be concerned about this structure, simply pass it as  
  42.        an argument to the function, UF_STYLER_create_dialog along with your     
  43.        dialog file (.dlg).

  44.        Example 1 displays the actual call you may make for this particular      
  45.        dialog.                                                                  

  46.    3.  The empty callback functions (stubs) associated with your dialog items   
  47.        have also been placed in this file.  These empty functions have been     
  48.        created simply to start you along with your coding requirements.         
  49.        The function name, argument list and possible return values have already
  50.        been provided for you.
  51. 文件中也已经生成了空的回调函数,后续要实现啥功能,就要在里面编程。                                                   

  52. NOTE:  Each callback must be wrappered with the functions UF_initialize()      
  53.        and UF_terminate().                                                      

  54. ==============================================================================*/



  55. /* These include files are needed for the following template code.            */
  56. #include <stdio.h>
  57. #include <uf.h>
  58. #include <uf_defs.h>
  59. #include <uf_exit.h>
  60. #include <uf_ui.h>
  61. #include <uf_styler.h>
  62. #include <uf_mb.h>
  63. #include "access_dialog.h"//这里要用引号

  64. /* The following definition defines the number of callback entries */
  65. /* in the callback structure:                                      */
  66. /* UF_STYLER_callback_info_t DIALOG_ACCESS_cbs */
  67. #define DIALOG_ACCESS_CB_COUNT ( 3 + 1 ) /* Add 1 for the terminator */

  68. /*--------------------------------------------------------------------------
  69. The following structure defines the callback entries used by the      
  70. styler file.  This structure MUST be passed into the user function,   
  71. UF_STYLER_create_dialog along with DIALOG_ACCESS_CB_COUNT.                       
  72. --------------------------------------------------------------------------*/
  73. static UF_STYLER_callback_info_t DIALOG_ACCESS_cbs[DIALOG_ACCESS_CB_COUNT] =
  74. {
  75. {UF_STYLER_DIALOG_INDEX, UF_STYLER_APPLY_CB        , 0, DIALOG_ACCESS_apply_cb},
  76. {UF_STYLER_DIALOG_INDEX, UF_STYLER_BACK_CB         , 0, DIALOG_ACCESS_back_cb},
  77. {DIALOG_ACCESS_BUTTON  , UF_STYLER_ACTIVATE_CB     , 0, DIALOG_ACCESS_action_3_act_cb},
  78. {UF_STYLER_NULL_OBJECT, UF_STYLER_NO_CB, 0, 0 }
  79. };
  80. 这里我还没怎么搞明白,先不管。不过应该是和后续回调函数调用时需要用到的一些结构体。


  81. /*--------------------------------------------------------------------------
  82. UF_MB_styler_actions_t contains 4 fields.  These are defined as follows:

  83. Field 1 : the name of your dialog that you wish to display.
  84. Field 2 : any client data you wish to pass to your callbacks.
  85. Field 3 : your callback structure.
  86. Field 4 : flag to inform menubar of your dialog location.  This flag MUST  
  87.           match the resource set in your dialog!  Do NOT ASSUME that changing
  88.           this field will update the location of your dialog.  Please use the
  89.           UIStyler to indicate the position of your dialog.
  90. --------------------------------------------------------------------------*/
  91. static UF_MB_styler_actions_t actions[] = {
  92.     { "access_dialog.dlg",  NULL,   DIALOG_ACCESS_cbs,  UF_MB_STYLER_IS_NOT_TOP },
  93.     { NULL,  NULL,  NULL,  0 } /* This is a NULL terminated list */
  94. };

  95. 这个我也没特别闹明白,但是应该是菜单栏调用UI需要采用该结构体数组。






  96. /*---------------- MENUBAR HOOKUP HELP Example -------------------
  97. 这里是从菜单栏调用UI的方法,本例忽略,后续会去试一试
  98. To launch this dialog from a Unigraphics menubar, you must follow
  99. the steps below.
  100. 1)  Add the following lines to your MenuScript file in order to
  101.     associate a menu bar button with your dialog.  In this     
  102.     example, a cascade menu will be created and will be        
  103.     located just before the Help button on the main menubar.   
  104.     The button, ACCESS_DIALOG_BTN is set up to launch your dialog and
  105.     will be positioned as the first button on your pulldown menu.
  106.     If you wish to add the button to an existing cascade, simply
  107.     add the 3 lines between MENU LAUNCH_CASCADE and END_OF_MENU  
  108.     to your menuscript file.  

  109.     The MenuScript file requires an extension of ".men".
  110.     Make sure that you add the extension to the file and place  
  111.     the file in your startup directory:
  112.       $UGII_USER_DIR/startup or
  113.       $UGII_SITE_DIR/startup or
  114.       $UGII_VENDOR_DIR/startup directory


  115.     Move the contents between the dashed lines to your Menuscript file.
  116. !   ----------------------------------------------------------------
  117.     VERSION 120

  118.     EDIT UG_GATEWAY_MAIN_MENUBAR

  119.     BEFORE UG_HELP
  120.       CASCADE_BUTTON UISTYLER_DLG_CASCADE_BTN
  121.       LABEL Dialog Launcher
  122.     END_OF_BEFORE

  123.     MENU UISTYLER_DLG_CASCADE_BTN
  124.       BUTTON ACCESS_DIALOG_BTN
  125.       LABEL Display access_dialog dialog
  126.       ACTIONS access_dialog.dlg
  127.     END_OF_MENU
  128. !   ---------------------------------------------------------------


  129. 2) Issue a call to the function, UF_MB_add_styler_actions from the ufsta
  130.    user exit as shown below.  To use this call, remove the conditional
  131.    definitions:  #ifdef MENUBAR_COMMENTED_OUT
  132.                  #endif MENUBAR_COMMENTED_OUT

  133.    The static structure, actions, will allow you to associate ALL of your
  134.    dialogs and callback functions to the  menubar at once.  For example, if you
  135.    wish to have 10 dialogs associated to 10 different buttons on the menubar,
  136.    you may enter each dialog and callback list into the actions structure. Make
  137.    sure that you have created a corresponding button in your MenuScript file.

  138.    You may also have separate shared libraries, each with a ufsta user exit
  139.    for each individual dialog.


  140. 3) Place your compiled and linked ufsta user function in
  141.    $UGII_USER_DIR/startup or   
  142.    $UGII_SITE_DIR/startup or
  143.    $UGII_VENDOR_DIR/startup directory.     

  144.    NOTE:  The user function must contain the proper extension .so, .sl or .dll
  145.    to make ensure that it is recognized by the MenuScript.  If it does not
  146.    have the proper extension, it will NOT be recognized by MenuScript.   


  147.    The action name you have provided in your MenuScript must correspond to
  148.    to the dialog name provided in the action structure.  This MUST match inorder
  149.    to bind your dlg file to your MenuScript button.                           


  150. 4) Copy your UIStyler dialog file to the proper directory.
  151.    All dialog files (.dlg) must be located in
  152.       $UGII_USER_DIR/application or
  153.       $UGII_SITE_DIR/application or
  154.       $UGII_VENDOR_DIR/application directory




  155. ------------------------------------------------------------*/
  156. #ifdef MENUBAR_COMMENTED_OUT
  157. extern void ufsta (char *param, int *retcode, int rlen)
  158. {
  159.     int  error_code;

  160.     if ( (UF_initialize()) != 0)
  161.           return;

  162.     if ( (error_code = UF_MB_add_styler_actions ( actions ) ) != 0 )
  163.     {
  164.           char fail_message[133];

  165.           UF_get_fail_message(error_code, fail_message);
  166.           printf ( "%s\n", fail_message );
  167.     }

  168.     UF_terminate();                             
  169.     return;
  170. }
  171. #endif /*MENUBAR_COMMENTED_OUT*/





  172. /*-------DIALOG CREATION FROM A CALLBACK HELP Example ----------
  173. 从其他UI对话框调用这个UI对话框,本例不涉及
  174. If you wish to have this dialog displayed from the callback of
  175. another UIStyler dialog, you should:                           

  176. 1) Make sure that the callback of your UIStyler dialog is
  177.    designated as a dialog building callback.              
  178. 2) Remove the conditional definitions:
  179.    #ifdef DISPLAY_FROM_CALLBACK
  180.    #endif DISPLAY_FROM_CALLBACK
  181. 3) Your callback should issue a call to this function.
  182. 4) You should also add the funcitonal prototype to your header file
  183.    (access_dialog.h) and ensure that the file is properly included.

  184. All dialog files must be located in
  185.       $UGII_USER_DIR/application or
  186.       $UGII_SITE_DIR/application or
  187.       $UGII_VENDOR_DIR/application directory
  188. --------------------------------------------------------------*/


  189. #ifdef DISPLAY_FROM_CALLBACK
  190. extern int <enter the name of your function> ( int *response )
  191. {
  192.     int  error_code = 0;

  193.     if ( ( error_code = UF_initialize() ) != 0 )
  194.            return (0) ;

  195.     if ( ( error_code = UF_STYLER_create_dialog ( "access_dialog.dlg",
  196.            DIALOG_ACCESS_cbs,      /* Callbacks from dialog */
  197.            DIALOG_ACCESS_CB_COUNT, /* number of callbacks*/
  198.            NULL,        /* This is your client data */
  199.            response ) ) != 0 )
  200.     {
  201.           char fail_message[133];

  202.           /* Get the user function fail message based on the fail code.*/
  203.           UF_get_fail_message(error_code, fail_message);
  204.           UF_UI_set_status (fail_message);
  205.           printf ( "%s\n", fail_message );
  206.     }


  207.     UF_terminate();                             
  208.     return (error_code);
  209. }
  210. #endif /* DISPLAY_FROM_CALLBACK */




  211. /*-------DIALOG CREATION FROM A USER EXIT HELP Example --------
  212. 从USER EXIT生成这个对话框,调用NX Open API,UF_STYLER_create_dialog,
  213. To create this dialog from a user exit, you must invoke a     
  214. call to the NX Open API, UF_STYLER_create_dialog.  An example
  215. is shown below.                                               

  216. All dialog files must be located in 这个是讲LIALOG文件存放路径的,之前已经存过了,问题不大。
  217.       $UGII_USER_DIR/application or
  218.       $UGII_SITE_DIR/application or
  219.       $UGII_VENDOR_DIR/application directory

  220. 1) Remove the conditional definitions:
  221. 这个要求把这两行注释掉,或者在之前#define DISPLAY_FROM_USER_EXIT
  222.    #ifdef DISPLAY_FROM_USER_EXIT
  223.    #endif DISPLAY_FROM_USER_EXIT
  224. 2) Add a user exit to the function name below, for example, ufusr.
  225. 3) Consider how your shared library will be unloaded.  Take a look
  226.    at the generated function ufusr_ask_unload.
  227. --------------------------------------------------------------*/
  228. //#define DISPLAY_FROM_USER_EXIT 如果这里定义了 DISPLAY_FROM_USER_EXIT,代码也会有效。
  229. //#ifdef DISPLAY_FROM_USER_EXIT
  230. extern void ufusr (char *param, int *retcode, int rlen)  //这里的ufusr是后续添进去的,
  231. {
  232.     int  response   = 0;
  233.     int  error_code = 0;

  234.     if ( ( UF_initialize() ) != 0 )
  235.            return;

  236.     if ( ( error_code = UF_STYLER_create_dialog ( "access_dialog.dlg",
  237.            DIALOG_ACCESS_cbs,      /* Callbacks from dialog */
  238.            DIALOG_ACCESS_CB_COUNT, /* number of callbacks*/
  239.            NULL,        /* This is your client data */
  240.            &response ) ) != 0 )
  241.     {
  242.           char fail_message[133];

  243.           /* Get the user function fail message based on the fail code.*/
  244.           UF_get_fail_message(error_code, fail_message);
  245.           UF_UI_set_status (fail_message);
  246.           printf ( "%s\n", fail_message );
  247.     }


  248.     UF_terminate();                             
  249.     return;
  250. }




  251. /*--------------------------------------------------------------------------
  252. This function specifies how a shared image is unloaded from memory         
  253. within Unigraphics. This function gives you the capability to unload an     
  254. internal NX Open application or user  exit from Unigraphics.  You can      
  255. specify any one of the three constants as a return value to determine      
  256. the type of unload to perform:  immediately after user function            
  257. execution, via an unload selection dialog, or when Unigraphics terminates   
  258. terminates.  If you choose UF_UNLOAD_SEL_DIALOG, then you have the         
  259. option to unload your image by selecting  File->Utilities->Unload Shared   
  260. Image.

  261. NOTE:  A program which associates NX Open applications with the menubar     
  262. MUST NOT use this option since it will UNLOAD your NX Open application image
  263. --------
  264. from the menubar.
  265. --------------------------------------------------------------------------*/

  266. extern int ufusr_ask_unload (void)
  267. {
  268.      /* unload immediately after application exits*/
  269.      return ( UF_UNLOAD_IMMEDIATELY );

  270.      /*via the unload selection dialog... */
  271.      /*return ( UF_UNLOAD_SEL_DIALOG );   */
  272.      /*when UG terminates...              */
  273.      /*return ( UF_UNLOAD_UG_TERMINATE ); */
  274. }

  275. 这个函数先不管

  276. /*--------------------------------------------------------------------------
  277. You have the option of coding the cleanup routine to perform any housekeeping
  278. chores that may need to be performed.  If you code the cleanup routine, it is
  279. automatically called by Unigraphics.
  280. --------------------------------------------------------------------------*/
  281. extern void ufusr_cleanup (void)
  282. {
  283.     return;
  284. }
  285. //#endif /* DISPLAY_FROM_USER_EXIT */

  286. 这个也不用管,目前我也不是特明白



  287. /*-------------------------------------------------------------------------*/
  288. /*---------------------- UIStyler Callback Functions ----------------------*/
  289. /*-------------------------------------------------------------------------*/

  290. /* -------------------------------------------------------------------------
  291. * Callback Name: DIALOG_ACCESS_apply_cb
  292. * This is a callback function associated with an action taken from a
  293. * UIStyler object.
  294. *
  295. * Input: dialog_id   -   The dialog id indicate which dialog this callback
  296. *                        is associated with.  The dialog id is a dynamic,
  297. *                        unique id and should not be stored.  It is
  298. *                        strictly for the use in the NX Open API:
  299. *                               UF_STYLER_ask_value(s)
  300. *                               UF_STYLER_set_value   
  301. *        client_data -   Client data is user defined data associated
  302. *                        with your dialog.  Client data may be bound
  303. *                        to your dialog with UF_MB_add_styler_actions
  304. *                        or UF_STYLER_create_dialog.                 
  305. *        callback_data - This structure pointer contains information
  306. *                        specific to the UIStyler Object type that  
  307. *                        invoked this callback and the callback type.
  308. * -----------------------------------------------------------------------*/
  309. int DIALOG_ACCESS_apply_cb ( int dialog_id,
  310.              void * client_data,
  311.              UF_STYLER_item_value_type_p_t callback_data)
  312. {
  313.      /* Make sure User Function is available. */  
  314.      if ( UF_initialize() != 0)
  315.           return ( UF_UI_CB_CONTINUE_DIALOG );

  316.      /* ---- Enter your callback code here ----- */

  317.      UF_terminate ();
  318. 这个函数我不知道怎么出来的,目前也不知道有啥用。
  319.     /* Callback acknowledged, do not terminate dialog                 */
  320.     /* A return value of UF_UI_CB_EXIT_DIALOG will not be accepted    */
  321.     /* for this callback type.  You must respond to your apply button.*/
  322.     return (UF_UI_CB_CONTINUE_DIALOG);

  323. }


  324. /* -------------------------------------------------------------------------
  325. * Callback Name: DIALOG_ACCESS_back_cb
  326. * This is a callback function associated with an action taken from a
  327. * UIStyler object.
  328. *
  329. * Input: dialog_id   -   The dialog id indicate which dialog this callback
  330. *                        is associated with.  The dialog id is a dynamic,
  331. *                        unique id and should not be stored.  It is
  332. *                        strictly for the use in the NX Open API:
  333. *                               UF_STYLER_ask_value(s)
  334. *                               UF_STYLER_set_value   
  335. *        client_data -   Client data is user defined data associated
  336. *                        with your dialog.  Client data may be bound
  337. *                        to your dialog with UF_MB_add_styler_actions
  338. *                        or UF_STYLER_create_dialog.                 
  339. *        callback_data - This structure pointer contains information
  340. *                        specific to the UIStyler Object type that  
  341. *                        invoked this callback and the callback type.
  342. * -----------------------------------------------------------------------*/
  343. int DIALOG_ACCESS_back_cb ( int dialog_id,
  344.              void * client_data,
  345.              UF_STYLER_item_value_type_p_t callback_data)
  346. {
  347.      /* Make sure User Function is available. */  
  348.      if ( UF_initialize() != 0)
  349.           return ( UF_UI_CB_CONTINUE_DIALOG );

  350.      /* ---- Enter your callback code here ----- */
  351.          uc1601("Hello,boy,you will exit this dialog!",1);//这句是自己添加的,当关闭对话框时,会运行这个函数
  352.      UF_terminate ();

  353.     /* Callback acknowledged, terminate dialog.            */
  354.     /* It is STRONGLY recommended that you exit your       */
  355.     /* callback with UF_UI_CB_EXIT_DIALOG in a back call   */
  356.     /* back rather than UF_UI_CB_CONTINUE_DIALOG.          */
  357.     return (UF_UI_CB_EXIT_DIALOG);


  358. }


  359. /* -------------------------------------------------------------------------
  360. * Callback Name: DIALOG_ACCESS_action_3_act_cb
  361. * This is a callback function associated with an action taken from a
  362. * UIStyler object.
  363. *按button的回调函数,会有一系列的动作。
  364. * Input: dialog_id   -   The dialog id indicate which dialog this callback
  365. *                        is associated with.  The dialog id is a dynamic,
  366. *                        unique id and should not be stored.  It is
  367. *                        strictly for the use in the NX Open API:
  368. *                               UF_STYLER_ask_value(s)
  369. *                               UF_STYLER_set_value   
  370. *        client_data -   Client data is user defined data associated
  371. *                        with your dialog.  Client data may be bound
  372. *                        to your dialog with UF_MB_add_styler_actions
  373. *                        or UF_STYLER_create_dialog.                 
  374. *        callback_data - This structure pointer contains information
  375. *                        specific to the UIStyler Object type that  
  376. *                        invoked this callback and the callback type.
  377. * -----------------------------------------------------------------------*/
  378. int DIALOG_ACCESS_action_3_act_cb ( int dialog_id,
  379.              void * client_data,
  380.              UF_STYLER_item_value_type_p_t callback_data)
  381. {
  382.      /* Make sure User Function is available. */  
  383.      if ( UF_initialize() != 0)
  384.           return ( UF_UI_CB_CONTINUE_DIALOG );

  385.      /* ---- Enter your callback code here ----- */
  386.         UF_STYLER_item_value_type_t data[3];
  387.         char info[100];
  388.         data[0].item_attr=UF_STYLER_VALUE;
  389.         data[0].item_id=DIALOG_ACCESS_INTEGER;
  390.         UF_STYLER_ask_value(dialog_id,&data[0]);

  391.         data[1].item_attr=UF_STYLER_VALUE;
  392.         data[1].item_id=DIALOG_ACCESS_REAL;
  393.         UF_STYLER_ask_value(dialog_id,&data[1]);

  394.         data[2].item_attr=UF_STYLER_VALUE;
  395.         data[2].item_id=DIALOG_ACCESS_STRING;
  396.         UF_STYLER_ask_value(dialog_id,&data[2]);
  397.         //将格式化的数据写入字符缓冲区
  398.         sprintf(info,"整数为:%d\n实数为:%f\n字符串为:%s\n",data[0].value.integer,data[1].value.real,data[2].value.string);

  399.         uc1601(info,1);
  400.      UF_terminate ();

  401.     /* Callback acknowledged, do not terminate dialog */
  402.     return (UF_UI_CB_CONTINUE_DIALOG);

  403.     /* or Callback acknowledged, terminate dialog.    */
  404.     /* return ( UF_UI_CB_EXIT_DIALOG );               */

  405. }
复制代码

最后的效果



评分

参与人数 2G币 +40 元宝 +2 收起 理由
请叫我老师头 + 10 扣除自己的20G币给你加上,支持楼主!
副总经理 + 30 + 2 不错,支持楼主!

查看全部评分

有奖推广贴子: 

回复

使用道具 举报

Administrator

德高才能望重

Rank: 16Rank: 16Rank: 16Rank: 16

2295

主题

1万

帖子

3万

积分

站长优秀版主论坛技术员论坛元老论坛贡献推广达人

推荐
发表于 2015-3-23 23:05:50 | 只看该作者
沙发我来坐,非常感谢楼主的分享学习!~
回复 支持 1 反对 0

使用道具 举报

三级士官

Rank: 3Rank: 3

11

主题

54

帖子

641

积分
板凳
 楼主| 发表于 2015-3-24 08:46:44 | 只看该作者
老叶 发表于 2015-3-23 23:05
沙发我来坐,非常感谢楼主的分享学习!~

谢谢支持,这也是对我自己学习UG二次开发的积累和激励。

评分

参与人数 1G币 +10 收起 理由
请叫我老师头 + 10 不错,支持!

查看全部评分

回复 支持 反对

使用道具 举报

三级士官

Rank: 3Rank: 3

11

主题

54

帖子

641

积分
地板
 楼主| 发表于 2015-3-24 11:59:30 | 只看该作者
接下来想学下菜单栏的二次开发,还有从菜单栏调用UIStyler,还有对话框调用对话框等几种不同的方式,后续还会继续发帖。
回复 支持 反对

使用道具 举报

二级士官

Rank: 2

3

主题

23

帖子

327

积分
5#
发表于 2015-4-18 21:08:41 | 只看该作者
奇塔车饰 发表于 2015-3-24 11:59
接下来想学下菜单栏的二次开发,还有从菜单栏调用UIStyler,还有对话框调用对话框等几种不同的方式,后续还 ...

楼主,关于NX和vs配置方面有没有遇到问题啊,我现在是不能创建项目
回复 支持 反对

使用道具 举报

三级士官

Rank: 3Rank: 3

11

主题

54

帖子

641

积分
6#
 楼主| 发表于 2015-4-21 09:11:20 | 只看该作者
zyxiu 发表于 2015-4-18 21:08
楼主,关于NX和vs配置方面有没有遇到问题啊,我现在是不能创建项目

我另外有帖子讲到,请参看
回复 支持 反对

使用道具 举报

上等兵

Rank: 1

0

主题

13

帖子

90

积分
7#
发表于 2015-12-3 16:27:19 | 只看该作者
我想问一下楼主,后面说语言选择c,怎么设置啊?我的默认是vb啊
回复 支持 反对

使用道具 举报

三级士官

Rank: 3Rank: 3

11

主题

54

帖子

641

积分
8#
 楼主| 发表于 2016-1-5 16:00:14 | 只看该作者
这个我不太清楚哈
回复 支持 反对

使用道具 举报

上等兵

Rank: 1

0

主题

19

帖子

135

积分
10#
发表于 2016-4-11 23:08:27 | 只看该作者
wx804207051 发表于 2015-12-3 16:27
我想问一下楼主,后面说语言选择c,怎么设置啊?我的默认是vb啊

就在旁边,首选项里也有
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

 
 
QQ:1359218528
工作时间:
9:00-17:00
 
微信公众号
手机APP
机械社区
微信小程序

手机版|UG爱好者论坛 ( 京ICP备10217105号-2 )    论坛管理员QQ:1359218528

本站信息均由会员发表,不代表本网站立场,如侵犯了您的权利请联系管理员,邮箱:1359218528@qq.com  

Powered by UG爱好者 X3.2  © 2001-2014 Comsenz Inc. GMT+8, 2024-5-27 00:18

返回顶部