NX二次開發-Block UI各種常用控制元件的獲取(持續補充)
阿新 • • 發佈:2018-11-12
在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]