EdgeTangent-FaceTangent

vector<tag_t> askTangentCurve(tag_t curveTag);                                     // 相切曲线

vector<tag_t> Open::askTangentCurve(tag_t curveTag) {
    Session* theSession = Session::GetSession();
    Part* workPart(theSession->Parts()->Work());
    Part* displayPart(theSession->Parts()->Display());
    Edge* edges = dynamic_cast<Edge*>(NXObjectManager::Get(curveTag));

    EdgeTangentRule* ruleEdgeTangent = workPart->ScRuleFactory()->CreateRuleEdgeTangent(edges, nullptr, true, 0.05, false, false);
    ScCollector* collector = workPart->ScCollectors()->CreateCollector();
    vector<SelectionIntentRule*> rules(1);
    rules[0] = ruleEdgeTangent;
    collector->ReplaceRules(rules, false);
    vector<tag_t> result;
    vector<TaggedObject*>  edgeTangentObjects = collector->GetObjects();
    for (vector<TaggedObject*>::iterator it = edgeTangentObjects.begin(); it != edgeTangentObjects.end(); it++)
    {
        TaggedObject* item = *it;
        result.push_back(item->Tag());
    }
    return result;
}

vector<tag_t> createFaceTangent(tag_t faceTAG);                                     //相切面

vector<tag_t> Open::createFaceTangent(tag_t faceTAG){

        Face* face = dynamic_cast<Face*>(NXObjectManager::Get(faceTAG));

        Session* theSession = Session::GetSession();
        Part* workPart(theSession->Parts()->Work());
        Part* displayPart(theSession->Parts()->Display());
        //创建相切面规则
        vector<Face*> boundaryFaces(1);
        boundaryFaces[0] = face;
        FaceTangentRule* faceTangentRule = theSession->Parts()->Work()->ScRuleFactory()->CreateRuleFaceTangent(face, boundaryFaces, 0.050000000000000003);

        //创建选择收集器
        ScCollector* scCollector = theSession->Parts()->Work()->ScCollectors()->CreateCollector();
        vector<SelectionIntentRule*> selectIntentRule(1);
        selectIntentRule[0] = faceTangentRule;

        // 给选择收集设置收集规则
        scCollector->ReplaceRules(selectIntentRule, false);

        //获取到相切面对象
        vector<TaggedObject*> tangentOjbect = scCollector->GetObjects();
        vector<tag_t> tangentFaceVector;
        for (vector<TaggedObject*>::iterator it = tangentOjbect.begin(); it != tangentOjbect.end(); it++)
        {
            Face* item = dynamic_cast<Face*>(*it);
           // UF_OBJ_set_color(item->Tag(), 216);
            tangentFaceVector.push_back(item->Tag());
        }
        return tangentFaceVector;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值