NX二次开发-Block UI各种常用控件的获取(持续补充)

在Block UI中UF_initialize();和UF_terminate();的使用

用Block UI作NX二次开发的时候,不需要在使用UFUN函数的时候加UF_initialize();和UF_terminate();。
可以直接加在CPP里这个位置:
	
extern "C" DllExport void  ufusr(char *param, int *retcod, int param_len)
{
    TwoPointCyl *theTwoPointCyl = NULL;
    try
    {
		UF_initialize();//初始化
		
        theTwoPointCyl = new TwoPointCyl();
        // The following method shows the dialog immediately
        theTwoPointCyl->Show();
	
		UF_terminate();//终止
    }
    catch(exception& ex)
    {
        //---- Enter your exception handling code here -----
        TwoPointCyl::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    }
    if(theTwoPointCyl != NULL)
    {
        delete theTwoPointCyl;
        theTwoPointCyl = NULL;
    }
}

2018年11月11日
Caesar卢尚宇  
[email protected]

Specify Point(指定点)控件的获取

//获取点XYZ坐标
PropertyList *SelectPoint1Props = point01->GetProperties();
Point3d SelectPoint1 = SelectPoint1Props->GetPoint("Point");
delete SelectPoint1Props;
SelectPoint1Props = NULL;

//得到的是Point3d类型,使用时直接 .X,.Y,.Z,来获得XYZ坐标。
例子:
double pnt1[3] = {SelectPoint1.X, SelectPoint1.Y, SelectPoint1.Z};

2018年11月11日
Caesar卢尚宇
[email protected]

Object Color Picker(对象颜色拾取器)控件的获取

//获取颜色值
PropertyList *blockColorProps = colorPicker0->GetProperties();
std::vector<int> color = blockColorProps->GetIntegerVector("Value");
delete blockColorProps;
blockColorProps = NULL;

//得到的是int类型,存在vector数组里,使用时取数组里的第一个值[0]。
例子:
UF_OBJ_set_color(BodyTag, color[0]);

2018年11月11日
Caesar卢尚宇 
[email protected]

Expression(表达式)控件的获取

//获取表达式控件的值
PropertyList *ExpressionProps = expression0->GetProperties();
double ExpressionValue = ExpressionProps->GetDouble("Value");
delete ExpressionProps;
ExpressionProps = NULL;	

//得到的是double类型,使用时直接拿过来用。
//通常还会double转char去用。例如做长方体长宽高值的时候。
例子:
char len[256];
sprintf(len, "%f", ExpressionValue);
然后把char类型的len给到长宽高。

2018年11月11日
Caesar卢尚宇
[email protected]

Body Collector(体收集器)控件的获取

  //获取体收集器控件
	PropertyList*  BodySelectProps = bodySelect0->GetProperties();
	std::vector<NXOpen::TaggedObject *> Bodys = BodySelectProps->GetTaggedObjectVector("SelectedObjects");
	delete BodySelectProps;
	BodySelectProps = NULL;

	//控件为单选
	tag_t BodyTag = Bodys[0]->Tag();
	UF_OBJ_set_color(BodyTag, 1);

	//控件为多选
	for (int i = 0; i < Bodys.size(); ++i) 
	{
		tag_t BodyTag = Bodys[i]->Tag();
		UF_OBJ_set_color(BodyTag, 186);
	}
	
	2018年11月11日
	Caesar卢尚宇
	[email protected]

猜你喜欢

转载自blog.csdn.net/lu1287580078/article/details/83961633
今日推荐