找回密码
 注册
Simdroid-非首页
查看: 79|回复: 0

[二次开发] UF_PARAM_set_int_value的用法

[复制链接]
发表于 2009-6-5 17:31:47 | 显示全部楼层 |阅读模式 来自 山西太原
本帖最后由 lirui0726 于 2009-6-5 17:35 编辑

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <uf.h>
#include <uf_ui.h>
#include <uf_disp.h>
#include <uf_object_types.h>
#include <uf_obj.h>
#include <uf_modl.h>
#include <uf_curve.h>
#include <uf_assem.h>

#include <uf_ui_ont.h>
#include <uf_ui_param.h>
#include <uf_oper.h>
#include <uf_cam.h>
#include <uf_cam_errors.h>

#include <uf_param.h>
#include <uf_param_indices.h>



#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))

static int report_error( char *file, int line, char *call, int irc)
{
    if (irc)
    {
        char err[133],
             msg[133];

        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
            irc, line, file);
        UF_get_fail_message(irc, err);

    /*  NOTE:  UF_print_syslog is new in V18 */

        UF_print_syslog(msg, FALSE);
        UF_print_syslog(err, FALSE);
        UF_print_syslog("\n", FALSE);
        UF_print_syslog(call, FALSE);
        UF_print_syslog(";\n", FALSE);

        if (!UF_UI_open_listing_window())
        {
            UF_UI_write_listing_window(msg);
            UF_UI_write_listing_window(err);
            UF_UI_write_listing_window("\n");
            UF_UI_write_listing_window(call);
            UF_UI_write_listing_window(";\n");
        }
    }

    return(irc);
}



#define WRITE_S(X) (write_string_to_listing_window(X))


void write_string_to_listing_window( char *string)
{
    char
        msg[MAX_LINE_SIZE+1];

    UF_CALL(UF_UI_open_listing_window());
    sprintf(msg, "%s\n", string);
    UF_CALL(UF_UI_write_listing_window(msg));
}

static logical specify_point(char *prompt, double loc[3])
{
    int
        ia2[2] = { 0,0 },
        ip3 = 0,
        irc;

    irc = uc1616(prompt, ia2, ip3, loc);
    if (irc == 5) return TRUE;
    else return FALSE;
}


static void do_it(void)
{
   
    tag_t        *objects;
        tag_t        point;

    int       i,
              entity_count,
              object_count, err_code, type, subtype,response,
                  TRIM_POINT1_TOG_AUTOMATIC = 0,
                  TRIM_POINT1_TOG_VECTOR = 1,
                  TRIM_POINT1_TOG_ANGLE = 2,
                  togle_off = 0,
                  togle_on = 1;

        double ang_val_radians = 1.57; // 90 degress

        double pos[3];

    char        msg[MAX_LINE_SIZE+1];
        char errorstrg[133];


logical  is_initialized;
logical is_generated;


if (UF_CALL(UF_CAM_is_session_initialized(&is_initialized)) || (is_initialized == FALSE))return;   


     while (specify_point("Indicate point location", pos))
        UF_CALL(UF_CURVE_create_point(pos, &point));

        /* Get the highlighted/selected objects from Navigation Tool. */
        UF_UI_ONT_ask_selected_nodes( &object_count, &objects );

        if (object_count > 0)
        {
          UF_CALL( UF_OBJ_ask_type_and_subtype (objects[0],&type,&subtype));

          sprintf(msg,"type is %d subtype is %d",type,subtype);
          WRITE_S(msg);

          if (type == UF_machining_operation_type && subtype == UF_mach_turn_rough_subtype )
           {
                        UF_CALL(UF_PARAM_set_int_value(objects[0],UF_PARAM_TURN_TRIM_POINT1_TOG,togle_on));
                        UF_CALL(UF_PARAM_set_tag_value(objects[0],UF_PARAM_TURN_TRIM_POINT1_TAG,point));



                        UF_CALL(UF_PARAM_set_int_value(objects[0],UF_PARAM_TURN_TRIM_POINT1_ANGLE_TOG,TRIM_POINT1_TOG_ANGLE));
                        UF_CALL(UF_PARAM_set_double_value(objects[0],UF_PARAM_TURN_TRIM_POINT1_ANGLE_VAL,ang_val_radians));
                        UF_CALL(UF_PARAM_generate(objects[0],&is_generated));
       }
           else
           {
             sprintf(msg,"object type is not UF_machining_operation_type and subtype is not UF_mach_turn_rough_subtype");
                 WRITE_S(msg);
            }
           UF_free(objects);  
        }
        else
        {
                UF_CALL(UF_UI_open_listing_window( ));
                sprintf(msg,"objects selected in ONT is not equal to 1");
                UF_CALL(UF_UI_write_listing_window(msg));
        }

    return;
}

extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
{
    /* Initialize the API environment */
    if( UF_CALL(UF_initialize()) )
    {
        /* Failed to initialize */
        return;
    }
   
    do_it();

    /* Terminate the API environment */
    UF_CALL(UF_terminate());
}


extern int ufusr_ask_unload( void )
{
    return( UF_UNLOAD_IMMEDIATELY );
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-1 15:20 , Processed in 0.033093 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表