diff --git a/docs/kcl/index.md b/docs/kcl/index.md index 75f3c19d4b..5235ea42ff 100644 --- a/docs/kcl/index.md +++ b/docs/kcl/index.md @@ -84,6 +84,7 @@ layout: manual * [`rem`](kcl/rem) * [`revolve`](kcl/revolve) * [`segAng`](kcl/segAng) +* [`segEnd`](kcl/segEnd) * [`segEndX`](kcl/segEndX) * [`segEndY`](kcl/segEndY) * [`segLen`](kcl/segLen) diff --git a/docs/kcl/segEnd.md b/docs/kcl/segEnd.md new file mode 100644 index 0000000000..85ae38b7fc --- /dev/null +++ b/docs/kcl/segEnd.md @@ -0,0 +1,53 @@ +--- +title: "segEnd" +excerpt: "Compute the ending point of the provided line segment." +layout: manual +--- + +Compute the ending point of the provided line segment. + + + +```js +segEnd(tag: TagIdentifier) -> [number] +``` + + +### Arguments + +| Name | Type | Description | Required | +|----------|------|-------------|----------| +| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | | Yes | + +### Returns + +`[number]` + + +### Examples + +```js +w = 15 +cube = startSketchAt([0, 0]) + |> line([w, 0], %, $line1) + |> line([0, w], %, $line2) + |> line([-w, 0], %, $line3) + |> line([0, -w], %, $line4) + |> close(%) + |> extrude(5, %) + +fn cylinder = (radius, tag) => { + return startSketchAt([0, 0]) + |> circle({ radius: radius, center: segEnd(tag) }, %) + |> extrude(radius, %) +} + +cylinder(1, line1) +cylinder(2, line2) +cylinder(3, line3) +cylinder(4, line4) +``` + +![Rendered example of segEnd 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEFFUlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq/6dXud1Xue9ueqqq/7f+4d/+Iffvu+++27lqquuuuqqq676n4TK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kIQkACQhCUlIAkASkpCEJAAkIQlJSEISkpCEJCQhCUlEBJKQREQgiYggIogIIoKIICKICEoplFKICEop1FoppVBKodZKrZVaK7VWaq3UWqm1Umul1kophVorpRRKKZRSiAgigoggIlgulwzDwNHREfe77777bv2t3/qt7/7RH/3Rz+Gqq6666qqrrrrqqquu+s+AHvSgB3HVVVddddVV/1tcc801D37t137t93qd13md977mmmseDLC7u8vf/M3f8Lu/+7tIAkASAJK4nyQAJAEgiftJ4n6SuJ8k7ieJiEASkpCEJCQBIAlJSEISkpCEJAAkIQlJSAJAEpKQhCQkASAJSUhCEgCSkIQkJCEJSUhCEpKQhCQiAklIIiKQREQQEUQEEUFEEBFEBKUUIoJSCqUUSinUWimlUGul1kqtlVortVZqrdRaqbVSa6WUQq2VUgqlFEopRAQAq9WKw8NDHugf/uEffvu3fuu3vue3fuu3vpurrrrqqquuuuqqq6666j8TetCDHsRVV1111VVX/W9z5syZB734i7/467zjO77jZ11zzTUPBrh06RK33norf/u3f8sznvEMJAEgCQBJAEjifpIAkMT9JHE/SdxPEpKQhCQkIQlJSEISkpCEJCQhCQBJSEISkpAEgCQkIQlJAEhCEpKQBIAkJCEJSUhCEpKQhCQkIQlJRASSkEREIImIICKQRERQSiEiiAhKKUQEpRRKKZRSqLVSSqHWSq2VWiu1Vmqt1FqptVJrpdZKKYVaK6UUJDFNE6vVige67777bv2t3/qt7/7RH/3Rz+Gqq6666qqrrrrqqquu+q+CHvSgB3HVVVddddVV/5u9zuu8znu/zuu8znu92Iu92GvzTLu7u/zt3/4tt912G7fddhsAkrifJAAkcT9J3E8S95MEgCQkIQlJSEISkpCEJCQhCUlIAkASkpCEJCQBIAlJSEISkgCQhCQkIQkASUhCEpKQhCQkIQlJSEISkpBERCCJiEASEUFEIImIICIopRARlFKICEoplFIopVBrpZRCrZVaK7VWSil0XUetlVortVZqrUgiIpimiQe67777bv2t3/qt7/7t3/7t77nvvvtu5aqrrrrqqquuuuqqq676r4Ye9KAHcdVVV1111VX/F5w5c+ZBr/M6r/Per/M6r/Pe11xzzYN5pkuXLvG3f/u33Hbbbdx2220ASAJAEveTxP0kcT9JAEhCEpKQhCQkIQlJSEISkpAEgCQkIQlJSEISAJKQhCQkASAJSUhCEgCSkIQkJCEJSUhCEpKQhCQkIQlJRASSiAgkERFIIiKICCKCUgoRQURQSqGUQimFUgq1Vkop1FoppVBrpdZK13V0XUff95RSkMQD3Xfffbf+6I/+6Of8/d///W+dPXv2GVx11VVXXXXVVVddddVV/53Qgx70IK666qqrrrrq/5oXe7EXe+3XeZ3Xea/XeZ3XeW8e4NKlS9x2223cdttt/N3f/R0AkgCQxP0kcT9JAEhCEpKQhCQkIQlJSEISkgCQhCQkIQlJSAJAEpKQhCQkASAJSUhCEgCSkIQkJCEJSUhCEpKQhCQkIQlJRASSkEREEBFIIiKICCKCiKCUQkRQSqGUQimFUgqlFGqt1Frp+57t7W1msxld1/Hc/uEf/uG3//7v//63f/RHf/RzuOqqq6666qqrrrrqqqv+J0EPetCDuOqqq6666qr/q86cOfOga6655iGv8zqv816v8zqv8948wKVLlwC47bbb+Pu//3tuu+02JHE/SdxPEgARgSQkIQlJSEISkpAEgCQkIQlJSEISAJKQhCQkIQkASUhCEpIAkIQkJCEJSUhCEpKQhCQkIQlJSEISEYEkJBERRASSiAgigoggIiilEBGUUiilsFgs2N7epu97Njc3WSwWPLf77rvv1t/6rd/67n/4h3/4nX/4h3/4ba666qqrrrrqqquuuuqq/6nQgx70IK666qqrrrrq/4trrrnmwa/92q/9Xi/+4i/+2i/2Yi/22jyXS5cucfvtt3Pbbbext7fH7bffDoAkACQhiYhAEpKQhCQAJCEJSUhCEpKQhCQAJCEJSUhCEgCSkIQkJAEgCUlIQhKSkIQkACQhiYhAEpKQhCQkERFIIiKQREQQEUQEEcFiseDEiRPM53N2dnbY3t7m+bnvvvtu/a3f+q3vBvjRH/3Rz+Gqq6666qqrrrrqqquu+t8CPehBD+Kqq6666qqr/j+65pprHnzmzJkHv9iLvdhrvfiLv/hrv9iLvdhr83xcunSJ22+/HYA77riDvb097rzzTiQhCUlIQhKSkIQkJCEJSUgCQBKSkIQkJAEgCUlIQhIAkpCEJCQhCUlIAkASkpCEJCICSUhCEpKICDY2NtjY2ODkyZNI4uTJk8znc+bzOc/Pfffdd+vZs2dv/fu///vf/od/+Iff/od/+Iff4aqrrrrqqquuuuqqq6763wo96EEP4qqrrrrqqquugmuuuebBAC/2Yi/22i/2Yi/2Wtdcc82DX+zFXuy1eQH29vYAuPPOOwG48847kcT+/j6SODg44ODgAEkASEISkpCEJAAkIQlJSEISAJKQhCQkIQlJAEhic3MTSWxubrK5ucnm5iaS2NjYYGNjg42NDRaLBS/Mfffdd+s//MM//PZ999136z/8wz/89j/8wz/8DlddddVVV1111VVXXXXV/yXoQQ96EFddddVVV1111fN3zTXXPBjgxV7sxV77xV7sxV4L4Jprrnnwi73Yi702/wr7+/tIwjYHBwcASALg4OAAAEkASGJzc5P7SQJgc3OTzc1N/rXuu+++W8+ePXvrfffdd+t9991369mzZ59x3333Pf0f/uEffoerrrrqqquuuuqqq6666v869KAHPYirrrrqqquuuupf75prrnnwmTNnHnzNNdc8CNCLvdiLvRbANddc82CAM2fOPPiaa655MP9J7rvvvlsBzp49e+t9991363333XcrwNmzZ59x33333Xr27Nlb77vvvlu56qqrrrrqqquuuuqqq/4/Qw960IO46qqrrrrqqqv+c11zzTUPtm1JOnPmzIN5Nl9zzTUP4Tn5vvvuewbPyWfPnn3GfffddytXXXXVVVddddVVV1111VUvOvSgBz2Iq6666qqrrrrqqquuuuqqq6666qqrrrrq/yQqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r+IfAZI+8lXI0MuwAAAAAElFTkSuQmCC) + + diff --git a/docs/kcl/std.json b/docs/kcl/std.json index 2a49b6a5fc..12f9a36fd0 100644 --- a/docs/kcl/std.json +++ b/docs/kcl/std.json @@ -160120,6 +160120,909 @@ "exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 0], %)\n |> line([5, 10], %, $seg01)\n |> line([-10, 0], %)\n |> angledLine([segAng(seg01), 10], %)\n |> line([-10, 0], %)\n |> angledLine([segAng(seg01), -15], %)\n |> close(%)\n\nexample = extrude(4, exampleSketch)" ] }, + { + "name": "segEnd", + "summary": "Compute the ending point of the provided line segment.", + "description": "", + "tags": [], + "args": [ + { + "name": "tag", + "type": "TagIdentifier", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "TagIdentifier", + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "allOf": [ + { + "$ref": "#/components/schemas/TagEngineInfo" + } + ], + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Metadata" + } + } + }, + "definitions": { + "TagEngineInfo": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Path" + } + ], + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "allOf": [ + { + "$ref": "#/components/schemas/ExtrudeSurface" + } + ], + "nullable": true + } + } + }, + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Metadata": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + } + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "[number]", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Array_size_2_of_double", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "w = 15\ncube = startSketchAt([0, 0])\n |> line([w, 0], %, $line1)\n |> line([0, w], %, $line2)\n |> line([-w, 0], %, $line3)\n |> line([0, -w], %, $line4)\n |> close(%)\n |> extrude(5, %)\n\nfn cylinder = (radius, tag) => {\n return startSketchAt([0, 0])\n |> circle({ radius: radius, center: segEnd(tag) }, %)\n |> extrude(radius, %)\n}\n\ncylinder(1, line1)\ncylinder(2, line2)\ncylinder(3, line3)\ncylinder(4, line4)" + ] + }, { "name": "segEndX", "summary": "Compute the ending point of the provided line segment along the 'x' axis.", diff --git a/src/wasm-lib/kcl/src/std/args.rs b/src/wasm-lib/kcl/src/std/args.rs index b3ef1c442f..34c233c5ab 100644 --- a/src/wasm-lib/kcl/src/std/args.rs +++ b/src/wasm-lib/kcl/src/std/args.rs @@ -181,47 +181,39 @@ impl Args { Ok(()) } - fn make_user_val_from_json(&self, j: serde_json::Value) -> Result { - Ok(KclValue::UserVal(crate::executor::UserVal { + fn make_user_val_from_json(&self, j: serde_json::Value) -> KclValue { + KclValue::UserVal(crate::executor::UserVal { value: j, meta: vec![Metadata { source_range: self.source_range, }], - })) + }) } - pub(crate) fn make_null_user_val(&self) -> Result { + pub(crate) fn make_null_user_val(&self) -> KclValue { self.make_user_val_from_json(serde_json::Value::Null) } - pub(crate) fn make_user_val_from_i64(&self, n: i64) -> Result { + pub(crate) fn make_user_val_from_i64(&self, n: i64) -> KclValue { self.make_user_val_from_json(serde_json::Value::Number(serde_json::Number::from(n))) } pub(crate) fn make_user_val_from_f64(&self, f: f64) -> Result { - self.make_user_val_from_json(serde_json::Value::Number(serde_json::Number::from_f64(f).ok_or_else( - || { - KclError::Type(KclErrorDetails { - message: format!("Failed to convert `{}` to a number", f), - source_ranges: vec![self.source_range], - }) - }, - )?)) + f64_to_jnum(f, vec![self.source_range]).map(|x| self.make_user_val_from_json(x)) + } + + pub(crate) fn make_user_val_from_point(&self, p: [f64; 2]) -> Result { + let x = f64_to_jnum(p[0], vec![self.source_range])?; + let y = f64_to_jnum(p[1], vec![self.source_range])?; + let array = serde_json::Value::Array(vec![x, y]); + Ok(self.make_user_val_from_json(array)) } pub(crate) fn make_user_val_from_f64_array(&self, f: Vec) -> Result { - let mut arr = Vec::new(); - for n in f { - arr.push(serde_json::Value::Number(serde_json::Number::from_f64(n).ok_or_else( - || { - KclError::Type(KclErrorDetails { - message: format!("Failed to convert `{}` to a number", n), - source_ranges: vec![self.source_range], - }) - }, - )?)); - } - self.make_user_val_from_json(serde_json::Value::Array(arr)) + f.into_iter() + .map(|n| f64_to_jnum(n, vec![self.source_range])) + .collect::, _>>() + .map(|arr| self.make_user_val_from_json(serde_json::Value::Array(arr))) } pub(crate) fn get_number(&self) -> Result { @@ -750,3 +742,14 @@ impl<'a> FromKclValue<'a> for SketchSurface { } } } + +fn f64_to_jnum(f: f64, source_ranges: Vec) -> Result { + serde_json::Number::from_f64(f) + .ok_or_else(|| { + KclError::Type(KclErrorDetails { + message: format!("Failed to convert `{f}` to a number"), + source_ranges, + }) + }) + .map(serde_json::Value::Number) +} diff --git a/src/wasm-lib/kcl/src/std/assert.rs b/src/wasm-lib/kcl/src/std/assert.rs index f4cb15c359..5a71efe73c 100644 --- a/src/wasm-lib/kcl/src/std/assert.rs +++ b/src/wasm-lib/kcl/src/std/assert.rs @@ -24,7 +24,7 @@ async fn _assert(value: bool, message: &str, args: &Args) -> Result<(), KclError pub async fn assert(_exec_state: &mut ExecState, args: Args) -> Result { let (data, description): (bool, String) = args.get_data()?; inner_assert(data, &description, &args).await?; - args.make_null_user_val() + Ok(args.make_null_user_val()) } /// Check a value at runtime, and raise an error if the argument provided @@ -44,7 +44,7 @@ async fn inner_assert(data: bool, message: &str, args: &Args) -> Result<(), KclE pub async fn assert_lt(_exec_state: &mut ExecState, args: Args) -> Result { let (left, right, description): (f64, f64, String) = args.get_data()?; inner_assert_lt(left, right, &description, &args).await?; - args.make_null_user_val() + Ok(args.make_null_user_val()) } /// Check that a numerical value is less than to another at runtime, @@ -63,7 +63,7 @@ async fn inner_assert_lt(left: f64, right: f64, message: &str, args: &Args) -> R pub async fn assert_gt(_exec_state: &mut ExecState, args: Args) -> Result { let (left, right, description): (f64, f64, String) = args.get_data()?; inner_assert_gt(left, right, &description, &args).await?; - args.make_null_user_val() + Ok(args.make_null_user_val()) } /// Check that a numerical value equals another at runtime, @@ -96,7 +96,7 @@ async fn inner_assert_equal(left: f64, right: f64, epsilon: f64, message: &str, pub async fn assert_equal(_exec_state: &mut ExecState, args: Args) -> Result { let (left, right, epsilon, description): (f64, f64, f64, String) = args.get_data()?; inner_assert_equal(left, right, epsilon, &description, &args).await?; - args.make_null_user_val() + Ok(args.make_null_user_val()) } /// Check that a numerical value is greater than another at runtime, @@ -115,7 +115,7 @@ async fn inner_assert_gt(left: f64, right: f64, message: &str, args: &Args) -> R pub async fn assert_lte(_exec_state: &mut ExecState, args: Args) -> Result { let (left, right, description): (f64, f64, String) = args.get_data()?; inner_assert_lte(left, right, &description, &args).await?; - args.make_null_user_val() + Ok(args.make_null_user_val()) } /// Check that a numerical value is less than or equal to another at runtime, @@ -135,7 +135,7 @@ async fn inner_assert_lte(left: f64, right: f64, message: &str, args: &Args) -> pub async fn assert_gte(_exec_state: &mut ExecState, args: Args) -> Result { let (left, right, description): (f64, f64, String) = args.get_data()?; inner_assert_gte(left, right, &description, &args).await?; - args.make_null_user_val() + Ok(args.make_null_user_val()) } /// Check that a numerical value is greater than or equal to another at runtime, diff --git a/src/wasm-lib/kcl/src/std/convert.rs b/src/wasm-lib/kcl/src/std/convert.rs index 69e8729ff2..777eb0fe50 100644 --- a/src/wasm-lib/kcl/src/std/convert.rs +++ b/src/wasm-lib/kcl/src/std/convert.rs @@ -34,7 +34,7 @@ pub async fn int(_exec_state: &mut ExecState, args: Args) -> Result Result Result { + let tag: TagIdentifier = args.get_data()?; + let result = inner_segment_end(&tag, exec_state, args.clone())?; + + args.make_user_val_from_point(result) +} + +/// Compute the ending point of the provided line segment. +/// +/// ```no_run +/// w = 15 +/// cube = startSketchAt([0, 0]) +/// |> line([w, 0], %, $line1) +/// |> line([0, w], %, $line2) +/// |> line([-w, 0], %, $line3) +/// |> line([0, -w], %, $line4) +/// |> close(%) +/// |> extrude(5, %) +/// +/// fn cylinder = (radius, tag) => { +/// return startSketchAt([0, 0]) +/// |> circle({ radius: radius, center: segEnd(tag) }, %) +/// |> extrude(radius, %) +/// } +/// +/// cylinder(1, line1) +/// cylinder(2, line2) +/// cylinder(3, line3) +/// cylinder(4, line4) +/// ``` +#[stdlib { + name = "segEnd", +}] +fn inner_segment_end(tag: &TagIdentifier, exec_state: &mut ExecState, args: Args) -> Result<[f64; 2], KclError> { + let line = args.get_tag_engine_info(exec_state, tag)?; + let path = line.path.clone().ok_or_else(|| { + KclError::Type(KclErrorDetails { + message: format!("Expected a line segment with a path, found `{:?}`", line), + source_ranges: vec![args.source_range], + }) + })?; + + Ok(path.get_base().to) +} + /// Returns the segment end of x. pub async fn segment_end_x(exec_state: &mut ExecState, args: Args) -> Result { let tag: TagIdentifier = args.get_data()?; diff --git a/src/wasm-lib/kcl/tests/outputs/serial_test_example_segment_end0.png b/src/wasm-lib/kcl/tests/outputs/serial_test_example_segment_end0.png new file mode 100644 index 0000000000..f4a3e8c7ec Binary files /dev/null and b/src/wasm-lib/kcl/tests/outputs/serial_test_example_segment_end0.png differ