新闻动态

行业新闻企业新闻雷火电竞

UG NX二次开发(C++)-建模-根据UFun创建的Tag_t转换为Body

雷火电竞

文章目录


1 、根据前言

经常采用UG NX二次开发(NXOpen C#)(UG NX二次开发(C#)专栏),在用UFun创建一个实体时,采用强制转换,能将tag对象转换为body对象,但是次开创建在C++时却不能直接强制转换,经过多次测试,我找到一种方法,现在分享给大家,如果有其他更好的方法,请留言指正。


2、建模用UF_MODL_create_block1创建一个块

在UFun函数中,创建一个长方体,如果没有布尔操作,用UF_MODL_create_block1,其帮助说明如下: chatgpt,根据<strong></strong>AI,人工智能,聊天机器人,女友聊天机器人,在线ai对话,二次元聊天其输入参数有三个:

  • 操作类型
  • 长方体角点
  • 三个边长 其输出参数有一个:
  • 生成的长方体Tag_t
  • 我们现在改变输入参数,和输出参数,即是,输入参数有两个:

  • 长方体角点-Point3d类型
  • 三个边长-char*length[]
  • 输出为Body类型 我们仅仅是测试,所以不关心操作类型 。 所有,我们构造一个新的次开创建函数为:
  • void CreateBlock(Point3d* point3D, char*length[], Body* body)

    其完整的代码如下:

    void UFModel::CreateBlock(Point3d* point3D, char*length[], Body* body){double origionPnt[3] = {point3D->X,point3D->Y,point3D->Z};tag_t bodyTag;UF_MODL_create_block1(UF_FEATURE_SIGN::UF_NULLSIGN,origionPnt,length,&bodyTag);body = dynamic_cast(NXObjectManager::Get(bodyTag));}

    然后,编译链接完成生成dll,在UG NX中测试,确实生成了一个长方体,这是对的。 chatgpt,建模AI,人工智能,聊天机器人,女友聊天机器人,在线ai对话,二次元聊天

    3、将Tag_t转换为Body出现错误

    但是根据,代码中添加了一行,即获取实体的面,代码如下:

    void UFModel::CreateBlock(Point3d* point3D, char*length[], Body* body){double origionPnt[3] = {point3D->X,point3D->Y,point3D->Z};tag_t bodyTag;UF_MODL_create_block1(UF_FEATURE_SIGN::UF_NULLSIGN,origionPnt,length,&bodyTag);body = dynamic_cast(NXObjectManager::Get(bodyTag));std::vectorfaces = body->GetFaces();}

    其就爆出空指针的错误: chatgpt,AI,人工智能,聊天机器人,女友聊天机器人,在线ai对话,二次元聊天其就是强制转换不成功。

    3 、次开创建解决方法

    其中一种有效的建模解决方法是通过以下代码实现:

    void UFModel::CreateBlock(Point3d* point3D, char*length[], Body* body){double origionPnt[3] = {point3D->X,point3D->Y,point3D->Z};tag_t bodyTag;UF_MODL_create_block1(UF_FEATURE_SIGN::UF_NULLSIGN,origionPnt,length,&bodyTag);TaggedObject *taggedObject = NXObjectManager::Get(bodyTag);NXObject *nXObject = dynamic_cast(taggedObject);NXString JI = nXObject->JournalIdentifier();Body* body1(dynamic_cast(workPart->Bodies()->FindObject(JI)));tag_t tag0 = body1->Tag();std::vectorfaces = body1->GetFaces();}

    通过JournalIdentifier来做一个中转,这个经过测试是可以的。

    4 、根据结论

    在NXOpen二次开发(C#)中,我不太关心JournalIdentifier,因为强制转换一般都没有问题,但是在C++中可能就不同了,还是需要JournalIdentifier的,以后多学习多注意