public override bool Execute() { var edge1 = new BRepBuilderAPIMakeEdge(Dependency[0].TransformedPoint3D.GpPnt, Dependency[1].TransformedPoint3D.GpPnt).Edge; var edge2 = new BRepBuilderAPIMakeEdge(Dependency[1].TransformedPoint3D.GpPnt, Dependency[2].TransformedPoint3D.GpPnt).Edge; var edge3 = new BRepBuilderAPIMakeEdge(Dependency[2].TransformedPoint3D.GpPnt, Dependency[3].TransformedPoint3D.GpPnt).Edge; var edge4 = new BRepBuilderAPIMakeEdge(Dependency[3].TransformedPoint3D.GpPnt, Dependency[0].TransformedPoint3D.GpPnt).Edge; var mkWire = new BRepBuilderAPIMakeWire(); mkWire.Add(edge1); mkWire.Add(edge2); mkWire.Add(edge3); mkWire.Add(edge4); TopoDSFace faceProfile = null; if (mkWire.IsDone) { var wireProfile = mkWire.Wire; if (!wireProfile.IsNull) { faceProfile = new BRepBuilderAPIMakeFace(wireProfile, false).Face; } } Shape = faceProfile; return(true); }
public void AllocDeallocSimpleTest() { //NaroMessage.Show("start test"); //Console.WriteLine("---- wrapper start test ----"); var watch = new Stopwatch(); watch.Start(); for (var i = 0; i < 300000; i++) { var pnt = new gpPnt(i, i, i); var pnt2 = new gpPnt(i + 10, i + 10, i + 10); var aEdge = new BRepBuilderAPIMakeEdge(pnt, pnt2).Edge; var wire = new BRepBuilderAPIMakeWire(aEdge).Wire; TopoDSShape shape = wire; new AISShape(shape); var pln = new gpPln(i + 10, i + 10, i + 10, i + 10); var geomPln = new GeomPlane(pln); var trsf = new gpTrsf(); geomPln.Transform(trsf); } watch.Stop(); //Console.WriteLine("---- wrapper end test - took {0} ms ----", watch.ElapsedMilliseconds); //NaroMessage.Show(String.Format("---- wrapper end test - took {0} ms ----", watch.ElapsedMilliseconds)); }
public void MultiLineTrimTest() { var edge1 = new BRepBuilderAPIMakeEdge(new gpPnt(1, 1, 0), new gpPnt(5, 5, 0)).Edge; var edge2 = new BRepBuilderAPIMakeEdge(new gpPnt(2, 0, 0), new gpPnt(2, 5, 0)).Edge; var edge3 = new BRepBuilderAPIMakeEdge(new gpPnt(4, 0, 0), new gpPnt(4, 5, 0)).Edge; var clickPoint = new Point3D(3, 3, 0); var trimmingEdges = new List <TopoDSEdge> { edge2, edge3 }; var trimmedEdges = GeomUtils.TrimGenericShape(trimmingEdges, edge1, clickPoint); Assert.IsTrue(trimmedEdges != null, "Trimming solutions not found"); var trimmedCurves = trimmedEdges.Select(edge => new BRepAdaptorCurve(edge)).ToList(); var firstPoint = new Point3D(trimmedCurves[0].Value(trimmedCurves[0].FirstParameter)); var lastPoint = new Point3D(trimmedCurves[0].Value(trimmedCurves[0].LastParameter)); Assert.IsTrue(firstPoint.IsEqual(new Point3D(1, 1, 0)), "invalid trimming point"); Assert.IsTrue(lastPoint.IsEqual(new Point3D(2, 2, 0)), "invalid trimming point"); var thirdPoint = new Point3D(trimmedCurves[1].Value(trimmedCurves[1].FirstParameter)); var fourthPoint = new Point3D(trimmedCurves[1].Value(trimmedCurves[1].LastParameter)); Assert.IsTrue(thirdPoint.IsEqual(new Point3D(4, 4, 0)), "invalid trimming point"); Assert.IsTrue(fourthPoint.IsEqual(new Point3D(5, 5, 0)), "invalid trimming point"); }
public void CircleMultiLineTrimTest() { var wireCircle = OccShapeCreatorCode.CreateWireCircle(new gpAx1(new gpPnt(0, 0, 0), new gpDir(0, 0, 1)), 2); var circleEdges = GeomUtils.ExtractEdges(wireCircle); var edge1 = new BRepBuilderAPIMakeEdge(new gpPnt(-3, 0, 0), new gpPnt(3, 0, 0)).Edge; var edge2 = new BRepBuilderAPIMakeEdge(new gpPnt(0, -3, 0), new gpPnt(0, 3, 0)).Edge; Assert.IsTrue(circleEdges.Count > 0, "invalid circle edges"); var clickPoint = new Point3D(2, 0, 0); var trimmingEdges = new List <TopoDSEdge> { edge1, edge2 }; var trimmedEdges = GeomUtils.TrimGenericShape(trimmingEdges, circleEdges[0], clickPoint); Assert.IsTrue(trimmedEdges.Count == 1, "Incorrect number of trim solutions"); var trimmedCurve = new BRepAdaptorCurve(trimmedEdges[0]); var firstPoint = new Point3D(trimmedCurve.Value(trimmedCurve.FirstParameter)); var lastPoint = new Point3D(trimmedCurve.Value(trimmedCurve.LastParameter)); Assert.IsTrue(firstPoint.IsEqual(new Point3D(0, 2, 0)), "invalid trimming point"); Assert.IsTrue(lastPoint.IsEqual(new Point3D(2, 0, 0)), "invalid trimming point"); }
private NodeBuilder BuildArcInDocument(Document document) { var firstPointBuilder = GetSketchProjectedNode(document, Points[0]); var secondPointBuilder = GetSketchProjectedNode(document, Points[1]); var thirdPointBuilder = GetSketchProjectedNode(document, Points[2]); var gceCirc = new gceMakeCirc(firstPointBuilder[1].TransformedPoint3D.GpPnt, secondPointBuilder[1].TransformedPoint3D.GpPnt, thirdPointBuilder[1].TransformedPoint3D.GpPnt); var circle = gceCirc.Value; var circleCenterBuilder = GetSketchProjectedNode(document, new Point3D(circle.Axis.Location)); var arc = GeomUtils.BuildArc(circle.Axis, Points[0], Points[1], true); var reversedArc = true; if (arc != null) { var firstU = arc.FirstParameter; var lastU = arc.LastParameter; var arcEdge = new BRepBuilderAPIMakeEdge(arc).Edge; var arcAdaptor = new BRepAdaptorCurve(arcEdge); var thirdPointU = GeomUtils.UParameter(arcAdaptor, arcEdge.Location(), Points[3]); if ((firstU <= thirdPointU) && (thirdPointU <= lastU)) { reversedArc = false; } } var builder = new NodeBuilder(document, FunctionNames.Arc); builder[0].Reference = circleCenterBuilder.Node; builder[1].Reference = reversedArc ? secondPointBuilder.Node : firstPointBuilder.Node; builder[2].Reference = reversedArc ? firstPointBuilder.Node : secondPointBuilder.Node; builder.ExecuteFunction(); return(builder); }
/// <summary> /// Builds a rectangle from 3 points received as parameter /// Rectangle: /// P2--------P3 /// P1--------P4 /// </summary> public static TopoDSFace BuildRectangle(Point3D firstPoint, Point3D secondPoint, Point3D thirdPoint) { var fourth = new gpPnt(); GeomUtils.CalculateRectangleVertexes(firstPoint.GpPnt, secondPoint.GpPnt, thirdPoint.GpPnt, ref fourth); var fourthPoint = new Point3D(fourth); // Check for point coincidence if (firstPoint.IsEqual(secondPoint) || secondPoint.IsEqual(thirdPoint) || thirdPoint.IsEqual(fourthPoint) || fourthPoint.IsEqual(firstPoint)) { return(null); } var aEdge1 = new BRepBuilderAPIMakeEdge(firstPoint.GpPnt, secondPoint.GpPnt).Edge; var aEdge2 = new BRepBuilderAPIMakeEdge(secondPoint.GpPnt, thirdPoint.GpPnt).Edge; var aEdge3 = new BRepBuilderAPIMakeEdge(thirdPoint.GpPnt, fourthPoint.GpPnt).Edge; var aEdge4 = new BRepBuilderAPIMakeEdge(fourthPoint.GpPnt, firstPoint.GpPnt).Edge; var aWire = new BRepBuilderAPIMakeWire(aEdge1, aEdge2, aEdge3, aEdge4).Wire; if (aWire.IsNull) { return(null); } var faceProfile = new BRepBuilderAPIMakeFace(aWire, false).Face; return(faceProfile.IsNull ? null : faceProfile); }
public override bool Execute() { var dependency = Builder.Node.Get <FunctionInterpreter>().Dependency; var firstData = dependency[Constant.StepIndexBeamFirstNode].ReferenceData; var firstNode = firstData.Node; var firstIndex = firstData.ShapeCount; var firstPointValue = ShapeUtils.ExtractShapesPoint(firstNode, firstIndex); var secondData = dependency[Constant.StepIndexBeamSecondNode].ReferenceData; var secondNode = secondData.Node; var secondIndex = secondData.ShapeCount; var secondPointValue = ShapeUtils.ExtractShapesPoint(secondNode, secondIndex); if (firstPointValue.IsEqual(secondPointValue, Precision.Confusion)) { return(false); } NodeUtils.Hide(firstNode); NodeUtils.Hide(secondNode); var aEdge = new BRepBuilderAPIMakeEdge(firstPointValue, secondPointValue).Edge; var wire = new BRepBuilderAPIMakeWire(aEdge).Wire; Shape = wire; return(true); }
private TopoDSWire Wire(Point3D firstPoint, Point3D secondPoint) { var aEdge2 = new BRepBuilderAPIMakeEdge(firstPoint.GpPnt, secondPoint.GpPnt).Edge; var wire = new BRepBuilderAPIMakeWire(aEdge2).Wire; return(wire); }
protected override bool Extract(SolverGeometricObject data) { var builder = Builder; var firstPoint = builder[0].TransformedPoint3D.AddCoordinate(new Point3D(-1000, 0, 0)); var secondPoint = firstPoint.AddCoordinate(new Point3D(2000, 0, 0)); var edge = new BRepBuilderAPIMakeEdge(firstPoint.GpPnt, secondPoint.GpPnt).Edge; data.Edges.Add(new SolverEdge(edge)); return(true); }
public void IntersectionPointTest() { var edge1 = new BRepBuilderAPIMakeEdge(new gpPnt(0, 0, 0), new gpPnt(5, 5, 0)).Edge; var edge2 = new BRepBuilderAPIMakeEdge(new gpPnt(2, 0, 0), new gpPnt(2, 5, 0)).Edge; var result = GeomUtils.IntersectionPoints(edge1, edge2); Assert.IsTrue(result.Count > 0, "invalid intersection"); Assert.IsTrue(result[0].IsEqual(new Point3D(2, 2, 0)), "Invalid intersection solution"); }
private static TopoDSShape CreateLine(Point3D first, Point3D second) { if (first.IsEqual(second)) { return(null); } var aEdge = new BRepBuilderAPIMakeEdge(first.GpPnt, second.GpPnt).Edge; return(new BRepBuilderAPIMakeWire(aEdge).Wire); }
/// <summary> /// Build a cicle knowing the axis that describe the center (location and direction) /// and also the radius value /// </summary> public static TopoDSWire CreateWireCircle(gpAx1 centerAxis, double radius) { var centerCoord = new gpAx2 { Axis = (centerAxis) }; var circle = new gpCirc(centerCoord, radius); var edge = new BRepBuilderAPIMakeEdge(circle).Edge; var wire = new BRepBuilderAPIMakeWire(edge).Wire; return(wire); }
public void UParameterTest() { var edge = new BRepBuilderAPIMakeEdge(new gpPnt(1, 1, 0), new gpPnt(5, 5, 0)).Edge; var curve = new BRepAdaptorCurve(edge); var location = new TopLocLocation(GeomUtils.BuildTranslation(new Point3D(0, 0, 0), new Point3D(1, 1, 0))); Assert.IsTrue( Math.Abs(GeomUtils.UParameter(curve, location, new Point3D(1, 1, 0)).Value - curve.FirstParameter) < 0.1, "invalid first parameter"); Assert.IsTrue( Math.Abs(GeomUtils.UParameter(curve, location, new Point3D(5, 5, 0)).Value - curve.LastParameter) < 0.1, "invalid last parameter"); }
public static TopoDSWire BuildSplineWire(ICollection <Point3D> pointList) { var array = new TColgpArray1OfPnt(1, pointList.Count); // sizing array var index = 1; foreach (var point3D in pointList) { array.SetValue(index, point3D.GpPnt); index++; } var curve = new GeomBezierCurve(array); var edge = new BRepBuilderAPIMakeEdge(curve).Edge; return(new BRepBuilderAPIMakeWire(edge).Wire); }
/// <summary> /// Builds an ellipse from 3 points in space /// </summary> private static TopoDSWire BuildEllipse(Point3D center, Point3D secondPoint, Point3D thirdPoint) { double minorRadius; double majorRadius; bool reversed; gpDir dirX = null; gpDir dirY = null; if (secondPoint.GpPnt.Distance(thirdPoint.GpPnt) < Precision.Confusion) { return(null); } if (!TreeUtils.ComputeEllipseRadiuses(center, secondPoint, thirdPoint, out minorRadius, out majorRadius, out reversed, ref dirX, ref dirY)) { return(null); } // Build a plane from the 3 points var plane = GeomUtils.BuildPlane(center, secondPoint, thirdPoint); var ax1 = plane.Axis; var ax2 = new gpAx2(); ax2.Axis = (ax1); ax2.Location = (center.GpPnt); // If major and minor radius are reversed also their directions arereversed if (!reversed) { ax2.XDirection = (dirX); ax2.YDirection = (dirY); } else { ax2.XDirection = (dirY); ax2.YDirection = (dirX); } var ellipse = new GeomEllipse(ax2, majorRadius, minorRadius); var edge = new BRepBuilderAPIMakeEdge(ellipse).Edge; var wire = new BRepBuilderAPIMakeWire(edge).Wire; return(wire); }
public override bool Execute() { var firstPoint = Dependency[0].TransformedPoint3D; var secondPoint = Dependency[1].TransformedPoint3D; var colorOrientation = Dependency[2].Integer; var color = QuantityNameOfColor.Quantity_NOC_RED; var aEdge = new BRepBuilderAPIMakeEdge(firstPoint.GpPnt, secondPoint.GpPnt).Edge; var wire = new BRepBuilderAPIMakeWire(aEdge).Wire; var temporaryShape = new AISShape(wire); var drawer = temporaryShape.Attributes; //need fixed the coloring // drawer.WireAspect = (new Prs3dLineAspect(color, AspectTypeOfLine.Aspect_TOL_DOT,3)); Interactive = temporaryShape; return(true); }
public override bool Execute() { var firstPoint = Dependency[0].RefTransformedPoint3D; var secondPoint = Dependency[1].RefTransformedPoint3D; if (firstPoint.IsEqual(secondPoint)) { return(false); } var aEdge = new BRepBuilderAPIMakeEdge(firstPoint.GpPnt, secondPoint.GpPnt).Edge; var wire = new BRepBuilderAPIMakeWire(aEdge).Wire; Shape = wire; return(true); }
private static void InitializeGeometry(ICollection <SolverGeometricObject> geometry) { // Make a rectangle var rectObject = new SolverGeometricObject(null); // Add some dummy points rectObject.Points.Add(new SolverDataPoint(new Point3D(0, 0, 0), GeometryType.EndPoint)); rectObject.Points.Add(new SolverDataPoint(new Point3D(10, 10, 0), GeometryType.EndPoint)); rectObject.Points.Add(new SolverDataPoint(new Point3D(0, 10, 0), GeometryType.EndPoint)); rectObject.Points.Add(new SolverDataPoint(new Point3D(10, 0, 0), GeometryType.EndPoint)); rectObject.Points.Add(new SolverDataPoint(new Point3D(-10, -10, 0), GeometryType.EndPoint)); // Add two edges to intersect var edge1 = new BRepBuilderAPIMakeEdge(new Point3D(0, 0, 0).GpPnt, new Point3D(10, 10, 0).GpPnt).Edge; rectObject.Edges.Add(new SolverEdge(edge1)); var edge2 = new BRepBuilderAPIMakeEdge(new Point3D(0, 10, 0).GpPnt, new Point3D(10, 0, 0).GpPnt).Edge; rectObject.Edges.Add(new SolverEdge(edge2)); geometry.Add(rectObject); }
public static TopoDSShape CreateArcShape(Point3D point1, Point3D point2, Point3D point3) { if (point1.IsEqual(point2) || point1.IsEqual(point3) || point2.IsEqual(point3)) { return(null); } var line = new gpLin(point1.GpPnt, new gpDir(new gpVec(point1.GpPnt, point2.GpPnt))); if (line.Distance(point3.GpPnt) < Precision.Confusion) { return(null); } var gceCirc = new gceMakeCirc(point1.GpPnt, point2.GpPnt, point3.GpPnt); var circle = gceCirc.Value; var arc = new GCMakeArcOfCircle(circle, point2.GpPnt, point1.GpPnt, true); var curve = arc.Value; var edge = new BRepBuilderAPIMakeEdge(curve).Edge; var circleWire = new BRepBuilderAPIMakeWire(edge).Wire; return(circleWire); }
public static TopoDSWire CreateLineWire(Point3D firstPoint, Point3D secondPoint) { var aEdge = new BRepBuilderAPIMakeEdge(firstPoint.GpPnt, secondPoint.GpPnt).Edge; return(new BRepBuilderAPIMakeWire(aEdge).Wire); }