Time for another wee bit of a break for me. By sleuth of hand and the use of threats to various appendages stuck on his body, I finally conned someone else into writing the next section for me. Say hi to David Stein everyone, ("Hi Dave!!")
If you don't know Dave, well he is the gentleman responsible for "DSX Tools" and the "Visual Lisp Bible." You can find his new permanent home at http://www.dsxcad.com. Pop along as it's well worth the visit. (just check for your wife and wallet when you leave.)
Okey dokey. Dave is the author of this nice little program written using Visual Lisp that will not only write the Layer Names to an HTML file, but will also write the Layer properties and status. Let's have a look at the coding.
Copy and paste this into Notepad and save it as "DumpLayers.lsp."
;; This example involves the task of producing an HTML report of all
;; layers in the current drawing, including their properties (color, linetype, etc.)
;; and opening the report in a web browser after completion.
;; When loaded, the command is DUMPLAYERS.
(defun C:DUMPLAYERS
( / acad doc dwg layers name col ltp lwt pst onoff frz dat
path olist outfile output)
;load the VL extensions
(vl-load-com)
;get reference to AutoCAD
(setq acad (vlax-get-acad-object)
;reference the drawing
doc (vla-get-activedocument acad)
;get the drawing name
dwg (vla-get-name doc)
;get the drawing path
path (vla-get-path doc)
;get the layers cpllection
layers (vla-get-layers doc)
);setq
;process each layer
(vlax-for each layers
;get the layer name
(setq name (vla-get-name each)
;get the layer color
col (itoa (vla-get-color each))
;get the linetype
ltp (vla-get-linetype each)
;get the lineweight
lwt (itoa (vla-get-lineweight each))
;get the plotstyle
pst (vla-get-plotstylename each)
;on-off status
onoff (if (= :vlax-true (vla-get-layeron each))
"ON" "OFF")
;frozen-thawed status
frz (if (= :vlax-true (vla-get-freeze each))
"FROZEN" "THAWED")
;list them
dat (list name col ltp lwt pst onoff frz)
;add to main list
olist (cons dat olist)
);setq
); vlax-for
;release all objects
(vlax-release-object layers)
(vlax-release-object doc)
(vlax-release-object acad)
;create the HTML file
(cond
( olist
(setq outfile (strcat (vl-filename-base dwg) ".htm"))
(setq outfile (strcat path outfile))
(cond
( (setq output (open outfile "w"))
(write-line "<html>" output)
(write-line "<head><title>" output)
(write-line (strcat "Layer Dump: " dwg) output)
(write-line "</title></head><body>" output)
(write-line (strcat "<b>Drawing: " dwg "</b><br>") output)
(write-line "<table border=1>" output)
(foreach layset olist
(write-line "<tr>" output)
(foreach prop layset
(write-line (strcat "<td>" prop "</td>") output)
)
(write-line "</tr>" output)
); foreach layer set
(write-line "</table></body></html>" output)
(close output)
(setq output nil)
;inform the user
(princ "\nReport finished! Opening in browser...")
;open the HTML report in the browser
(vl-cmdf "_.browser" outfile)
)
( T (princ "\nUnable to open output file.") )
)
)
( T (princ "\nUnable to get layer table information.") )
)
);defun
(princ) |
Load and run this routine. The HTML file should automatically open in your browser.
Hey, is that not nice? All your layers, layer properties and status all nicely tabulated in a report! By the way, if you are not very clued up on Visual Lisp, there are a whole set of Tutorials posted on AfraLisp that you can use to familiarise yourself with this powerful addition to the AutoLISP language.
Okay, one more page to go. (phew.)
Now let's look at AutoCAD and HTML using Visual Basic. (Oooh, I can hear you say.)
posted on 2008-03-29 21:00
深藏记忆 阅读(269)
评论(0) 编辑 收藏 所属分类:
舶来备忘 、
转载Vlisp