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);
        }
Example #2
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        private void Execute()
        {
            var midPoint = DimensionUtils.ComputeMiddlePointPosition(Node, Data.ShapeCount);

            SetupPointCoordinate(midPoint);
        }