(defun c:l2x () (vl-load-com) (setq *modelspace* (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)) ) ) (setq *layers* (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)) ) ) ;;Get the Layers Collection in the current drawing (setq chekCountProperty (vlax-property-available-p *layers* 'count)) ;;Chek if the count property is available by the *layers* object (if (= chekCountProperty T) (progn (setq numbLayers (vlax-get-property *layers* 'count)) ;;Get the number of layers in this drawing (setq chekItemMethod (vlax-method-applicable-p *layers* 'item)) ;;Chek if the item method is supported by the *layers* object (if (= chekItemMethod T) (progn (init-excel) ;;Start excel (init-app) (setq count 0) (while (< count numbLayers) (progn (setq *layerobject* (vlax-invoke-method *layers* 'item count) ) (setq newrow (+ count 2)) (setq *name* (vlax-get-property *layerobject* 'name)) (write-row-column newrow 1 *name*) (setq *layeron* (vlax-get-property *layerobject* 'layeron) ) (write-row-column newrow 2 (true-or-false *layeron*)) (setq *freeze* (vlax-get-property *layerobject* 'freeze)) (write-row-column newrow 3 (true-or-false *freeze*)) (setq *lock* (vlax-get-property *layerobject* 'lock)) (write-row-column newrow 4 (true-or-false *lock*)) (setq *color* (vlax-get-property (vlax-get-property *layerobject* 'truecolor) 'colorindex ) ) (write-row-column newrow 5 (itoa *color*)) (setq *linetype* (vlax-get-property *layerobject* 'linetype) ) (write-row-column newrow 6 *linetype*) (setq *lineweight* (vlax-get-property *layerobject* 'lineweight ) ) (write-row-column newrow 7 (itoa *lineweight*)) (setq *plotstylename* (vlax-get-property *layerobject* 'plotstylename ) ) (write-row-column newrow 8 *plotstylename*) (setq *plottable* (vlax-get-property *layerobject* 'plottable) ) (write-row-column newrow 9 (true-or-false *plottable*)) (setq *viewportdefault* (vlax-get-property *layerobject* 'viewportdefault ) ) (write-row-column newrow 10 (true-or-false *viewportdefault*) ) (setq *description* (vlax-get-property *layerobject* 'description ) ) (write-row-column newrow 11 *description*) (setq ssobjects (ssget "x" (list (cons 8 *name*)))) (if (/= ssobjects nil) (setq numbObjects (sslength ssobjects)) (setq numbObjects 0) ) (write-row-column newrow 12 (itoa numbObjects)) (setq count (1+ count)) ) ) ) ) ) ) ) (alert "Type [l2x] in the command line\n\nAuthor: Pedro Ferreira\nweb page: http://pwp.netcabo.pt/pedro_Ferreira\n\nTHIS PROGRAM IS PROVIDED \"AS IS\" AND WITH ALL FAULTS.\n\nPress OK to continue.\n\n**Excel must be installed on the computer!**" ) ;;;-------------------;;; (defun init-excel (/ excel-app wb-collection workbook sheets sheet1) (setq excel-app (vlax-get-or-create-object "excel.application")) (setq wb-collection (vlax-get excel-app "workbooks")) (setq workbook (vlax-invoke-method wb-collection "add")) (setq sheets (vlax-get workbook "sheets")) (setq sheet1 (vlax-get-property sheets "item" 1)) (setq *excel-cells* (vlax-get sheet1 "cells")) (vlax-put excel-app "visible" 1) ) ;;;-------------------;;; (defun write-row-column (row col x) (vlax-put-property *excel-cells* "item" row col (vl-princ-to-string x) ) ) ;;;-------------------;;; (defun init-app () (write-row-column 1 1 "Layer Name") (write-row-column 1 2 "Layer On") (write-row-column 1 3 "Layer Freeze") (write-row-column 1 4 "Layer Lock") (write-row-column 1 5 "Layer Color") (write-row-column 1 6 "Layer Linetype") (write-row-column 1 7 "Layer Lineweight") (write-row-column 1 8 "Layer Plot Style") (write-row-column 1 9 "Layer Plottable") (write-row-column 1 10 "Layer New VP Freeze") (write-row-column 1 11 "Layer Description") (write-row-column 1 12 "Number of Objects in this Layer") ) ;;;-------------------;;; (defun true-or-false (bool) (if (= bool :vlax-true) (setq bool "True") (setq bool "False") ) )