[NXOpen C++] UG二次开发,通过SelectTaggedObject,选择一个UG对象并输出tag标签

说明:通过SelectTaggedObject,选择一个UG对象并输出tag标签

测试代码:

//通过SelectTaggedObject选择对象并输出tag标签
#if ! defined ( __hp9000s800 ) && ! defined ( __sgi ) && ! defined ( __sun )
#   include 
#   include 
    using std::ostrstream;
    using std::endl;    
    using std::ends;
    using std::cerr;
#else
#   include 
#   include 
#endif
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace NXOpen;
using namespace std;

#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);

        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);
}

extern DllExport void ufsta( char *param, int *returnCode, int rlen )
{
    /* Initialize the API environment */
    if( UF_CALL(UF_initialize()) ) 
    {
        return;
    }
    
    /* TODO: Add your application code here */
	Session *theSession = Session::GetSession(); 
	Part *workPart(theSession->Parts()->Work());
	UI *theUI = UI::GetUI();
	TaggedObject *object;
	Point3d cursor;
	//提示 标题 选择范围 是否包含特征 是否保持高亮 被选择的对象  光标位置坐标
	Selection::Response res;
	res=theUI->SelectionManager()->SelectTaggedObject("提示","这里是标题",Selection::SelectionScopeWorkPart,true,false,&object,&cursor);
	//SelectionScopeUseDefault   整个装配 在工作部件和组件内 仅在工作部件内
	//SelectionScopeWorkPart    仅在工作部件内
	//SelectionScopeWorkPartAndOccurrence   在工作部件和组件内
	if (res == Selection::ResponseObjectSelected)//如果选中了 = 5
	{
		uc1601("选择了对象",1);
		theSession->ListingWindow()->Open();  //打开信息窗
		char tag[256]="";
		sprintf(tag,"%d",object->GetTag());  //获取tag标签 tag_t类型转换为char型
		theSession->ListingWindow()->WriteLine(tag);  //输出对象标签
	}
	if (res == Selection::ResponseObjectSelectedByName)//如果通过名称选中了  这种选择方式我没去研究,大家有兴趣可以自己看一下
	{
		uc1601("ObjectSelectedByName",1);
	}
	else if (res == Selection::ResponseCancel)//2
	{
		uc1601("点了取消",1);
	}
	else if(res == Selection::ResponseBack)//1
	{
		uc1601("点了返回",1);
	}
	else if(res == 3) //Selection::DialogResponseOk=2
	{
		uc1601("点了确定",1); 
	}

    /* Terminate the API environment */
    UF_CALL(UF_terminate());
}
extern int ufusr_ask_unload( void )
{
	return (UF_UNLOAD_IMMEDIATELY); 
}

效果演示:

你可能感兴趣的:(UG二次开发,UG,UG,UI,UG二次开发,二次开发,模具设计)