[LSC] Ambiguities in the draft BFC spec

William Howard william at howard-family.fsworld.co.uk
Thu Oct 12 09:58:18 EDT 2006


I'm using the term ambiguity to mean a difference in interpretation of the
spec amoung 2 or more people.

The following two ambiguities *HAVE* occured in the Parts Library, either by
authors using them or tools used by authors adding them.  The difference in
interpretation has been flagged by Reviewers holding the files.

1) The draft specification gives the syntax of the BFC meta-command as
    0 BFC [CERTIFY|NOCERTIFY] [CLIP|NOCLIP] [CW|CCW] [INVERTNEXT]
and there is an ambiguity here in that the syntax *permits* the construct
    0 BFC CERTIFY INVERTNEXT
but this is generally considered wrong (albeit not by one tool author)

2) While the draft specification permits the winding to change direction
through the file
    "There may be any number of changes to the winding direction in a file,
     although it is recommended that changes to winding be kept to a
minimum."
there have been parts on the tracker held for this reason.


To address point 1, I would like to see the syntax definition changed to
    0 BFC NOCERTIFY
    0 BFC CERTIFY [CW|{CCW}]
    0 BFC [CLIP|NOCLIP] [CW|CCW] [INVERTNEXT]
where [] indicates an optional item and {} the default value


This makes the set of valid BFC meta-commands as follows (ignoring order of
options)
  0 BFC NOCERTIFY
  0 BFC CERTIFY
  0 BFC CERTIFY CW
  0 BFC CERTIFY CCW

  0 BFC
  0 BFC INVERTNEXT
  0 BFC CW
  0 BFC CW INVERTNEXT
  0 BFC CCW
  0 BFC CCW INVERTNEXT

  0 BFC CLIP
  0 BFC CLIP INVERTNEXT
  0 BFC CLIP CW
  0 BFC CLIP CW INVERTNEXT
  0 BFC CLIP CCW
  0 BFC CLIP CCW INVERTNEXT

  0 BFC NOCLIP
  0 BFC NOCLIP INVERTNEXT
  0 BFC NOCLIP CW
  0 BFC NOCLIP CW INVERTNEXT
  0 BFC NOCLIP CCW
  0 BFC NOCLIP CCW INVERTNEXT

So, are all of these variations necessary/desirable?

What does "0 BFC" mean (it's valid syntax, so it must mean something)?

Do we need to explicity state that the CERTIFY/NOCERTIFY variants of the BFC
meta-commands  must occur before any "Operational Command-Lines"?

And what to do about point 2?  If rendering tools can cope with changes in
winding within a file should we care if parts are singularly wound?

William




More information about the LSC mailing list