回望南山
记忆痕迹可以鲜明, 回望往事如数家珍——
posts - 177,  comments - 54,  trackbacks - 0

 

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 深藏记忆 阅读(258) 评论(0)  编辑  收藏 所属分类: 舶来备忘转载Vlisp

飘过是缘,相识最真

订阅到抓虾
google reader
gougou


点击这里给我发消息


<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿(5)

随笔分类

随笔档案

文章分类

文章档案

相册

收藏夹

八面来息

天天充电

同行者

积分与排名

  • 积分 - 58689
  • 排名 - 61

最新评论

阅读排行榜

评论排行榜