IMHO we can do a further step ahead...
It is quite simple to do a converter DAT->XML and XML->DAT if we have a well-defined XML document definition, an XSD file that define tags, structure, types and limits/bounds for parameters (for non-developers).
Tags can be optional, have attributes, etc.
Example:
We can maintain a pure DAT library for backward compatibility and use new XML format for new/improved library. Parser will be really easy to do, and a converter XML->DAT will automatically add/update parts for old format.
As usual, this is brainstorming ;-)
Mario
It is quite simple to do a converter DAT->XML and XML->DAT if we have a well-defined XML document definition, an XSD file that define tags, structure, types and limits/bounds for parameters (for non-developers).
Tags can be optional, have attributes, etc.
Example:
Code:
<dat type="official" ldrawid="3001.dat">
<description>
Brick 2x4
</description>
<author name="john smith" email="[email protected]" />
<keywords>
<kw name="brick" />
<kw name="original parts" />
</keywords>
...
<connections>
<conn type="stud" base="x,y,z" vector="xv,yv,zv" offset="xo,yo,zo" />
...
</connections>
<primitives>
<triangle v1="x,y,z" v2="x1,y1,z1" v3="x2,y2,z2" />
<ref color="4" part="stud.dat" place="x,y,z" matrix="a,b,c,d,e,f,g,h,i" />
<line type="edge" v1="x,y,z" v2="x1,y1,z1" />
<line v1="x,y,z" v2="x1,y1,z1" />
<quad argbcolor="a0ff00c0" normal="xn,yn,zn" v1="x,y,z" v2="x1,y1,z1" v3="x2,y2,z2" v4="x3,y3,z3" />
<auxline .....
</primitives>
We can maintain a pure DAT library for backward compatibility and use new XML format for new/improved library. Parser will be really easy to do, and a converter XML->DAT will automatically add/update parts for old format.
As usual, this is brainstorming ;-)
Mario