{
const TopoDS_Shape& aShapeKey = aMapIter.Key(); // key shape with detailed color or a base shape
const TopoDS_Compound& aShapeDraw = aMapIter.Value(); // compound of subshapes with <aShType> type
- Handle(AIS_Drawer) aDrawer = !myShapeColors.Find (aShapeKey, aCustomDrawer) ? myDrawer : aCustomDrawer;
+ Handle(AIS_Drawer) aDrawer;
+ if (myShapeColors.Find (aShapeKey, aCustomDrawer))
+ {
+ aDrawer = aCustomDrawer;
+ if (aCustomDrawer->IsHidden())
+ {
+ continue;
+ }
+ }
+ else
+ {
+ aDrawer = myDrawer;
+ }
// Draw each kind of subshapes and personal-colored shapes in a separate group
// since it's necessary to set transparency/material for all subshapes
public:
AIS_ColoredDrawer (const Handle(AIS_Drawer)& theLink)
- : myHasOwnColor (Standard_False),
+ : myIsHidden (Standard_False),
+ myHasOwnColor (Standard_False),
myHasOwnWidth (Standard_False)
{
Link (theLink);
}
+ Standard_Boolean IsHidden() const { return myIsHidden; }
+ void SetHidden (const Standard_Boolean theToHide) { myIsHidden = theToHide; }
Standard_Boolean HasOwnColor() const { return myHasOwnColor; }
void UnsetOwnColor() { myHasOwnColor = Standard_False; }
void SetOwnColor (const Quantity_Color& /*theColor*/) { myHasOwnColor = Standard_True; }
public: //! @name list of overridden properties
+ Standard_Boolean myIsHidden;
Standard_Boolean myHasOwnColor;
Standard_Boolean myHasOwnWidth;
{
Handle(AIS_ColoredDrawer) aDrawer = CustomAspects (anIter.Key());
const XCAFPrs_Style& aStyle = anIter.Value();
+ aDrawer->SetHidden (!aStyle.IsVisible());
aColorCurv = aStyle.IsSetColorCurv() ? aStyle.GetColorCurv() : aDefStyle.GetColorCurv();
aColorSurf = aStyle.IsSetColorSurf() ? aStyle.GetColorSurf() : aDefStyle.GetColorSurf();
--- /dev/null
+puts "============"
+puts "CR25381"
+puts "============"
+puts ""
+######################################################
+# Visualization - XCAFPrs_AISObject ignores visibility flag for sub-shapes
+######################################################
+
+pload QAcommands
+
+ReadStep D [locate_data_file bug25381_test_assembly_invisible.step]
+XShow D
+vfit
+
+decho off
+if { [catch { QAGetPixelColor 198 172 1 1 1 }] != 0 } {
+ decho on
+ puts "OK : XCAFPrs_AISObject get visibility flag for sub-shapes"
+} else {
+ puts "Error : XCAFPrs_AISObject ignores visibility flag for sub-shapes"
+}
+
+set only_screen 1