NX2512二次开发一键透明小工具的代码编写-2
NX2512二次开发一键透明小工具的对话框制作流程-1https://www.ugsnx.com/forum.php? ... 816&fromuid=2527201
(出处: UG爱好者)
接着上文写吧。
这边先稍微改动下对话框,NX软件里直接打开原来的dlx文件进行编辑就可以了。
把两个选择改成非必选的,就是可以不选为空的。
然后保存覆盖原来的文件即可
接下来开始写逻辑代码
上面对话框里组件的对象在我们生成c++代码的时候都已经写好了,在下图的位置。
integer0是透明度
face_select0是选择面
bodySelect0是选择体
button0是全部取消透明按钮
我们只需要在下面这个位置写逻辑,这里是在点击对话框的应用的时候执行的逻辑,点击确认的时候会自动调这个应用函数的,所以我们只需要写应用逻辑。
代码如下,我把注释都写上了,你们也可以复制给AI让AI解释的。
//获取透明度数值输入框属性
PropertyList* integerProps = integer0->GetProperties();
//获取透明度的值
int integer = integerProps->GetInteger("Value");
//清理内存堆区数据,C/C++堆区数据要自己管理
delete integerProps;
//指针置空
integerProps = NULL;
//拿到选择面按钮的资产
PropertyList* faceSelectProps = face_select0->GetProperties();
//获取选择的面的集合
std::vector<NXOpen::TaggedObject*> faces = faceSelectProps->GetTaggedObjectVector("SelectedObjects");
//清理内存堆区数据
delete faceSelectProps;
//指针置空
faceSelectProps = NULL;
//拿到选择体按钮的资产
PropertyList* bodySelectProps = bodySelect0->GetProperties();
//获取选择的体的集合
std::vector<NXOpen::TaggedObject*> bodys = bodySelectProps->GetTaggedObjectVector("SelectedObjects");
//清理内存堆区数据
delete bodySelectProps;
//指针置空
bodySelectProps = NULL;
//遍历面集合,对每个面进行操作
for (TaggedObject* face : faces)
{
//拿到每个面的ID
tag_t tagid = face->Tag();
//将上面获取到的透明度数值设置给这个面对象
UF_OBJ_set_translucency(tagid, integer);
}
//遍历体集合,对每个体进行操作
for (TaggedObject* body : bodys)
{
//拿到每个体的ID
tag_t tagid = body->Tag();
//将上面获取到的透明度数值设置给这个体对象
UF_OBJ_set_translucency(tagid, integer);
}这边的UF_OBJ_set_translucency还是需要引入<uf_obj.h>头文件,所以我们#include <uf_obj.h>引入下
接着是点击全部取消透明按钮时执行的逻辑,他是在int tran::update_cb(NXOpen::BlockStyler::UIBlock* block)函数里的下面这个else if(block == button0)位置
代码如下
//拿到当前工作部件
Part* workPart = theSession->Parts()->Work();
//拿到当前工作部件的所有体的集合
BodyCollection* bodies = workPart->Bodies();
//遍历体集合
for (Body* body : *bodies)
{
//拿到每个体ID
tag_t tagid = body->Tag();
//将体的透明度设置为0
UF_OBJ_set_translucency(tagid, 0);
}
这边要再加入3个头文件
#include <NXOpen/PartCollection.hxx>
#include <NXOpen/BodyCollection.hxx>
#include <NXOpen/Body.hxx>
然后就能直接生成dll文件了。
把dll重命名替换到application目录下执行测试即可
牛B厉害了我的哥
分享多一些 谢谢分享
页:
[1]