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); }
// 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)) { }
public AISPlane(GeomPlane aComponent, gpPnt aCenter, bool aCurrentMode) : base(AIS_Plane_Ctor13B4A2BC(aComponent.Instance, aCenter.Instance, aCurrentMode)) { }
public bool PlaneAttributes(GeomPlane aComponent, gpPnt aCenter, gpPnt aPmin, gpPnt aPmax) { return(AIS_Plane_PlaneAttributesC014B0(Instance, aComponent.Instance, aCenter.Instance, aPmin.Instance, aPmax.Instance)); }
public void D2(double U, gpPnt P, gpVec V1, gpVec V2) { Geom_Circle_D227877840(Instance, U, P.Instance, V1.Instance, V2.Instance); }
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); }
public void D0(double U, gpPnt P) { Geom_Circle_D053A5A2C1(Instance, U, P.Instance); }
public void D1(double U, gpPnt P, gpVec V1) { Geom_Circle_D11387A81(Instance, U, P.Instance, V1.Instance); }
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); }
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)) { }
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)) { }
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)) { }
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)) { }
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(); } } }
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); }
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); }
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)) { }