|
Lutz Uhlmann and I are happy and proud to announce the release
of a new large set of the LGEO parts and the supporting L3P.
Well, more than seven years since last release of L3P... what can I say?
During that time I have had several periods with concentrated development,
but then something else came up and the project went on hold.
Often I was close to a release, but there were always a few loose ends
that I wanted to finish.
Thinking about it now, it's really silly that I didn't make some smaller
releases, rather than waited for all parts to fall into place.
On the other hand, I quite happy that the v1.3 has proven to be
rather stable and useful, with only a few bugs.
In 2005 I was revising the LGEO support, and I realized that I couldn't
go on using the LGEO tab files. They lacked support for letter suffixes
in part file names and I decided to make a simple text file with all
the data needed by L3P to use the LGEO files.
I had it all working and I was going to release in September 2007,
but then I got an e-mail from Lutz Uhlmann talking about his plans
for the future of LGEO. So we agreed on a new text file format and
two new files (lg_elements.lst and lg_colors.lst) to replace the tab files.
I rewrote the LGEO support once more while Lutz kept adding more LGEO parts.
We had many fruitful discussions about closer integration of LGEO and L3P,
and we are proud to present the latest development.
The new LGEO files:
http://www.digitalbricks.org/
Because of the long development period I am releasing L3P as a BETA:
http://www.hassings.dk/l3/l3p14beta.html
Please test it thoroughly and report any errors to me.
L3P v1.4 does not support the old LGEO files, you'll need the new LGEO files.
Best regards
Lutz and Lars
-lgeo use LGEO parts and colors
--------------------------------
L3P needs to know where it can find the two files, lg_elements.lst and
lg_colors.lst, which contain info on the LGEO elements and colors.
The two files are located in the directory named lgeo.
L3P looks for the lgeo directory in this order:
1. The -lgd<dir> option
2. The LGEODIR environment variable
3. Key LgeoDirectory in section [LDraw] in an ldraw.ini file.
4. Finally a couple of typical locations on the disk are checked if they exist:
LDrawDir\lgeo
LDrawDir\Apps\lgeo
$HOME/Library/lgeo (MacOSX only)
/Library/lgeo (MacOSX only)
/usr/local/share/lgeo (Linux/MacOSX only)
-ar use Anton Raves parts and LGEO colors
------------------------------------------
Lutz has added support for POV files by Anton Raves. Read more in LGEO.pdf
in the lgeo directory.
You can use -lgeo and -ar together. In case a part has been made by both Lutz
and Anton, the order of the options does matter: the first option specified
decides which part to choose.
-nolgc[f] don't use LGEO colors [nor finishes]
-----------------------------------------------
When you use the -lgeo option, you can choose not to use the LGEO colors,
but rather the LDraw colors. The LGEO finishes are still used.
Specifying -nolgcf won't use the LGEO finishes either.
Colors from ldconfig.ldr
------------------------
The new default for color values is to use the definitions in ldconfig.ldr
located in the LDraw directory.
See LDraw.org Colour Definition Language Extension.
-ldc[<path>] alternative ldconfig.ldr or none
----------------------------------------------
The -ldc option lets you specify an alternative color config file.
L3P looks for the file in the current directory and in LDrawDir,
or you can give a full path.
Specifying -ldc without a file means "don't use any ldconfig.ldr file" and
use the old L3P colors.
Color options now also take name or #RRGGBB
-------------------------------------------
Because colors are named in ldconfig.ldr L3P will now accept color names in
options taking a <color>. For e.g. the background option -b<color> you can
in stead of -b15 specify -bWhite.
L3P now also accepts #RRGGBB as a color.
Thus <color> is an LDraw color name or number, extended/direct color
(0x0tRRGGBB), #RRGGBB or <r>,<g>,<b> in the range 0..1 like POV-Ray.
-ib<file> include file at beginning of POV file
------------------------------------------------
This option will put an include statement at the beginning of the POV file.
When specifying e.g. -ibmydef.inc L3P will add the following POV code
right after L3P's definitions:
//// IncludeFile AtBeginning
#include "mydef.inc"
Note that L3P merely outputs the above code; there is no check of the file.
You must make sure that POV-Ray can find the file by specifying
the necessary include path in POV-Ray.
-ie<file> include file at end of POV file
------------------------------------------
This option will put an include statement at the end of the POV file.
-ic[<file>] no camera, optional include file
---------------------------------------------
This option will replace the L3P camera section with an include statement.
Specifying -ic without a file will simply suppress L3P's camera code.
-il[<file>] no lights, optional include file
---------------------------------------------
This option will replace the L3P light section with an include statement.
Specifying -il without a file will simply suppress L3P's light code.
Many more primitives
--------------------
Several additional POV-Ray equivalents for primitive substitution
have been added: stud10.dat, stud6a.dat, 1-4chrd.dat, 1-6cyli.dat,
1-cyli.dat, 3-8cyli.dat, 1-4ccyli.dat, 3-4disc.dat, 3-4ndis.dat,
1-8ndis.dat, 1-8sphc.dat, axlehole.dat, axlehol4.dat, axlehol5.dat,
axlehol6.dat, axlehol7.dat, connect.dat, connect2.dat, connect3.dat,
connect4.dat, connect5.dat, arm1.dat, arm2.dat,
And for any N: 3-4rin[g]N.dat, 4-4rin[g]N.dat, 1-8rin[g]N.dat,
3-8rin[g]N.dat, 1-4conN.dat, 4-4conN.dat
And for any tube radius FFFF: t04iFFFF.dat, t04oFFFF.dat, t04qFFFF.dat
peghole.dat has been removed as it is covered by ring3.dat and 4-4cyli.dat.
LDrawDir revisited
------------------
One of the greatest hassles for users unfamiliar with the command
prompt / DOS has turned out to be setting the LDrawDir. Now L3P has
a wide range of ways to know the LDrawDir thanks to the LDrawIni library:
1. The -ldd<dir> option
2. The LDRAWDIR environment variable
3. Key BaseDirectory in section [LDraw] in an ldraw.ini file.
4. A number of typical locations on the disk is checked if they contain
subdirectories P and PARTS:
Windows MacOSX + Linux
C:\LDraw $HOME/LDRAW
$HOME/Library/LDRAW (MacOSX only)
/Library/LDRAW (MacOSX only)
/usr/local/share/LDRAW
5. Finally the current working directory is checked if it contain
subdirectories P and PARTS:
ldraw.ini or org.ldraw.plist
----------------------------
The ldraw.ini file is a Windows INI file containing configuration information.
An ldraw.ini file may look like this:
[LDraw]
BaseDirectory=C:\Lars\LDraw
LgeoDirectory=C:\Lars\LDraw\Apps\lgeo
[LDrawSearch]
1=<MODELDIR>
2=<HIDE><DEFPRIM><LDRAWDIR>\P
3=<DEFPART><LDRAWDIR>\PARTS
4=<LDRAWDIR>\MODELS
5=<DEFPART><LDRAWDIR>\UnOff\PARTS
6=<DEFPART>C:\My Own Parts
The LDrawIni library will search for an ldraw.ini file in a number of places,
the first one found is used:
1. The LDRAWINI environment variable
2. Windows MacOSX + Linux
%USERPROFILE%\LDraw.ini $HOME/Library/Preferences/org.ldraw.plist (Mac)
%ALLUSERSPROFILE%\LDraw.ini /Library/Preferences/org.ldraw.plist (Mac)
LDrawDir\LDraw.ini $HOME/.ldrawrc
%windir%\LDraw.ini $HOME/ldraw.ini
C:\Windows\LDraw.ini LDrawDir/LDraw.ini
/etc/ldraw.ini
On the Mac you may as indicated above alternatively use a Property list,
org.ldraw.plist, placed in Library/Preferences.
SearchDirs
----------
The default searching for parts used to be:
1. Inside the document if it is an MPD
2. The document's directory (the directory of the main model)
3. %LDRAWDIR%\P
4. %LDRAWDIR%\PARTS
5. %LDRAWDIR%\MODELS
where LDRAWDIR is the LDraw directory.
However, since L3P is now using the LDrawIni library, the search can be
defined by the user by specifying a number of SearchDirs.
A SearchDir is an absolute path to a directory containing LDraw files,
optionally prepended with some flags.
The search for parts/primitives will still begin inside the model document
if it is an MPD, but after that L3P uses SearchDirs specified as follows:
1. The LDRAWSEARCH environment variable. SearchDirs are separated with a
Vertical bar (|). You can set it to e.g.
"<MODELDIR>|<HIDE><LDRAWDIR>\P|<LDRAWDIR>\PARTS|<LDRAWDIR>\MODELS"
2. Environment variables LDRAWSEARCH01, LDRAWSEARCH02, etc.,
each containing a directory with optional flags.
3. Keys 1, 2, 3, etc. in section [LDrawSearch] in an ldraw.ini file.
4. If no SearchDirs setting is found the default is:
<MODELDIR>
<HIDE><LDRAWDIR>\P
<LDRAWDIR>\PARTS
<LDRAWDIR>\MODELS
Directory keywords
<LDRAWDIR> This keyword is substituted with the LDrawDir. Use it to specify
a search directory relative to the LDrawDir, e.g. <LDRAWDIR>/P.
<MODELDIR> This keyword is substituted with the directory of the model.
<HOMEDIR> This keyword is substituted with the environment variable
%USERPROFILE% on Windows and $HOME on MacOSX/Linux.
Use it to specify a search directory relative to the home
directory, e.g. <HOMEDIR>/MoreParts
Flag keywords
<SKIP> The search directory is skipped. Use it to un-comment a directory.
<HIDE> The directory is searched for files, but some editors may choose
not to show files from this directory in lists presented
to the user.
<SHOW> This keyword is ignored, as it is the default. However, you may
choose to use it as an explicit opposite of <HIDE>.
<DEFPART> Files found in this directory are considered as part files,
unless the header indicates otherwise.
<LDRAWDIR>/PARTS will automatically have <DEFPART> flags applied.
<DEFPRIM> Files found in this directory are considered as primitive files,
unless the header indicates otherwise.
<LDRAWDIR>/P will automatically have the <DEFPRIM> flags applied.
Improved LDraw file type detection
----------------------------------
An LDraw file is an LDraw file is an LDraw file. However, it is important for
L3P to know whether an LDraw file is a part file, because parts may be shrunk
a little to have seams between bricks. Until now LDraw files from the PARTS
directory were considered as parts, but this posed a problem with unofficial
parts placed in the MODELS directory and with parts embedded in MPD files.
Now L3P looks at the header of an LDraw file to detect the file type.
If header detection is not possible, then files froms the PARTS directory and
from a SearchDir marked with the <DEFPART> flag are considered parts.
-ldd<dir> set LDRAWDIR, <dir> must have the P, PARTS and MODELS directories
----------------------------------------------------------------------------
Override the normal settings for the LDraw directory and use <dir>.
-lgd<dir> set LGEODIR, <dir> must be the lgeo directory
--------------------------------------------------------
Override the normal settings for the LGEO directory and use <dir>. The lgeo
directory contains the files lg_elements.lst and lg_colors.lst and the
directories lg and ar.
-studs0 no studs
-----------------
Specify the -studs0 option to have a fast render without studs: At the
beginning of the POV file in the "//// Defines" section there is a line:
#declare L3Studs = 1; // 1=on 0=offwhich can be 0 if using the -studs0 option.
The parts generated by L3P test for L3Studs, e.g.
//// Part 3710.dat
#ifndef (_3710_dot_dat)
#declare _3710_dot_dat = #if (L3Quality = 0) box { <-40,-4,-10>, <40,8,10> }
#else union {
// Plate 1 x 4
// Name: 3710.dat
// Author: James Jessiman
// Original LDraw Part
#if (L3Studs)
object { stud3_dot_dat matrix <1,0,0,0,-1,0,0,0,1,20,4,0> }
object { stud3_dot_dat matrix <1,0,0,0,-1,0,0,0,1,0,4,0> }
object { stud3_dot_dat matrix <1,0,0,0,-1,0,0,0,1,-20,4,0> }
#end
object { box5_dot_dat matrix <36,0,0,0,-4,0,0,0,6,0,8,0> }
mesh {
triangle { <40,8,10>, <36,8,6>, <-36,8,6> }
triangle { <-36,8,6>, <-40,8,10>, <40,8,10> }
triangle { <-40,8,10>, <-36,8,6>, <-36,8,-6> }
triangle { <-36,8,-6>, <-40,8,-10>, <-40,8,10> }
triangle { <-40,8,-10>, <-36,8,-6>, <36,8,-6> }
triangle { <36,8,-6>, <40,8,-10>, <-40,8,-10> }
triangle { <40,8,-10>, <36,8,-6>, <36,8,6> }
triangle { <36,8,6>, <40,8,10>, <40,8,-10> }
}
object { box5_dot_dat matrix <40,0,0,0,-8,0,0,0,10,0,8,0> }
#if (L3Studs)
object { stud_dot_dat matrix <1,0,0,0,1,0,0,0,1,30,0,0> }
object { stud_dot_dat matrix <1,0,0,0,1,0,0,0,1,10,0,0> }
object { stud_dot_dat matrix <1,0,0,0,1,0,0,0,1,-10,0,0> }
object { stud_dot_dat matrix <1,0,0,0,1,0,0,0,1,-30,0,0> }
#end}
#end
#end // ifndef (_3710_dot_dat)
So if L3Studs is zero you can have a faster render if you just want
to have a rough sketch of the model.
See also the -q<n> Quality option.
-cra<a> camera roll angle
--------------------------
The camera will be tilted <a> degrees. Default is 0 degrees (no tilt).
The automatic camera positioning is still in effect.
You can change the camera roll angle later in the generated POV file by
changing the L3RollAngle variable.
-csky<x>,<y>,<z> camera sky vector
-----------------------------------
The camera will use this sky vector initially before aligning to the
look_at position. The default sky vector is 0,-1,0 (-y).
This option is intended for other programs controlling L3P.
If you want to tilt the camera use the -cra option in stead.
You can change the sky vector later in the generated POV file by changing
the L3Sky variable.
-cpct[<p>] percentage to move camera further back, default is 0
----------------------------------------------------------------
As described here it is often nice to move the camera a bit further away
to have some space around your model. Previously you could do that by
specifying a negative radius in the -cg option, or by modifying
the PCT variable in the generated POV file.
Now you can also do it directly using this option. And it also works
for the -cc option and for -cg with positive radius.
You can change further away percentage later in the generated POV file
by changing the L3PercentageBack variable (previously PCT).
-car<ar> camera aspect ratio
-----------------------------
The aspect ratio of the image will be <ar>. The default is 1.333 (4/3)
corresponding to images of e.g. 640x480 or 800x600.
If you change the aspect ratio to e.g. 1 you must remember to select an
equivalent image format e.g. 400x400, otherwise the image will look shrunk!
You can change the aspect ratio later in the generated POV file
by changing the L3AspectRatio variable.
-co[<s>] orthographic camera
-----------------------------
The camera will be orthographic rather than perspective.
You can optionally specify a scale factor <s>. However, this is intended
for other programs controlling L3P.
You can change the camera type later in the generated POV file
by changing the L3Orthographic variable.
Note that this is currently not working well or at all...
-csa<a> camera stereo angle
----------------------------
The default stereo camera angle is 5 degrees.
You can change the stereo camera angle later in the generated POV file
by changing the L3StereoAngle variable.
-csl left stereo camera
------------------------
L3P now generates the following stereo camera code:
#declare L3StereoAngle = 5; // degrees
//5 degrees corresponds to a distance between eyes (stereo cameras)
//of 1/12 of distance to model.
#declare L3StereoView = 0; // Normal view
//Uncomment either two lines below to make stereo images:
//#declare L3StereoView = -L3StereoAngle/2; // Left view
//#declare L3StereoView = L3StereoAngle/2; // Right view
This option removes the // for the left view above, so you don't have to
edit the generated POV file manually.
-csr right stereo camera
-------------------------
This option removes the // for the right view above, so you don't have to
edit the generated POV file manually.
-lsl shadowless lights
-----------------------
This option will add the POV keyword "shadowless" to the lights.
Bookmarks
---------
To increase readability of the L3P generated POV file and to help other
programs parsing the POV file I have added several bookmarks
at the beginning of each section in form of POV comments:
//// MegaPOV Enabling of MegaPOV
//// Defines All the #define statements
//// IncludeFile AtBeginning #include statement from -ib option
//// Finishes Definition of POV finish's
//// Macros Definition of macros
//// Textures for LGEO patterned parts Special textures for LGEO
//// Color 15 White Color definition
//// Color 15 White (from lg_color.inc) Color definition
//// Color 15 White (from ldconfig.ldr) Color definition
//// Color 257 Color definition
//// Color #02FFCC99 Color definition
//// Primitive stud.dat Primitive definition
//// Part 3001.dat Part definition
//// Submodel roof.ldr Submodel definition
//// Model car.ldr Model definition
//// ModelData Bounding box and floor data
//// Floor Floor definition
//// Background Background definition
//// Camera Camera definition
//// IncludeFile Camera #include statement from -ic option
//// Lights Lights definition
//// IncludeFile Lights #include statement from -il option
//// ModelObject car.ldr Reference of the model
//// Statistics Some statistics as comments
//// IncludeFile AtEnd #include statement from -ie option
//// End End of file
Please note that not all bookmarks may be present in a POV file.
L3P CAMERA_CALC meta command
----------------------------
On request from Dean Earley there is a new L3P meta command for ignoring
a section of the model file when calculating the camera position/angle,
but still render it in the final scene.
0 L3P CAMERA_CALC OFF
...
0 L3P CAMERA_CALC ON
Note, however, that it will only work in the main model file, since L3P
doesn't "walk the tree" and only uses the parts/subfiles referenced
directly from the model file for automatic camera positioning.
-cpa<a> co-planar-angle, default is 3 degrees (1 if -check)
------------------------------------------------------------
The LDraw Standard Committee (LSC) has devised a good co-planarity check:
"A quad (line type 4) must be planar, meaning that if it is split into
two triangles, both triangles will be co-planar with each other. There
are always two ways to split a quad into two triangles, and both must
result in co-planar triangles. The triangles are considered co-planar
if the angle between their surface normals is less than or equal to 3
degrees, however, an angle of less than 1 degree is strongly recommended".
The -cpa option lets you change the default maximum angle, which is 3 degrees.
Warnings are only printed if warning level is 1 or above.
If -check is specified, the default maximum angle is 1 degree.
The -cpa option replaces the old -det and -dist options.
-mp<v> MegaPOV version statement
---------------------------------
This option will enable MegaPOV. When specifying e.g. -mp1.2 L3P will add
the following POV code at the very beginning of the POV file:
//// MegaPOV
#version unofficial megapov 1.2;
// The above line of POV code must be included in every include file as well,
// not just the main POV file.
-scm StepClock only at steps in Model (not in submodels)
---------------------------------------------------------
The -sc option generates tests for the clock variable at steps in both
the model and in submodels.
Use the -scm option if you only want steps in the model.
L3P variables in the POV file renamed
-------------------------------------
To avoid conflict with any POV variables (identifiers) in include files,
the variables used by L3P are now prefixed with L3.
Here is a list of some old v1.3 names and new v1.4 names:
QUAL L3Quality
SW L3SW
STUDS L3Studs
BUMPS L3Bumps
BUMPNORMAL L3NormalBumps
AMB L3Ambient
DIF L3Diffuse
-q<n> quality level 0..4, default is 2
---------------------------------------
The Quality option now has a new level 4 which also adds studlogo
on Technic studs.
-b[<color>] background color, -b gives 0.3,0.8,1
-------------------------------------------------
The semantics of the -b option has changed. Previously a POV background
statement was always generated, the default color being black (<0,0,0>).
But since the POV default background color is black, the background
statement is now only generated when the -b[<color>] option is specified.
If you don't specify a color (only specifying -b)
then the L3P blue (<0.3,0.8,1>) will be used.
-pp print primitives, prints a list of the primitives having POV equivalents
-----------------------------------------------------------------------------
Executing "l3p -pp" prints a list of the LDraw primitives that the current
version of L3P can substitute with POV equivalents, see primitive substitution.
-pp -check check all primitives in P if they have a POV equivalent
-------------------------------------------------------------------
Executing "l3p -pp -check" prints a list of all primitives found in
LDrawDir/P and whether they have a POV equivalent or not:
-pc print known color names
----------------------------
Executing "l3p -pc" prints a list of the colors known by L3P.
Be sure to specify -pc after any -ldc[<path>] option.
The colors are printed in the syntax defined in
"LDraw.org Colour Definition Language Extension":
0 !COLOUR Black CODE 0 VALUE #212121 EDGE 8
0 !COLOUR Blue CODE 1 VALUE #0033B2 EDGE 0
0 !COLOUR Green CODE 2 VALUE #008C14 EDGE 0
0 !COLOUR Teal CODE 3 VALUE #00999F EDGE 0
0 !COLOUR Red CODE 4 VALUE #C40026 EDGE 0
...
0 !COLOUR TransBlack* CODE 32 VALUE #4D4D4D EDGE 0 ALPHA 128
0 !COLOUR Trans_Blue CODE 33 VALUE #0020A0 EDGE #002266 ALPHA 128
...
The asterisk (*) denotes that the color was not found in the ldconfig.ldr file,
but is an L3P default color.
Tip: execute "l3p -ldc -pc" to see all the original L3P colors.
LDraw lines as comments in the POV file
---------------------------------------
All LDraw lines of the model (and submodels) are passed to the POV file
as comments. This is for easier navigation in the POV file
as you can recognize the originating DAT lines.
It also enables you to restore a DAT file from a POV file.
Bug fixes in v1.4
-----------------
Problem with lights in submodels fixed, lights are now part of objects.
Problem with fallback color fixed (model with one element (colored))
Could not launch PovRay on file with spaces, added doublequotes
Only substitute parts/primitives, not other MPD members like 926.ldr
Support for filenames with spaces in LT1 and "0 FILE". Also support for
filenames in quotes like "new car.ldr".
|
|
Message has 10 Replies: | | Re: "LGEO" and "L3P v1.4 BETA 20080930"
|
| In lugnet.announce, Lars C. Hassing wrote: Thanks for the new version Lars! I'll post issue as I find them but this stuck out (...) For Windows, you should add the App Data directory for a searched location. Microsoft recommends and Vista security (...) (16 years ago, 3-Oct-08, to lugnet.cad)
| | | Re: "LGEO" and "L3P v1.4 BETA 20080930"
|
| Woot!! Woot!! Thanks! Does this affect L3PAO? Or does L3PAO still work OK with the new L3P? Did you add any new "-xxxx" that L3PAO does not have I guess is the main question. Ahui (16 years ago, 4-Oct-08, to lugnet.cad)
| | | L3PAO Update Status (Re: "LGEO" and "L3P v1.4 BETA 20080930")
|
| (...) I've been working the last couple of days to update L3PAO so that it will accommodate all of Lars' enhancements to L3P. It isn't fully-tested yet, but I figured I'd give everyone a look at the interface changes. I think I've incorporated all (...) (16 years ago, 9-Oct-08, to lugnet.cad, FTX) !
| | | Re: "LGEO" and "L3P v1.4 BETA 20080930"
|
| (...) Hi, very nice work, thanks for everything :-) I invoke l3p using OMake build scripts and the many command line switches it offers are fantastic. I have one question about LGEO: The part "Cockpit 4 x 11 x 2 _2/3", 6058.DAT, seems to be placed (...) (16 years ago, 19-Oct-08, to lugnet.cad)
| | | Re: "LGEO" and "L3P v1.4 BETA 20080930"
|
| (...) File: C:\Programme\LDraw\L...g_6157.inc Line: 16 File Context (5 lines): #ifdef(lg_6157) #else #declare lg_angle=atan2(LG_BR...TH/2-0.12, LG_BRICK_WIDTH-0. Parse Error: All #declares of float, vector, and color require semi-colon ';' at end if (...) (16 years ago, 31-Oct-08, to lugnet.cad)
| | | Re: "LGEO" and "L3P v1.4 BETA 20080930"
|
| File: C:\Programme\LDraw\L...g_6083.inc Line: 775 File Context (5 lines): } } #declare lg_6083_clear = merge Parse Error: Illegal character in input file, value is ffffffe2. *** Change "â #declare MIR = 0;" to "#declare MIR = 0;" *** w. (16 years ago, 31-Oct-08, to lugnet.cad)
| | | Re: "LGEO" and "L3P v1.4 BETA 20080930"
|
| Awesome! I totally missed this. A couple of requests: 1) An option to search for and "#include" L3P-generated parts instead of writing them all to the POV file. 2) Replace mesh objects with mesh2. Thanks for all the hard work! -Mike (16 years ago, 29-Nov-08, to lugnet.cad)
| | | Re: "LGEO" and "L3P v1.4 BETA 20080930"
|
| One additional suggestion I'd like to make is to, instead of writing the same data repeatedly over and over for each part, store the part data (matrix transformations and materials) in arrays and then traverse at the end of a file using loops. (...) (16 years ago, 3-Dec-08, to lugnet.cad)
|
19 Messages in This Thread:
- Entire Thread on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
|
|
|
|