private void Execute(Node node, AttributeInterpreterBase atttributeType) { var nodePoint = NodeBuilderUtils.GetNodePoint(Parent); if (nodePoint == null) { return; } var builder = new NodeBuilder(_node); var y = builder[0].TransformedPoint3D.Y; var point = (Point3D)nodePoint; point.Y = y; SetupPointCoordinate(point); }
public override bool Execute() { var edgeNode = Dependency[0].Reference; var edgeIndexNode = Dependency[0].ReferenceData.ShapeCount; if (ShapeUtils.ExtractShape(edgeNode) == null) { return(false); } var edge = TopoDS.Edge(ShapeUtils.ExtractSubShape(edgeNode, edgeIndexNode, TopAbsShapeEnum.TopAbs_EDGE)); var distance = Dependency[1].Real; var referenceShape = Dependency[2].Reference; var referebceShapePointIndex = Dependency[3].Integer; if (referenceShape == null) { return(false); } var point = NodeBuilderUtils.GetNodePoint(referenceShape[referebceShapePointIndex]); if (point != null) { var projectionPoint = GeomUtils.ProjectPointOnEdge(edge, ((Point3D)point).GpPnt); var newPoint = new Point3D(projectionPoint); var currentDistance = projectionPoint.Distance(((Point3D)point).GpPnt); if (Math.Abs(currentDistance - distance) > 0.01) { var scale = currentDistance / distance; if (Math.Abs(scale - 1) > Precision.Confusion) { newPoint = TreeUtils.ScaleSegment(newPoint, ((Point3D)point), scale); } } NodeBuilderUtils.SetupNodePoint(referenceShape[referebceShapePointIndex], newPoint); } return(true); }
private void Execute() { var result = NodeBuilderUtils.GetNodePoint(Parent); if (result != null) SetupPointCoordinate((Point3D) result); }