\border is one of the edge creation operators. It allows user to define a new border edge. Border edges are displayed as black double width line. As other edge operators (for example \valley_fold cf. §) \border has mainly a pair of symbol parameters; they represent two vertices which are the extremities of the created edge. As others fold operators \border is opportunist. It only creates a new edge stored in the internal edge structure if there isn't yet an edge (whatever its type) defined with the same two vertices.
In fact, all line operators (except \cut cf. §) are built on the same scheme. They can take two additional parameters to indicate visual limit for each extremities of the line. Indeed, both first parameters represent the physical vertices limit of the new edge, but it is often useful to draw only a portion of the entire edge. Thus, you can imagine that a certain part of the line around of each extremity is hidden as if the line was defined shorter. We will see further that one can also draw a longer line than the real distance separating both vertices.
There are two different ways to express each extremity:
In the first case, an integer percentage is given as an extra parameter. If both limits are computed with percentages, \border operator ends with two integer values which respectively represent the part hidden around the first and second vertex. For example, suppose you want to make a pinch around the first point, you will set the first value (third parameter) to 0 and the second one (fourth parameter) to 80 or 90.
The second case presented above allows to easily define partial lines. Indeed, the goal is to hide a part of an edge but we want that new edge ends exactly on a particular edge (which often represents a paper layer). Finding which percentage of the total length it correspond is quite impossible. Line operators can thus take edges to indicate each extremity limit.
For both limit determination ways, the way to draw a new edge is the same. Knowing both real end vertices, Doodle computes the first and second limit according to the third and fourth parameter (integer or edge) and make a line between those computed points. This way, it is impossible to draw two parts of an unique edge, there is always just one line drawn for an edge.
If one uses negative percentage the drawn line is longer than the real one. Continuing our first example of the pinch, it's often useful to extend the line beyond the real end point to make the diagram clearer. In case the third parameter is not set to 0 but to -15 or -25.
Percentage and edge limits can be mixed into a same edge definition
(as shown in the third and fourth syntax form below).
There are two forms whether the edge limit concerns the first point or
the second one.
This operator should only appear within a step block.
\border(ab1, dc1); \border(ab3, dc3, -10, -10); % line longer than real one \border(ad2, bc2, [ab1, dc1], [ab3, dc3]);
\border(VERTEX_1, VERTEX_2); \border(VERTEX_1, VERTEX_2, V1_PERCENTAGE, V2_PERCENTAGE); \border(VERTEX_1, VERTEX_2, EDGE_1, V2_PERCENTAGE); \border(VERTEX_1, VERTEX_2, V1_PERCENTAGE, EDGE_2); \border(VERTEX_1, VERTEX_2, EDGE_1, EDGE_2);
VERTEX_1 Description : Indicates the first vertex of the segment. Type : Symbol, vertex identifier. Allowed values : Any vertex identifier previously defined. VERTEX_2 Description : Indicates the second vertex of the segment. Type : Symbol, vertex identifier. Allowed values : Any vertex identifier previously defined. V1_PERCENTAGE (optional) Description : Indicates the percentage of total edge length we have to left blank close to VERTEX_1. Type : Integer. Allowed values : Any value. Default value : 0. V2_PERCENTAGE (optional) Description : Indicates the percentage of total edge length we have to left blank close to VERTEX_2. Type : Integer. Allowed values : Any value. Default value : 0. EDGE_1 (optional) Description : Indicates the limit edge close to VERTEX_1. The blank part starts at VERTEX_1 and ends to the intersection between [VERTEX_1, VERTEX_2] and EDGE_1. Type : Edge, couple of vertex identifiers Allowed values : Any couple of vertex identifiers already defined. Physical edge is not mandatory. EDGE_2 (optional) Description : Indicates the limit edge close to VERTEX_2. The blank part starts at VERTEX_2 and ends to the intersection between [VERTEX_1, VERTEX_2] and EDGE_2. Type : Edge, couple of vertex identifiers Allowed values : Any couple of vertex identifiers already defined. Physical edge is not mandatory.