Tweaked doce generation.

This commit is contained in:
Revar Desmera 2019-05-10 04:02:58 -07:00
parent e946031d99
commit 4efb109863
3 changed files with 27 additions and 20 deletions

View file

@ -56,19 +56,19 @@ TOP = [ 0, 0, 1];
// Constant: ALLPOS // Constant: ALLPOS
// Description: Vector pointing right, back, and up. [1,1,1] // Description: Vector pointing right, back, and up. [1,1,1]
// Example(3D): Usage with `anchor` // Example(3D): Usage with `anchor`
// cuboid(20, anchor=ALLPOS); // cuboid(20, anchor=ALLPOS);
ALLPOS = [ 1, 1, 1]; // Vector pointing X+,Y+,Z+. ALLPOS = [ 1, 1, 1]; // Vector pointing X+,Y+,Z+.
// Constant: ALLNEG // Constant: ALLNEG
// Description: Vector pointing left, forwards, and down. [-1,-1,-1] // Description: Vector pointing left, forwards, and down. [-1,-1,-1]
// Example(3D): Usage with `anchor` // Example(3D): Usage with `anchor`
// cuboid(20, anchor=ALLNEG); // cuboid(20, anchor=ALLNEG);
ALLNEG = [-1, -1, -1]; // Vector pointing X-,Y-,Z-. ALLNEG = [-1, -1, -1]; // Vector pointing X-,Y-,Z-.
// Constant: CENTER // Constant: CENTER
// Description: Zero vector. Centered. [0,0,0] // Description: Zero vector. Centered. [0,0,0]
// Example(3D): Usage with `anchor` // Example(3D): Usage with `anchor`
// cuboid(20, anchor=CENTER); // cuboid(20, anchor=CENTER);
CENTER = [ 0, 0, 0]; // Centered zero vector. CENTER = [ 0, 0, 0]; // Centered zero vector.

View file

@ -29,18 +29,18 @@ function is_edge_array(v) = is_list(v) && is_vector(v[0]) && len(v)==3 && len(v[
// Usage: // Usage:
// edge(v); // edge(v);
// Description: // Description:
// Takes an edge set descriptor and returns the EDGE array representing those edges. // Takes an edge set descriptor and returns the edges array representing those edges.
// This function is useful for modules that take `edges` arguments, like `cuboid()`. // This function is useful for modules that take `edges` arguments, like `cuboid()`.
// An edge set descriptor can be any of: // An edge set descriptor can be any of:
// - A raw EDGE array. // - A raw edges array.
// - A vector pointing towards an edge, indicating just that edge. // - A vector pointing towards an edge, indicating just that edge.
// - A vector pointing towards a face, indicating all edges surrounding that face. // - A vector pointing towards a face, indicating all edges surrounding that face.
// - A vector pointing towards a corner, indicating all edges that meet at that corner. // - A vector pointing towards a corner, indicating all edges that meet at that corner.
// - The string "X", indicating all X axis aligned edges. // - The string `"X"`, indicating all X axis aligned edges.
// - The string "Y", indicating all Y axis aligned edges. // - The string `"Y"`, indicating all Y axis aligned edges.
// - The string "Z", indicating all Y axis aligned edges. // - The string `"Z"`, indicating all Y axis aligned edges.
// - The string "ALL", indicating all edges. // - The string `"ALL"`, indicating all edges.
// - The string "NONE", indicating no edges at all. // - The string `"NONE"`, indicating no edges at all.
function edge_set(v) = function edge_set(v) =
is_edge_array(v)? v : [ is_edge_array(v)? v : [
for (ax=[0:2]) [ for (ax=[0:2]) [
@ -87,21 +87,21 @@ function normalize_edges(v) = [for (ax=v) [for (edge=ax) edge>0? 1 : 0]];
// edges(v) // edges(v)
// edges(v, except) // edges(v, except)
// Description: // Description:
// Takes a list of edge set descriptors, and returns a normalized EDGE array // Takes a list of edge set descriptors, and returns a normalized edges array
// that represents all those given edges. If the `except` argument is given // that represents all those given edges. If the `except` argument is given
// a list of edge set descriptors, then all those edges will be removed // a list of edge set descriptors, then all those edges will be removed
// from the returned EDGE array. If either argument only has a single edge // from the returned edges array. If either argument only has a single edge
// set descriptor, you do not have to pass it in a list. // set descriptor, you do not have to pass it in a list.
// Each edge set descriptor can be any of: // Each edge set descriptor can be any of:
// - A raw EDGE array. // - A raw edges array.
// - A vector pointing towards an edge. // - A vector pointing towards an edge.
// - A vector pointing towards a face, indicating all edges surrounding that face. // - A vector pointing towards a face, indicating all edges surrounding that face.
// - A vector pointing towards a corner, indicating all edges touching that corner. // - A vector pointing towards a corner, indicating all edges touching that corner.
// - The string "X", indicating all X axis aligned edges. // - The string `"X"`, indicating all X axis aligned edges.
// - The string "Y", indicating all Y axis aligned edges. // - The string `"Y"`, indicating all Y axis aligned edges.
// - The string "Z", indicating all Y axis aligned edges. // - The string `"Z"`, indicating all Y axis aligned edges.
// - The string "ALL", indicating all edges. // - The string `"ALL"`, indicating all edges.
// - The string "NONE", indicating no edges at all. // - The string `"NONE"`, indicating no edges at all.
// Example: Just the front-top edge // Example: Just the front-top edge
// edges(FRONT+TOP) // edges(FRONT+TOP)
// Example: All edges surrounding either the front or top faces // Example: All edges surrounding either the front or top faces

View file

@ -52,10 +52,17 @@ def mkdn_esc(txt):
def get_comment_block(lines, prefix, blanks=1): def get_comment_block(lines, prefix, blanks=1):
out = [] out = []
blankcnt = 0 blankcnt = 0
indent = 0
while lines: while lines:
if not lines[0].startswith(prefix + " "): if not lines[0].startswith(prefix+" "):
break break
line = lines.pop(0)[len(prefix)+1:] line = lines.pop(0)[len(prefix):]
if not indent:
while line.startswith(" "):
line = line[1:]
indent += 1
else:
line = line[indent:]
if line == "": if line == "":
blankcnt += 1 blankcnt += 1
if blankcnt >= blanks: if blankcnt >= blanks: