return aValid;
}
-
void PartSet_ResultSketchPrs::Compute(const Handle(PrsMgr_PresentationManager3d)& thePresentationManager,
const Handle(Prs3d_Presentation)& thePresentation,
const Standard_Integer theMode)
return;
}
- {
- std::vector<int> aColor;
- aColor = Config_PropManager::color("Visualization", "result_body_color",
- ("200,200,230"));
- Standard_Real anAuxiliaryWidth = 3.;
- Standard_Integer anAuxiliaryLineStyle = 0;
-
- SetColor(Quantity_Color(aColor[0] / 255., aColor[1] / 255., aColor[2] / 255., Quantity_TOC_RGB));
-
- //thePresentation->Clear();
- Handle(Prs3d_Drawer) aDrawer = Attributes();
- setWidth(aDrawer, anAuxiliaryWidth);
- // set line style
- Handle(Prs3d_LineAspect) aLineAspect;
-
- Aspect_TypeOfLine aType = (Aspect_TypeOfLine)anAuxiliaryLineStyle;
- if (aDrawer->HasOwnLineAspect()) {
- aLineAspect = aDrawer->LineAspect();
- }
- if (aDrawer->HasOwnWireAspect()) {
- aLineAspect = aDrawer->WireAspect();
- }
- Quantity_Color aCurrentColor;
- Aspect_TypeOfLine aPrevLineType;
- Standard_Real aCurrentWidth;
- aLineAspect->Aspect()->Values(aCurrentColor, aPrevLineType, aCurrentWidth);
- bool isChangedLineType = aType != aPrevLineType;
- if (isChangedLineType) {
- aLineAspect->SetTypeOfLine(aType);
- }
- // end of set line style
- }
+ setAuxiliaryPresentationStyle(false);
myFacesList.clear();
ResultConstructionPtr aConstruction =
myFacesList.push_back(aConstruction->face(aFaceIndex));
}
}
-
myOriginalShape = aShapePtr->impl<TopoDS_Shape>();
if (!myOriginalShape.IsNull()) {
Set(myOriginalShape);
else
Events_Error::throwException("An empty AIS presentation: PartSet_ResultSketchPrs");
-
- // create auxiliary shapes
+ // visualize auxiliary shapes and sketch construction elements(point, center of a circle)
FeaturePtr aResultFeature = ModelAPI_Feature::feature(myResult);
CompositeFeaturePtr aSketchFeature = std::dynamic_pointer_cast<ModelAPI_CompositeFeature>
(aResultFeature);
std::list<ResultPtr> anAuxiliaryResults;
+ /// append auxiliary shapes
for (int i = 0; i < aSketchFeature->numberOfSubs(); i++) {
FeaturePtr aFeature = aSketchFeature->subFeature(i);
if (PartSet_Tools::isAuxiliarySketchEntity(aFeature)) {
anAuxiliaryResults.push_back(aResult);
}
}
+ else {
+ /// append not-edges shapes, e.g. center of a circle, an arc, a point feature
+ const std::list<std::shared_ptr<ModelAPI_Result> >& aRes = aFeature->results();
+ std::list<std::shared_ptr<ModelAPI_Result> >::const_iterator aResIter = aRes.cbegin();
+ for (; aResIter != aRes.cend(); aResIter++) {
+ std::shared_ptr<ModelAPI_ResultConstruction> aConstr = std::dynamic_pointer_cast<
+ ModelAPI_ResultConstruction>(*aResIter);
+ if (aConstr) {
+ std::shared_ptr<GeomAPI_Shape> aGeomShape = aConstr->shape();
+ if (aGeomShape.get()) {
+ const TopoDS_Shape& aShape = aGeomShape->impl<TopoDS_Shape>();
+ if (aShape.ShapeType() != TopAbs_EDGE)
+ anAuxiliaryResults.push_back(aConstr);
+ }
+ }
+ }
+ }
}
- if (anAuxiliaryResults.size() > 0) {
- Quantity_Color aPrevColor;
- Color(aPrevColor);
- Standard_Real aPrevWidth = Width();
-
- std::vector<int> aColor;
- aColor = Config_PropManager::color("Visualization", "sketch_auxiliary_color",
- SKETCH_AUXILIARY_COLOR);
- Standard_Real anAuxiliaryWidth = 1.;
- Standard_Integer anAuxiliaryLineStyle = 3;
-
- SetColor(Quantity_Color(aColor[0] / 255., aColor[1] / 255., aColor[2] / 255., Quantity_TOC_RGB));
-
- //thePresentation->Clear();
- Handle(Prs3d_Drawer) aDrawer = Attributes();
- setWidth(aDrawer, anAuxiliaryWidth);
- // set line style
- Handle(Prs3d_LineAspect) aLineAspect;
- Aspect_TypeOfLine aType = (Aspect_TypeOfLine)anAuxiliaryLineStyle;
- if (aDrawer->HasOwnLineAspect()) {
- aLineAspect = aDrawer->LineAspect();
- }
- if (aDrawer->HasOwnWireAspect()) {
- aLineAspect = aDrawer->WireAspect();
- }
- Quantity_Color aCurrentColor;
- Aspect_TypeOfLine aPrevLineType;
- Standard_Real aCurrentWidth;
- aLineAspect->Aspect()->Values(aCurrentColor, aPrevLineType, aCurrentWidth);
- bool isChangedLineType = aType != aPrevLineType;
- if (isChangedLineType) {
- aLineAspect->SetTypeOfLine(aType);
- }
- // end of set line style
+ if (anAuxiliaryResults.size() > 0) {
+ setAuxiliaryPresentationStyle(true);
BRep_Builder aBuilder;
TopoDS_Compound aComp;
aBuilder.MakeCompound(aComp);
-
std::list<ResultPtr>::const_iterator anIt = anAuxiliaryResults.begin(),
aLast = anAuxiliaryResults.end();
for (; anIt != aLast; anIt++) {
}
}
myAuxiliaryCompound = aComp;
+ Handle(Prs3d_Drawer) aDrawer = Attributes();
StdPrs_WFDeflectionShape::Add(thePresentation, aComp, aDrawer);
-
- // restore presentation properties
- //SetColor(aPrevColor);
- //setWidth(aDrawer, aPrevWidth);
- //if (isChangedLineType) {
- // aLineAspect->SetTypeOfLine(aPrevLineType);
- //}
}
}
} catch ( Standard_Failure ) {
}
}
+
+void PartSet_ResultSketchPrs::setAuxiliaryPresentationStyle(const bool isAuxiliary)
+{
+ std::vector<int> aColor;
+ Standard_Real aWidth;
+ Standard_Integer aLineStyle;
+
+ if (!isAuxiliary) {
+ aColor = Config_PropManager::color("Visualization", "result_construction_color",
+ ModelAPI_ResultConstruction::DEFAULT_COLOR());
+ aWidth = PartSet_Tools::getAISDefaultWidth();// default width value
+ aLineStyle = SketchPlugin_SketchEntity::SKETCH_LINE_STYLE();
+ }
+ else {
+ aColor = Config_PropManager::color("Visualization", "sketch_auxiliary_color",
+ SKETCH_AUXILIARY_COLOR);
+ aWidth = SketchPlugin_SketchEntity::SKETCH_LINE_WIDTH_AUXILIARY();
+ aLineStyle = SketchPlugin_SketchEntity::SKETCH_LINE_STYLE_AUXILIARY();
+ }
+
+ Handle(Prs3d_Drawer) aDrawer = Attributes();
+ setColor(aDrawer, Quantity_Color(aColor[0] / 255., aColor[1] / 255., aColor[2] / 255.,
+ Quantity_TOC_RGB));
+
+ setWidth(aDrawer, aWidth);
+ // set line style
+ Handle(Prs3d_LineAspect) aLineAspect;
+
+ Aspect_TypeOfLine aType = (Aspect_TypeOfLine)aLineStyle;
+ if (aDrawer->HasOwnLineAspect()) {
+ aLineAspect = aDrawer->LineAspect();
+ }
+ if (aDrawer->HasOwnWireAspect()) {
+ aLineAspect = aDrawer->WireAspect();
+ }
+ Quantity_Color aCurrentColor;
+ Aspect_TypeOfLine aPrevLineType;
+ Standard_Real aCurrentWidth;
+ aLineAspect->Aspect()->Values(aCurrentColor, aPrevLineType, aCurrentWidth);
+ bool isChangedLineType = aType != aPrevLineType;
+ if (isChangedLineType) {
+ aLineAspect->SetTypeOfLine(aType);
+ }
+}