private bool CheckAndApplyPointMiddleOfLine(PointHinterShape pointShape, LineHinterShape line, Point3D sourcePoint) { var linePoint1 = line.Point1; var linePoint2 = line.Point2; var builder = new NodeBuilder(line.Builder.Node); var midPoint = DimensionUtils.ComputeMiddlePoint(linePoint1, linePoint2); if (midPoint.Distance(sourcePoint) >= Options.PointRange) { var edges = GeomUtils.ExtractEdges(line.Builder.Shape); if (edges.Count != 1) { return(false); } if (GeomUtils.PointIsOnEdge(edges[0], sourcePoint)) { AddConstraint(line.Builder.Node, pointShape.Builder.Node, Constraint2DNames.PointOnLineFunction); builder.Color = Color.Tomato; builder.ExecuteFunction(); return(true); } return(false); } AddConstraint(line.Builder.Node, pointShape.Builder.Node, Constraint2DNames.PointOnLineMidpointFunction); builder.Color = Color.Violet; builder.ExecuteFunction(); return(true); }
private bool DrawConstraint(Node circleNode, NodeBuilder circleBuilder) { var textLocation = circleBuilder[0].Axis3D.GpAxis.Location.Transformed(circleBuilder.Transformation); const int translate = 10; textLocation.X = (textLocation.X + circleBuilder[1].Real + translate); textLocation.Y = (textLocation.Y + circleBuilder[1].Real + translate); var shape = ShapeUtils.ExtractSubShape(circleNode, 1, TopAbsShapeEnum.TopAbs_EDGE); var interactive = DimensionUtils.CreateDependency(shape, textLocation, DsgPrsArrowSide.DsgPrs_AS_BOTHAR); if (interactive == null) { return(false); } Parent.Set <TreeViewVisibilityInterpreter>(); Interactive = interactive; return(true); }
private bool BuildDimensionInteractive(Node rectangleNode) { var textLocation = DimensionUtils.ComputeMiddlePointPosition(rectangleNode, 2).GpPnt; const int translate = 10; textLocation.X = (textLocation.X + translate); textLocation.Y = (textLocation.Y + translate); textLocation.Z = (textLocation.Z + translate); var shape = ShapeUtils.ExtractSubShape(rectangleNode, 2, TopAbsShapeEnum.TopAbs_EDGE); var interactive = DimensionUtils.CreateDependency(shape, textLocation, DsgPrsArrowSide.DsgPrs_AS_BOTHAR); if (interactive == null) { return(false); } Parent.Set <TreeViewVisibilityInterpreter>(); Interactive = interactive; return(true); }
private AISInteractiveObject UpdateInteractive(Point3D sourcePoint) { var builder = Builder; var destinationPoint = NodeUtils.GetReferencePoint(builder, 1); var midPoint = DimensionUtils.ComputeMiddlePoint(sourcePoint, destinationPoint); var textPoint = midPoint; midPoint.X += 1; midPoint.Y += 2; midPoint.Z += 3; var mkPlane = new GCMakePlane(sourcePoint.GpPnt, destinationPoint.GpPnt, midPoint.GpPnt); var plane = mkPlane.Value; var ocaisLengthDimension = GeomUtils.BuildLengthDimension(sourcePoint.GpPnt, destinationPoint.GpPnt, plane, textPoint.GpPnt, DsgPrsArrowSide.DsgPrs_AS_BOTHAR, 2, 0.2, false, null); return(ocaisLengthDimension); }
public override bool Execute() { var referenceShape = ShapeUtils.ExtractSubShape(Dependency[0].ReferenceData); var refBuilder = new NodeBuilder(Dependency[0].Reference); var builder = Builder; builder.Visibility = refBuilder.Visibility; var textLocation = Dependency[1].TransformedPoint3D.GpPnt; var arrowType = Dependency[2].Integer == 1 ? DsgPrsArrowSide.DsgPrs_AS_NONE : DsgPrsArrowSide.DsgPrs_AS_BOTHAR; Point3D offset = new Point3D(textLocation); bool isOffset = false; if (Dependency[3].Integer == 1) { isOffset = true; Dependency[3].Integer = 0; var edge = TopoDS.Edge(referenceShape); var calculatedMidpoint = GeomUtils.CalculateEdgeMidPoint(edge); if (calculatedMidpoint != null) { offset = new Point3D(textLocation.X - calculatedMidpoint.Value.X, textLocation.Y - calculatedMidpoint.Value.Y, textLocation.Z - calculatedMidpoint.Value.Z); Dependency[4].Node.Set <Point3DInterpreter>().Value = offset; } } var interactive = DimensionUtils.CreateDependency(referenceShape, offset.GpPnt, arrowType, isOffset, Dependency[4].TransformedPoint3D.GpPnt); if (interactive == null) { return(false); } Interactive = interactive; return(true); }
private void Execute() { var midPoint = DimensionUtils.ComputeMiddlePointPosition(Node, Data.ShapeCount); SetupPointCoordinate(midPoint); }