AutoCAD and HTML - Page
II
This time we're going to have a look
at creating an HTML file that lists a directory of DWF drawings using
AutoLisp. To select the DWF files and the relevant directory, we are
going to make use of a very powerful DosLib function "dos_filem."
Oh, before I forget, you will need to have the DosLib library installed
on your workstation. If you don't have DosLib, you can download the
latest version from Robert McNeel &
Associates.
I'd like to thank Andy
Canfield(Cornbread) for his ideas and input into this routine. Andy
wrote about 90% of this program and in fact, gave me the initial idea
for this article. I've changed a couple of things and tidied it up for
publishing, but Andy did the major work. Any errors or typos are from my
desk.
Right, enough waffle, lets get on with it. Copy and paste this into
Notepad and then save it as "Dwf-Html.lsp."
(defun C:Dwf-Html ( / flag
thelist thedir nfiles thefile fn ctr dname)
;set the flag
(setq flag T)
;check Doslib is loaded
(if (not (member "doslib2k.arx" (arx)))
(progn
(if (findfile "doslib2k.arx")
(arxload "doslib2k")
(progn
(alert "DosLib not
installed")
(setq flag nil)
);progn
);if
);progn
);if
;if DosLib is installed and loaded
(if flag
;do
the following
(progn
;select the DWF files
(setq thelist (dos_getfilem "Select
Drawings"
"C:\\" "DWF Files (*.dwf)|*.dwf"))
;retrieve the directory
(setq thedir (car thelist))
;retrieve the file names
(setq thelist (cdr thelist))
;get the number of files
(setq nfiles (length thelist))
;create the HTML file
(setq thefile (strcat thedir "Dwf-Html.html"))
;open the HTML file
(setq fn (open thefile "w"))
;write the header information
(write-line "<html><head>
<title>AutoCAD and HTML</title>
</head><body>" fn)
;give it a title
(write-line "<h1>AutoCAD and
HTML</h1><hr>" fn)
;set the counter
(setq ctr 0)
;start the loop
(repeat nfiles
;get the
drawing name
(setq dname (nth ctr thelist))
;create the
HTML link
(write-line (strcat "<a
href =" "\""
thedir dname "\"" ">" thedir dname
"
</a><br>") fn)
;increment
the counter
(setq ctr (1+ ctr))
);end repeat
;write the HTML footer
(write-line "<hr><h3>Brought to you by
CAD Encoding</h3>
</body></html>" fn)
;close the file
(close fn)
;inform the user
(alert (strcat "File saved as" "\n"
thedir "Dwf-Html.html"))
);progn
);if flag
;finish clean
(princ)
);defun
;load clean
(princ)
|
Now, load and run this routine.
A file dialog will appear. Choose the directory your DWf files are
located in, and then select the DWF files you would like listed in the
HTML report.
The HTML file will be created and stored in the same directory as your
DWF files and will be named "Dwf-Html.html." Open this file in
your browser. You should have a list of links to all the DWF files you
selected.
As I mentioned earlier, we make use of
the DosLib function "dos_filem" to allow the user to
select the DWF files that he/she/it wants to process.
The "dos_filem" function displays
a file open dialog box that allows for multiple file selection. The
function returns a list of filenames if successful. The first element of
the list is a qualified path to the selected
directory. eg.
(setq thedir (car thelist))
returns the file directory and
(setq thelist (cdr thelist))
returns a list of file names. Do
yourself a favour and read the help file that comes with DosLib as
you'll find a lot of useful functions that will make your AutoLisp
coding a lot easier.
Right, now let's have a look at doing
something with HTML using Visual Lisp.
|