Пример #1
0
        private bool ApplyConstraint(FunctionDependency dependency, ref AISInteractiveObject interactive,
                                     Point3D destinationPoint, Point3D sourcePoint, Point3D distancePoint)
        {
            var transform           = dependency[1].Reference.Set <TransformationInterpreter>();
            var substractedDistance = destinationPoint.SubstractCoordinate(sourcePoint);

            if (dependency[0].Reference.Index != dependency[1].Reference.Index)
            {
                if (distancePoint.IsEqual(substractedDistance))
                {
                    interactive = UpdateInteractive(sourcePoint);
                    return(true);
                }

                var translateVal = new Point3D(transform.Translate);
                transform.Translate =
                    translateVal.AddCoordinate(distancePoint.SubstractCoordinate(substractedDistance)).GpPnt;
            }
            else
            {
                var origin           = new Point3D();
                var pointDistance    = distancePoint.Distance(origin);
                var expectedDistance = substractedDistance.Distance(origin);
                if (Math.Abs(pointDistance - expectedDistance) < Precision.Confusion)
                {
                    interactive = UpdateInteractive(sourcePoint);
                    return(true);
                }
                transform.Scale = transform.Scale * pointDistance / expectedDistance;
            }
            return(false);
        }
Пример #2
0
        private static void BuildPreviewRectangle(Document previewDocument, Point3D topLeftPoint, string textureName,
                                                  double rectangleSize, double transparency)
        {
            var rectangle = new NodeBuilder(previewDocument, FunctionNames.ThreePointsRectangle);

            rectangle[0].TransformedPoint3D = topLeftPoint;
            rectangle[1].TransformedPoint3D = topLeftPoint.AddCoordinate(new Point3D(rectangleSize, 0, 0));
            rectangle[2].TransformedPoint3D = topLeftPoint.AddCoordinate(new Point3D(rectangleSize, rectangleSize, 0));
            rectangle.Visibility            = ObjectVisibility.Hidden;
            rectangle.ExecuteFunction();

            var textureBuilder = new NodeBuilder(previewDocument, FunctionNames.TexturedShape);

            textureBuilder[0].Reference = rectangle.Node;
            textureBuilder[1].Text      = textureName;
            textureBuilder.Transparency = transparency;
            textureBuilder.ExecuteFunction();
        }
Пример #3
0
        private void PreviewConstraints(Document previewDocument, KeyValuePair <int, HinterShapeBase> shape,
                                        List <Node> referencesList, double rectangleSize)
        {
            var size       = shape.Value.Size;
            var count      = referencesList.Count;
            var midPoint   = new Point3D(size.MiddleX, size.MiddleY, 0);
            var startPoint = new Point3D(size.MiddleX - rectangleSize * count / 2.0, midPoint.Y - rectangleSize / 2, 0);

            startPoint = startPoint.AddCoordinate(new Point3D(0, -rectangleSize * 1.5, 0));
            var i = 0;

            foreach (var node in referencesList)
            {
                var builder      = new NodeBuilder(node);
                var texture      = _textureMapper[builder.FunctionName];
                var topLeftPoint = startPoint.AddCoordinate(new Point3D(rectangleSize * i * 1.5, 0, 0));

                BuildPreviewRectangle(previewDocument, topLeftPoint, texture, rectangleSize, 0.3);
                i++;
            }
        }