meta data for this page
Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
en:design_guide_path [2020/12/04 05:52] JSCAD Editor |
en:design_guide_path [2022/04/13 12:44] (current) rozek included "require" statements, corrected mistakes |
||
---|---|---|---|
Line 4: | Line 4: | ||
<code javascript> | <code javascript> | ||
- | let mypathA = line([[10, 10], [-10, 10]]) | + | const { line } = require(' |
- | let mypathB = line([[-10, -10], [10, -10]]) | + | const { path2 } = require(' |
- | mypath = path2.concat(mypathA, | + | |
+ | const mypathA = line([[10, 10], [-10, 10]]) | ||
+ | const mypathB = line([[-10, -10], [10, -10]]) | ||
+ | let mypath = path2.concat(mypathA, | ||
mypath = path2.close(mypath) | mypath = path2.close(mypath) | ||
</ | </ | ||
Line 12: | Line 15: | ||
In addition, a path can be open or closed. An open path is typically used to create another by appending additional points. A closed path is final, and has a line segment between first and last points. | In addition, a path can be open or closed. An open path is typically used to create another by appending additional points. A closed path is final, and has a line segment between first and last points. | ||
- | Curved paths can also be simulated. Paths can be created as an '' | + | The 'path2' |
<code javascript> | <code javascript> | ||
- | let mypath = line([[27, -22], [27, 22]]) | + | const { path2 } = require(' |
- | mypath = path2.appendArc({endPoint: | + | |
- | mypath | + | |
</ | </ | ||
- | === Append Points | + | === Curved Paths === |
- | Append | + | Curved paths can also be simulated. Paths can be created as an ' |
+ | |||
+ | {{ : | ||
+ | |||
+ | The ' | ||
+ | |||
+ | Defaults: | ||
+ | * center : [0, 0] | ||
+ | * radius : 1 | ||
+ | * startAngle : 0 | ||
+ | * endAngle : PI * 2 | ||
+ | * segments : 32 | ||
<code javascript> | <code javascript> | ||
- | let mypath = line([[27, -22], [27, 22]]) | + | const { arc } = require(' |
- | mypath | + | |
- | mypath = path2.close() | + | const mypath = arc({radius: |
+ | const mypath = arc({center: | ||
+ | </ | ||
+ | |||
+ | === Appending Points === | ||
+ | |||
+ | Any number of points can be appended to a path, which produces a new path. | ||
+ | |||
+ | <code javascript> | ||
+ | const { path2 } = require(' | ||
+ | const { line } = require(' | ||
+ | |||
+ | const mypath = line([[27, -22], [27, 22]]) | ||
+ | const newpath | ||
</ | </ | ||
- | === Append | + | An ' |
- | Append a series of points to the given geometry that simulate an arc. | + | Defaults: |
+ | * radius : [0, 0] | ||
+ | * clockwise : false | ||
+ | * large : false | ||
+ | * segments : 32 | ||
//Note: This implementation follows the SVG specifications.// | //Note: This implementation follows the SVG specifications.// | ||
+ | <code javascript> | ||
+ | const { path2 } = require(' | ||
+ | let p1 = path2.create([[10, | ||
+ | p1 = path2.appendPoints([[27.5, | ||
+ | p1 = path2.appendArc({endpoint: | ||
+ | </ | ||
+ | In addition, ' | ||
- | === Append | + | The ' |
- | Append a series of points to the given path that simulates a Bezier curve. The Bézier curve starts at the last point in the given path, and ends at the last control point. The other control points are intermediate control points to transition the curve from start to end points. The first control point may be ' | + | //Note: This implementation follows |
<code javascript> | <code javascript> | ||
- | let p5 = path2.create({}, [[10, | + | const { path2 } = require(' |
- | p5 = path2.appendBezier({controlPoints: | + | |
+ | let p5 = path2.create([[10, | ||
+ | p5 = path2.appendBezier({controlPoints: | ||
p5 = path2.appendBezier({controlPoints: | p5 = path2.appendBezier({controlPoints: | ||
</ | </ | ||
Line 56: | Line 94: | ||
<code javascript> | <code javascript> | ||
+ | const { geom2, path2 } = require(' | ||
+ | const { line } = require(' | ||
+ | |||
// create a closed path in shape of triangle | // create a closed path in shape of triangle | ||
- | let mypath = line([[10, 10], [-10, 10], [-10, -10], [10, 10]]) | + | const mypath = line([[10, 10], [-10, 10], [-10, -10], [10, 10]]) |
- | let myshape = geom2.fromPoints(path2.toPoints(mypath)) | + | const myshape = geom2.fromPoints(path2.toPoints(mypath)) |
</ | </ | ||
- | Second, a path can be expanded into a two dimensional shape. The result is a shape that fits around the path. The path can be either open or closed. | + | Second, a path can be expanded into a two dimensional shape. The result is a two dimensional |
<code javascript> | <code javascript> | ||
// create an open path in shape of L | // create an open path in shape of L | ||
- | let mypath = line([[10, 10], [-10, 10], [-10, -10]]) | + | const { expand } = require(' |
- | let myshape = expand({delta: | + | const { line } = require(' |
+ | |||
+ | const mypath = line([[10, 10], [-10, 10], [-10, -10]]) | ||
+ | const myshape = expand({delta: | ||
</ | </ | ||
=== Conversion to 3D Shape === | === Conversion to 3D Shape === | ||
- | Hint: Any two dimensional | + | Two dimensional |
+ | |||
+ | <code javascript> | ||
+ | const { path2 } = require(' | ||
+ | const { extrudeLinear } = require(' | ||
+ | |||
+ | // create a closed path in shape of triangle | ||
+ | const mypath = path2.fromPoints({ closed: true }, [[0, 0], [12, 0], [6, 10]]) | ||
+ | // extrude into triangular prism | ||
+ | const myshape = extrudeLinear({ height: 15 }, mypath) | ||
+ | </ |