zoukankan      html  css  js  c++  java
  • NXOpen布尔加、布尔减、布尔交代码

    C++

    //用户头文件
    #include <uf_ui.h>
    #include <NXOpen/Body.hxx>
    #include <NXOpen/BodyCollection.hxx>
    #include <NXOpen/BodyDumbRule.hxx>
    #include <NXOpen/Builder.hxx>
    #include <NXOpen/DisplayableObject.hxx>
    #include <NXOpen/Features_BooleanBuilder.hxx>
    #include <NXOpen/Features_FeatureCollection.hxx>
    #include <NXOpen/GeometricUtilities_BooleanRegionSelect.hxx>
    #include <NXOpen/Part.hxx>
    #include <NXOpen/PartCollection.hxx>
    #include <NXOpen/DisplayableObject.hxx>
    #include <NXOpen/GeometricUtilities_BooleanRegionSelect.hxx>
    #include <NXOpen/ScCollectorCollection.hxx>
    #include <NXOpen/SelectBodyList.hxx>
    #include <NXOpen/ScRuleFactory.hxx>
    #include <NXOpen/NXObject.hxx>
    #include <NXOpen/NXObjectManager.hxx>


    //设置过虑(注释处改动即可使用)
    Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;
    std::vector<Selection::MaskTriple> maskArray(1);
    maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_solid_body_subtype/*此处控制选择的类型,右键点转到
    定义查开类型*/, UF_UI_SEL_FEATURE_SOLID_BODY /*此处控制选择的类型,在头文件uf_ui_types.可以查到*/ ); // Bodies
    selection01/*此处blockID需按实际改*/->GetProperties()->SetSelectionFilter
    ("SelectionFilter",action,maskArray);
    selection02/*此处blockID需按实际改*/->GetProperties()->SetSelectionFilter
    ("SelectionFilter",action,maskArray);

    //用户代码
    //获取枚举UI界面值
    PropertyList *enum0Props = enum0->GetProperties();
    int EnumValue = enum0Props->GetEnum("Value");
    delete enum0Props;
    enum0Props = NULL;

    Session *theSession = Session::GetSession(); //获取绘画客口
    Part *workPart = theSession->Parts()->Work(); //获取工作部件
    Part *displayPart = theSession->Parts()->Display(); //获取显示部件

    //布尔
    Features::BooleanFeature *nullFeatures_BooleanFeature(NULL);

    Features::BooleanBuilder *booleanBuilder1;
    booleanBuilder1 = workPart->Features()->CreateBooleanBuilderUsingCollector(nullFeatures_BooleanFeature);

    ScCollector *scCollector1;
    scCollector1 = booleanBuilder1->ToolBodyCollector();

    GeometricUtilities::BooleanRegionSelect *booleanRegionSelect1;
    booleanRegionSelect1 = booleanBuilder1->BooleanRegionSelect();

    booleanBuilder1->SetTolerance(0.001);

    //判断
    if ( EnumValue == 0 )
    {
    booleanBuilder1->SetOperation(Features::Feature::BooleanTypeUnite);//设置布尔加

    }
    else if ( EnumValue == 1 )
    {

    booleanBuilder1->SetOperation(Features::Feature::BooleanTypeSubtract);//设置布尔减
    }

    else if ( EnumValue == 2 )
    {

    booleanBuilder1->SetOperation(Features::Feature::BooleanTypeIntersect);//设置布尔交

    }

    //获取UI选择的第一个体
    PropertyList* selection01Props = selection01->GetProperties();
    std::vector<NXOpen::TaggedObject *> firstBody = selection01Props->GetTaggedObjectVector
    ("SelectedObjects");
    delete selection01Props;
    selection01Props = NULL;

    Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(firstBody[0]->Tag())));
    bool added1;
    added1 = booleanBuilder1->Targets()->Add(body1);

    std::vector<TaggedObject *> targets1(1);
    targets1[0] = body1;
    booleanRegionSelect1->AssignTargets(targets1);

    ScCollector *scCollector2;
    scCollector2 = workPart->ScCollectors()->CreateCollector();

    //获取UI选择的第二个体
    PropertyList* selection02Props = selection02->GetProperties();
    std::vector<NXOpen::TaggedObject *> secondBody = selection02Props->GetTaggedObjectVector
    ("SelectedObjects");
    delete selection02Props;
    selection02Props = NULL;

    std::vector<Body *> bodies2(1);
    Body *body2(dynamic_cast<Body *>(NXObjectManager::Get(secondBody[0]->Tag())));

    bodies2[0] = body2;
    BodyDumbRule *bodyDumbRule1;
    bodyDumbRule1 = workPart->ScRuleFactory()->CreateRuleBodyDumb(bodies2);

    std::vector<SelectionIntentRule *> rules1(1);
    rules1[0] = bodyDumbRule1;
    scCollector2->ReplaceRules(rules1, false);

    booleanBuilder1->SetToolBodyCollector(scCollector2);

    std::vector<TaggedObject *> targets2(1);
    targets2[0] = body1;
    booleanRegionSelect1->AssignTargets(targets2);

    NXObject *nXObject1;
    nXObject1 = booleanBuilder1->Commit();

    booleanBuilder1->Destroy();  //释放

    怡宁塑胶模具设计
  • 相关阅读:
    relative 和 absolute 定位关系
    基于Linux的Samba开源共享解决方案测试(四)
    基于Linux的Samba开源共享解决方案测试(三)
    基于Linux的Samba开源共享解决方案测试(二)
    基于Linux的Samba开源共享解决方案测试(一)
    创建文件测试
    RHEL6.x查看网卡槽位对应设备文件及路径
    linux I/O优化 磁盘读写参数设置
    20个Linux服务器性能调优技巧
    Linux文件读写机制及优化方式
  • 原文地址:https://www.cnblogs.com/hqsalanhuang/p/14218155.html
Copyright © 2011-2022 走看看