curs
curs puts a composite edge, one that spans several blocks, on a 3D curve.
Syntax
curs imin jmin kmin imax jmax kmax curve
The arguments are those of cur: a region that is an edge and the number of a 3D curve that a curd defines before the part ends. The edge may run across more than one block. A 0 in a minimum means the first reduced index of its direction and a 0 in a maximum the last.
What it does
curs places every vertex of the edge, end vertices and the ones between, at the point of the curve closest to it. Each simple edge between two neighbouring vertices is then placed as cur would place it. One command thus carries a whole run of blocks onto the curve.
When James applies it
Step 2 of the hierarchy, as cur. curs is legal only in the Part phase.
Rules James adds
- The region must be an edge and the curve must exist, as for
cur. - A spacing command can spread the nodes of the whole composite edge only if the closest points run in one direction along the curve, forward or backward. Where the direction turns, James stops with a geometry error that names the vertex.
- An
insprtrenumbers an earliercurslike any command, so the edge still spans its whole length and the inserted vertex lies on the curve. Acurswritten after theinsprtreads the new numbering and spans the extra partition.
Diagnostics
- E0600: the region is not an edge.
- E0601: the curve number is not defined.
- E0102: a reduced index lies outside the part.
- E0106: a minimum is larger than its maximum.
Example
The script tests/corpus/175-curs-composite-edge/input.tg, which make test runs:
c curs places an edge that spans two blocks on curve 1 in one command.
curd 1 lp3 0 0 0 1 0.3 0 2 0 0;;
block 1 4 7;1 3;1 2;0 1 2;0 1;0 1;
curs 1 1 1 3 1 1 1
endpart
The i list has three entries, so the part has two blocks in i and the edge 1 1 1 3 1 1 spans both. The mesh has its seven nodes on the polyline. The end vertices lie at (0, 0, 0) and (2, 0, 0), and the vertex on the middle partition lies at its closest point on the curve, (0.9174, 0.2752, 0).