public void SetMirror(gpPnt P)
 {
     Geom_Transformation_SetMirror9EAECD5B(Instance, P.Instance);
 }
 public void D1(double U, double V, gpPnt P, gpVec D1U, gpVec D1V)
 {
     Adaptor3d_Surface_D14153CD1A(Instance, U, V, P.Instance, D1U.Instance, D1V.Instance);
 }
 public void D3(double U, double V, gpPnt P, gpVec D1U, gpVec D1V, gpVec D2U, gpVec D2V, gpVec D2UV, gpVec D3U, gpVec D3V, gpVec D3UUV, gpVec D3UVV)
 {
     Adaptor3d_Surface_D3B100120D(Instance, U, V, P.Instance, D1U.Instance, D1V.Instance, D2U.Instance, D2V.Instance, D2UV.Instance, D3U.Instance, D3V.Instance, D3UUV.Instance, D3UVV.Instance);
 }
Example #4
0
        // The rectangle is like the following:
        //   vertex2------vertex3
        //   vertex1------vertex4
        public override gpAx2 GetPointLocation(int index)
        {
            var firstPoint  = Dependency[0].TransformedPoint3D;
            var secondPoint = Dependency[1].TransformedPoint3D;
            var thirdPoint  = Dependency[2].TransformedPoint3D;

            var vectorV2V1               = new gpVec(secondPoint.GpPnt, firstPoint.GpPnt);
            var vectorV2V3               = new gpVec(secondPoint.GpPnt, thirdPoint.GpPnt);
            var rectangleNormalVector    = vectorV2V1.Crossed(vectorV2V3);
            var rectangleNormalDirection = new gpDir(rectangleNormalVector);

            var rectangleCenter = new gpPnt((firstPoint.X + thirdPoint.X) / 2, (firstPoint.Y + thirdPoint.Y) / 2,
                                            (firstPoint.Z + thirdPoint.Z) / 2);

            vectorV2V3.Normalize();
            vectorV2V1.Normalize();
            vectorV2V3.Multiply(DistanceToObject);
            vectorV2V1.Multiply(DistanceToObject);

            var leftArrowVector   = vectorV2V3.Reversed;
            var leftArrowMidPoint = GeomUtils.ComputeMidPoint(firstPoint, secondPoint);
            var leftArrowPoint    = GeomUtils.BuildTranslation(leftArrowMidPoint, leftArrowVector);
            var leftArrowAxis     = new gpAx2(leftArrowPoint.GpPnt, rectangleNormalDirection)
            {
                XDirection = (new gpDir(leftArrowVector))
            };

            var topArrowVector   = vectorV2V1.Reversed;
            var topArrowMidPoint = GeomUtils.ComputeMidPoint(secondPoint, thirdPoint);
            var topArrowPoint    = GeomUtils.BuildTranslation(topArrowMidPoint, topArrowVector);
            var topArrowAxis     = new gpAx2(topArrowPoint.GpPnt, rectangleNormalDirection);

            topArrowAxis.XDirection = (new gpDir(topArrowVector));

            var bottomArrowPoint = new gpPnt(2 * rectangleCenter.X - topArrowPoint.X,
                                             2 * rectangleCenter.Y - topArrowPoint.Y,
                                             2 * rectangleCenter.Z - topArrowPoint.Z);
            var bottomArrowAxis = new gpAx2(bottomArrowPoint, rectangleNormalDirection);

            bottomArrowAxis.XDirection = (new gpDir(topArrowVector.Reversed));

            var rightArrowPoint = new gpPnt(2 * rectangleCenter.X - leftArrowPoint.X,
                                            2 * rectangleCenter.Y - leftArrowPoint.Y,
                                            2 * rectangleCenter.Z - leftArrowPoint.Z);
            var rightArrowAxis = new gpAx2(rightArrowPoint, rectangleNormalDirection);

            rightArrowAxis.XDirection = new gpDir(leftArrowVector.Reversed);

            var pointLocation = new gpAx2();

            pointLocation.Direction = rectangleNormalDirection;

            switch (index)
            {
            case 0:
                pointLocation.Location   = (firstPoint.GpPnt);
                pointLocation.XDirection = (new gpDir(vectorV2V3));
                return(pointLocation);

            case 1:
                pointLocation.Location   = (thirdPoint.GpPnt);
                pointLocation.XDirection = (new gpDir(vectorV2V3));
                return(pointLocation);

            case 2:
                return(leftArrowAxis);

            case 3:
                return(topArrowAxis);

            case 4:
                return(rightArrowAxis);

            case 5:
                return(bottomArrowAxis);

            default:
                return(null);
            }
        }
 public AISDiameterDimension(TopoDSShape aShape, double aVal, TCollectionExtendedString aText, gpPnt aPosition, DsgPrsArrowSide aSymbolPrs, bool aDiamSymbol, double anArrowSize)
     :
     base(AIS_DiameterDimension_Ctor54910EE4(aShape.Instance, aVal, aText.Instance, aPosition.Instance, (int)aSymbolPrs, aDiamSymbol, anArrowSize))
 {
 }
Example #6
0
 public AISPlane(GeomPlane aComponent, gpPnt aCenter, bool aCurrentMode)
     :
     base(AIS_Plane_Ctor13B4A2BC(aComponent.Instance, aCenter.Instance, aCurrentMode))
 {
 }
Example #7
0
 public bool PlaneAttributes(GeomPlane aComponent, gpPnt aCenter, gpPnt aPmin, gpPnt aPmax)
 {
     return(AIS_Plane_PlaneAttributesC014B0(Instance, aComponent.Instance, aCenter.Instance, aPmin.Instance, aPmax.Instance));
 }
Example #8
0
 public void D2(double U, gpPnt P, gpVec V1, gpVec V2)
 {
     Geom_Circle_D227877840(Instance, U, P.Instance, V1.Instance, V2.Instance);
 }
Example #9
0
 public void D3(double U, gpPnt P, gpVec V1, gpVec V2, gpVec V3)
 {
     Geom_Circle_D356E36E6F(Instance, U, P.Instance, V1.Instance, V2.Instance, V3.Instance);
 }
Example #10
0
 public void D0(double U, gpPnt P)
 {
     Geom_Circle_D053A5A2C1(Instance, U, P.Instance);
 }
Example #11
0
 public void D1(double U, gpPnt P, gpVec V1)
 {
     Geom_Circle_D11387A81(Instance, U, P.Instance, V1.Instance);
 }
Example #12
0
 private static bool AreInSamePlace(gpPnt startPoint, gpPnt endPoint)
 {
     return(startPoint.IsEqual(endPoint, Precision.Confusion));
 }
 public void SetTranslation(gpPnt P1, gpPnt P2)
 {
     Geom_Transformation_SetTranslation5C63477E(Instance, P1.Instance, P2.Instance);
 }
 public void SetScale(gpPnt P, double S)
 {
     Geom_Transformation_SetScaleF0D1E3E6(Instance, P.Instance, S);
 }
Example #15
0
 public gceMakeCirc(gpPnt Center, gpPln Plane, double Radius)
     :
     base(gce_MakeCirc_CtorE73602A3(Center.Instance, Plane.Instance, Radius))
 {
 }
 public GCMakeArcOfCircle(gpCirc Circ, gpPnt P, double Alpha, bool Sense)
     :
     base(GC_MakeArcOfCircle_CtorF0177DDE(Circ.Instance, P.Instance, Alpha, Sense))
 {
 }
Example #17
0
 public gceMakeCirc(gpPnt Center, gpPnt Ptaxis, double Radius)
     :
     base(gce_MakeCirc_CtorB8940259(Center.Instance, Ptaxis.Instance, Radius))
 {
 }
 public GCMakeArcOfCircle(gpCirc Circ, gpPnt P1, gpPnt P2, bool Sense)
     :
     base(GC_MakeArcOfCircle_CtorFA26BC9F(Circ.Instance, P1.Instance, P2.Instance, Sense))
 {
 }
Example #19
0
 public AISPlane(GeomPlane aComponent, gpPnt aCenter, gpPnt aPmin, gpPnt aPmax, bool aCurrentMode)
     :
     base(AIS_Plane_Ctor57A70980(aComponent.Instance, aCenter.Instance, aPmin.Instance, aPmax.Instance, aCurrentMode))
 {
 }
 public GCMakeArcOfCircle(gpPnt P1, gpPnt P2, gpPnt P3)
     :
     base(GC_MakeArcOfCircle_Ctor4B855FC1(P1.Instance, P2.Instance, P3.Instance))
 {
 }
Example #21
0
 public void SetPlaneAttributes(GeomPlane aComponent, gpPnt aCenter, gpPnt aPmin, gpPnt aPmax)
 {
     AIS_Plane_SetPlaneAttributesC014B0(Instance, aComponent.Instance, aCenter.Instance, aPmin.Instance, aPmax.Instance);
 }
 public GCMakeArcOfCircle(gpPnt P1, gpVec V, gpPnt P2)
     :
     base(GC_MakeArcOfCircle_Ctor5450E69C(P1.Instance, V.Instance, P2.Instance))
 {
 }
Example #23
0
        public override void UpdatePointPosition(int index, Mouse3DPosition vertex)
        {
            if (SelectedEntity.TargetShape() == null)
            {
                return;
            }
            var  faceToChangeIndex = 0;
            Node nodeToChange      = null;
            var  faceShape         = new TopoDSShape();

            if (SelectedEntity.Node.Get <FunctionInterpreter>().Name == FunctionNames.Cut)
            {
                var nb             = new NodeBuilder(SelectedEntity.Node);
                var affectedShapes = NodeBuilderUtils.GetCutNodeBaseExtrudeNodes(nb).ToList();//nb.Dependency[3];
                var clickedPlane   = GeomUtils.ExtractPlane(SelectedEntity.TargetShape());
                if (clickedPlane == null)
                {
                    return;
                }
                foreach (var node in affectedShapes)
                {
                    var faces = GeomUtils.ExtractFaces(new NodeBuilder(node).Shape);
                    int count = 1;
                    foreach (var face in faces)
                    {
                        var direction = GeomUtils.ExtractPlane(face);
                        if (direction == null)
                        {
                            count++;
                            continue;
                        }
                        count++;
                        if (direction.Axis.Direction.IsParallel(clickedPlane.Axis.Direction, Precision.Confusion))
                        {
                            var projectedPnt = GeomUtils.ProjectPointOnPlane(direction.Location, clickedPlane, Precision.Confusion);
                            if (projectedPnt.IsEqual(direction.Location, Precision.Confusion))
                            {
                                faceShape = face;
                                break;
                            }
                        }
                    }

                    // if the face matches the clicked plane, count will be > 0 and will hold the face index on the extruded solid
                    if (count > 0)
                    {
                        faceToChangeIndex = count - 1;
                        nodeToChange      = node;
                        break;
                    }
                }
            }
            if (SelectedEntity.Node.Get <FunctionInterpreter>().Name == FunctionNames.Extrude)
            {
                faceToChangeIndex = SelectedEntity.ShapeCount;
                nodeToChange      = SelectedEntity.Node;
                faceShape         = SelectedEntity.TargetShape();
            }

            if (prevFaceCount < 0)
            {
                prevFaceCount = faceToChangeIndex;
            }
            if (faceToChangeIndex != prevFaceCount)
            {
                return;
            }
            if (nodeToChange == null)
            {
                return;
            }
            var distance      = 0.0;
            var numberOfFaces = GeomUtils.ExtractFaces(new NodeBuilder(nodeToChange).Shape).Count;

            if (faceToChangeIndex == numberOfFaces) //top of shape
            {
                distance = GeomUtils.CalculateDistance(vertex.Point.GpPnt,
                                                       new NodeBuilder(nodeToChange).Dependency[0].
                                                       ReferenceBuilder.Shape);

                var extrudeNb = new NodeBuilder(nodeToChange);
                if (Math.Abs(distance) < Precision.Confusion)
                {
                    distance = 0.1;
                }
                extrudeNb.Dependency[2].Real = distance;
                extrudeNb.ExecuteFunction();
            }

            if (faceToChangeIndex == (numberOfFaces - 1))
            {
                // bottom of shape - sketch which was extruded
                var extrudeNb       = new NodeBuilder(nodeToChange);
                var extrudeHeight   = extrudeNb.Dependency[2].Real;
                var baseSketch      = extrudeNb.Dependency[0].ReferenceBuilder;
                var faces           = GeomUtils.ExtractFaces(extrudeNb.Shape);
                var topFace         = faces[numberOfFaces - 1];
                var distanceTopFace = GeomUtils.CalculateDistance(vertex.Point.GpPnt,
                                                                  topFace);
                distance = GeomUtils.CalculateDistance(vertex.Point.GpPnt,
                                                       SelectedEntity.TargetShape());

                var dirBottomFace         = GeomUtils.ExtractDirection(SelectedEntity.TargetShape());
                var orientationBottomFace = SelectedEntity.TargetShape().Orientation();
                if (orientationBottomFace != TopAbsOrientation.TopAbs_REVERSED)
                {
                    dirBottomFace.Reverse();
                }
                var bottomFaceGravityCenter = GeomUtils.ExtractGravityCenter(topFace);
                var vertexOnDir             = TransformationInterpreter.ProjectPointOnLine(bottomFaceGravityCenter,
                                                                                           dirBottomFace, vertex.Point).Value;
                var startPointOnDir = TransformationInterpreter.ProjectPointOnLine(bottomFaceGravityCenter,
                                                                                   dirBottomFace, new Point3D(previousMousePosition)).Value;

                var vertexvector = new gpVec(startPointOnDir.GpPnt, vertexOnDir.GpPnt);
                var normalvector = new gpVec(dirBottomFace);
                var isOpposite   = false;
                try
                {
                    isOpposite = vertexvector.IsOpposite(normalvector, Precision.Angular);
                }
                catch { return; }
                // calculate new height for the solid
                var newHeight = 0.0;
                if (isOpposite)
                {
                    newHeight = Math.Abs(extrudeHeight) - Math.Abs(distance);
                }
                else
                {
                    newHeight = Math.Abs(extrudeHeight) + Math.Abs(distance);
                }
                newHeight *= Math.Sign(extrudeHeight);
                var face = SelectedEntity.TargetShape();
                if (face == null)
                {
                    return;
                }

                // calculate the new position for the solid
                var transformation = baseSketch.Node.Get <TransformationInterpreter>().CurrTransform;
                var locationOld    = new gpPnt(0, 0, 0).Transformed(transformation);
                var shape          = SelectedEntity.TargetShape();

                var dir         = GeomUtils.ExtractDirection(shape);
                var orientation = shape.Orientation();
                if (orientation != TopAbsOrientation.TopAbs_REVERSED)
                {
                    dir.Reverse();
                }
                if (isOpposite)
                {
                    dir.Reverse();
                }

                var locationNew = new gpPnt
                {
                    X = locationOld.X + dir.X * Math.Abs(distance),
                    Y = locationOld.Y + dir.Y * Math.Abs(distance),
                    Z = locationOld.Z + dir.Z * Math.Abs(distance)
                };

                // set the new transformation for the base sketch
                var T             = new gpTrsf();
                var oldSystemAxis = new gpAx3(new gpPnt(0, 0, 0), new gpDir(0, 0, 1));
                var newSystemAxis = new gpAx3(locationNew, dir);
                T.SetTransformation(oldSystemAxis, newSystemAxis);

                var transformationSet = baseSketch.Node.Set <TransformationInterpreter>();
                transformationSet.CurrTransform = T.Inverted;

                extrudeNb.Dependency[2].Real = newHeight;
                baseSketch.ExecuteFunction();
                previousMousePosition = vertex.Point.GpPnt;
            }

            if (faceToChangeIndex < (numberOfFaces - 1))
            {
                var         shape           = faceShape;
                var         gravityCenter   = GeomUtils.ExtractGravityCenter(shape);
                var         extrudeNb       = new NodeBuilder(nodeToChange);
                var         baseSketch      = extrudeNb.Dependency[0].ReferenceBuilder;
                var         transformation  = baseSketch.Node.Get <TransformationInterpreter>().CurrTransform;
                var         locationSketch  = new gpPnt(0, 0, 0).Transformed(transformation);
                var         directionSketch = new gpDir(0, 0, 1).Transformed(transformation);
                var         sketchPlane     = new gpPln(locationSketch, directionSketch);
                var         pointOnPlane    = new Point3D(GeomUtils.ProjectPointOnPlane(gravityCenter.GpPnt, sketchPlane, Precision.Confusion));
                var         sketchNodes     = NodeUtils.GetSketchNodes(baseSketch.Node, baseSketch.Node.Root.Get <DocumentContextInterpreter>().Document, true);
                NodeBuilder draggedLine     = null;
                foreach (var node in sketchNodes)
                {
                    var nb = new NodeBuilder(node);
                    if (nb.FunctionName != FunctionNames.LineTwoPoints)
                    {
                        continue;
                    }
                    var edges = GeomUtils.ExtractEdges(nb.Shape);
                    if (edges.Count != 1)
                    {
                        continue;
                    }
                    if (GeomUtils.PointIsOnEdge(edges[0], pointOnPlane))
                    {
                        draggedLine = nb;
                        break;
                    }
                }

                if (draggedLine != null)
                {
                    var axisLength    = CoreGlobalPreferencesSingleton.Instance.ZoomLevel * 10;
                    var faceDirection = GeomUtils.ExtractDirection(shape);
                    var orientation   = shape.Orientation();
                    if (orientation != TopAbsOrientation.TopAbs_REVERSED)
                    {
                        faceDirection.Reverse();
                    }
                    var vertexOnPlane = new Point3D(GeomUtils.ProjectPointOnPlane(vertex.Point.GpPnt, sketchPlane, Precision.Confusion));

                    vertexOnPlane.X = (vertexOnPlane.X) * Math.Abs(faceDirection.X);
                    vertexOnPlane.Y = (vertexOnPlane.Y) * Math.Abs(faceDirection.Y);
                    vertexOnPlane.Z = (vertexOnPlane.Z) * Math.Abs(faceDirection.Z);
                    var pointOnPlaneAxis = new Point3D
                    {
                        X = pointOnPlane.X * Math.Abs(faceDirection.X),
                        Y = pointOnPlane.Y * Math.Abs(faceDirection.Y),
                        Z = pointOnPlane.Z * Math.Abs(faceDirection.Z)
                    };
                    var translateValue = vertexOnPlane.SubstractCoordinate(pointOnPlaneAxis);
                    NodeUtils.TranslateSketchNode(draggedLine, translateValue, baseSketch.Node);
                    var constraintMapper = new ConstraintDocumentHelper(baseSketch.Node.Root.Get <DocumentContextInterpreter>().Document, baseSketch.Node);
                    constraintMapper.SetMousePosition(draggedLine.Dependency[0].Reference.Index);
                    var error = constraintMapper.ImpactAndSolve(draggedLine.Dependency[1].Node.Get <ReferenceInterpreter>().Node);
                    baseSketch.ExecuteFunction();
                    extrudeNb.Color = solidColor;
                    extrudeNb.ExecuteFunction();
                }
            }
        }
Example #24
0
 public gceMakeCirc(gpCirc Circ, gpPnt Point)
     :
     base(gce_MakeCirc_Ctor89B70D29(Circ.Instance, Point.Instance))
 {
 }
 public void D0(double U, double V, gpPnt P)
 {
     Adaptor3d_Surface_D0C89A646B(Instance, U, V, P.Instance);
 }
Example #26
0
 public gceMakeCirc(gpPnt P1, gpPnt P2, gpPnt P3)
     :
     base(gce_MakeCirc_Ctor4B855FC1(P1.Instance, P2.Instance, P3.Instance))
 {
 }
 public void D2(double U, double V, gpPnt P, gpVec D1U, gpVec D1V, gpVec D2U, gpVec D2V, gpVec D2UV)
 {
     Adaptor3d_Surface_D2E9F600EF(Instance, U, V, P.Instance, D1U.Instance, D1V.Instance, D2U.Instance, D2V.Instance, D2UV.Instance);
 }
Example #28
0
 public gceMakeCirc(gpPnt Center, gpDir Norm, double Radius)
     :
     base(gce_MakeCirc_Ctor9327D37B(Center.Instance, Norm.Instance, Radius))
 {
 }
 public BRepClass3dSolidClassifier(TopoDSShape S, gpPnt P, double Tol)
     :
     base(BRepClass3d_SolidClassifier_CtorAB62C26C(S.Instance, P.Instance, Tol))
 {
 }
 public AISLengthDimension(TopoDSShape aFShape, TopoDSShape aSShape, GeomPlane aPlane, double aVal, TCollectionExtendedString aText, gpPnt aPosition, DsgPrsArrowSide aSymbolPrs, AISTypeOfDist aTypeDist, double anArrowSize)
     :
     base(AIS_LengthDimension_CtorEA089509(aFShape.Instance, aSShape.Instance, aPlane.Instance, aVal, aText.Instance, aPosition.Instance, (int)aSymbolPrs, (int)aTypeDist, anArrowSize))
 {
 }