//-------------------------------------------------------------------------------------------------- public override void OnPointsChanged(Dictionary <int, Pnt2d> points, Dictionary <int, SketchSegment> segments, Dictionary <int, int> markerCounts = default) { var ctx = SketchEditorTool.WorkspaceController.Workspace.AisContext; var edge = Segment.MakeEdge(points); if (edge == null) { Remove(); return; } if (AisObject != null) { var aisShape = AisObject as AIS_Shape; aisShape.Set(edge.Located(new TopLoc_Location(Transform))); if (_IsActive) { ctx.Redisplay(aisShape, false); } else { ctx.RecomputePrsOnly(aisShape, false); } } else { var aisShape = new AIS_Shape(edge.Located(new TopLoc_Location(Transform))); aisShape.SetZLayer(-3); // TOP aisShape.SetWidth(2.0); if (_HighlightDrawer == null) { _HighlightDrawer = new Prs3d_Drawer(); _HighlightDrawer.SetColor(Colors.Highlight); _HighlightDrawer.SetDisplayMode(0); _HighlightDrawer.SetZLayer(-3); // TOP } aisShape.SetDynamicHilightAttributes(_HighlightDrawer); var paramSet = InteractiveContext.Current.Parameters.Get <SketchEditorParameterSet>(); aisShape.SetAngleAndDeviation(paramSet.DeviationAngle.ToRad()); aisShape.SetColor(Colors.SketchEditorSegments); ctx.Display(aisShape, false); ctx.SetSelectionSensitivity(aisShape, 0, (int)(paramSet.SegmentSelectionSensitivity * 1.0)); if (_IsActive) { ctx.Activate(aisShape, 0, false); } else { ctx.Deactivate(aisShape); } AisObject = aisShape; UpdateVisual(); } UpdateHints(points); }
//-------------------------------------------------------------------------------------------------- void _InitVisualSettings() { var aisContext = Workspace.AisContext; _UpdateParameter(); // Higlight Selected var selectionDrawer = new Prs3d_Drawer(); selectionDrawer.SetColor(Colors.Selection); selectionDrawer.SetDisplayMode(0); selectionDrawer.SetZLayer(0); // Graphic3d_ZLayerId_Default selectionDrawer.SetTypeOfDeflection(Aspect_TypeOfDeflection.Aspect_TOD_RELATIVE); selectionDrawer.SetDeviationAngle(aisContext.DeviationAngle()); selectionDrawer.SetDeviationCoefficient(aisContext.DeviationCoefficient()); aisContext.SetSelectionStyle(selectionDrawer); aisContext.SetHighlightStyle(Prs3d_TypeOfHighlight.Prs3d_TypeOfHighlight_Selected, selectionDrawer); aisContext.SetHighlightStyle(Prs3d_TypeOfHighlight.Prs3d_TypeOfHighlight_LocalSelected, selectionDrawer); aisContext.SetHighlightStyle(Prs3d_TypeOfHighlight.Prs3d_TypeOfHighlight_SubIntensity, selectionDrawer); // Higlight Dynamic var hilightDrawer = new Prs3d_Drawer(); hilightDrawer.SetColor(Colors.Highlight); hilightDrawer.SetDisplayMode(0); hilightDrawer.SetZLayer(-2); // Graphic3d_ZLayerId_Top hilightDrawer.SetTypeOfDeflection(Aspect_TypeOfDeflection.Aspect_TOD_RELATIVE); hilightDrawer.SetDeviationAngle(aisContext.DeviationAngle()); hilightDrawer.SetDeviationCoefficient(aisContext.DeviationCoefficient()); aisContext.SetHighlightStyle(Prs3d_TypeOfHighlight.Prs3d_TypeOfHighlight_Dynamic, hilightDrawer); // Higlight Local var hilightLocalDrawer = new Prs3d_Drawer(); hilightLocalDrawer.SetColor(Colors.Highlight); hilightLocalDrawer.SetDisplayMode(1); hilightLocalDrawer.SetZLayer(-2); // Graphic3d_ZLayerId_Top hilightLocalDrawer.SetTypeOfDeflection(Aspect_TypeOfDeflection.Aspect_TOD_RELATIVE); hilightLocalDrawer.SetDeviationAngle(aisContext.DeviationAngle()); hilightLocalDrawer.SetDeviationCoefficient(aisContext.DeviationCoefficient()); var shadingAspect = new Prs3d_ShadingAspect(); shadingAspect.SetColor(Colors.Highlight); shadingAspect.SetTransparency(0); var aspectFill = new Graphic3d_AspectFillArea3d(shadingAspect.Aspect()); aspectFill.SetPolygonOffsets((int)Aspect_PolygonOffsetMode.Aspect_POM_Fill, 0.99f, 0.0f); shadingAspect.SetAspect(aspectFill); hilightLocalDrawer.SetShadingAspect(shadingAspect); var lineAspect = new Prs3d_LineAspect(Colors.Highlight, Aspect_TypeOfLine.Aspect_TOL_SOLID, 3.0); hilightLocalDrawer.SetLineAspect(lineAspect); hilightLocalDrawer.SetSeenLineAspect(lineAspect); hilightLocalDrawer.SetWireAspect(lineAspect); hilightLocalDrawer.SetFaceBoundaryAspect(lineAspect); hilightLocalDrawer.SetFreeBoundaryAspect(lineAspect); hilightLocalDrawer.SetUnFreeBoundaryAspect(lineAspect); hilightLocalDrawer.SetPointAspect(Marker.CreateBitmapPointAspect(Marker.BallImage, Colors.Highlight)); aisContext.SetHighlightStyle(Prs3d_TypeOfHighlight.Prs3d_TypeOfHighlight_LocalDynamic, hilightLocalDrawer); }