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;
}