(vl-load-com) (defun vk_WriteTextStream_XML (Stream FileName Charset / ADODBStreamObj Result) (if (setq ADODBStreamObj (vlax-create-object "ADODB.Stream")) (progn (setq Result (vl-catch-all-apply (function (lambda () (vlax-put ADODBStreamObj "Charset" Charset) (vlax-invoke ADODBStreamObj "Open") (vlax-invoke-method ADODBStreamObj "WriteText" Stream 0) (vlax-invoke ADODBStreamObj "SaveToFile" FileName 2) ) ) ) ) (vlax-release-object ADODBStreamObj) (if (not (vl-catch-all-error-p Result)) FileName ) ) ) ) ;;;_____________________________________________________________________________________________________________ (defun c:Block*Text ( / RETLIST) ; Alle Text in den Blöcken (vlax-for BlocksItem (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object) ) ) (vlax-for Item BlocksItem (if (member (vla-get-Objectname Item)' ( "AcDbText" "AcDbMText" )) ; (setq RetList (cons (list (vla-get-name BlocksItem) (vla-get-Handle BlocksItem) Item (vla-get-Handle Item) (vla-get-TextString Item) ) RetList ) ) ) ) ) (setq Block*TextListe RetList) (princ "\nTextobjekte in Blöcken: ")(princ (length RetList ))(princ "\n")(princ) ) (defun c:Model*Text ( / RETLIST) ;alle Text im Modelbereich (setq ModelSpaceItem (vla-get-ModelSpace (vla-get-activedocument (vlax-get-acad-object) ) ) ) (vlax-for Item ModelSpaceItem (if (member (vla-get-Objectname Item)' ( "AcDbText" "AcDbMText" )) ; (setq RetList (cons (list (vla-get-name ModelSpaceItem) (vla-get-Handle ModelSpaceItem) Item (vla-get-Handle Item) (vla-get-TextString Item) ) RetList ) ) ) ) (setq Model*TextListe RetList ) (princ "\nModelbereichstextobjekte: ")(princ (length RetList ))(princ) ) (defun c:Paper*Text ( / RETLIST) ;alle Text im Papierbereich (setq PaperSpaceItem (vla-get-PaperSpace (vla-get-activedocument (vlax-get-acad-object) ) ) ) (vlax-for Item PaperSpaceItem (if (member (vla-get-Objectname Item)' ( "AcDbText" "AcDbMText" )) ; (setq RetList (cons (list (vla-get-name PaperSpaceItem) (vla-get-Handle PaperSpaceItem) Item (vla-get-Handle Item) (vla-get-TextString Item) ) RetList ) ) ) ) (setq Paper*TextListe RetList ) (princ "\nPapierbereichstextobjekte: ")(princ (length RetList ))(princ) ) (defun c:Textexport_XML ( / AUSWAHL excelFILE FILE INDEX Inhalt) (if (and (setq FILE (getfiled "TEXT-Export" "" "XML" 1 )) ;"C:\\" (getvar "dwgprefix") (setq excelFILE (strcat "\"" FILE "\"" )) ) (progn (c:Model*Text) (c:Paper*Text) (c:Block*Text) (setq Gesamt*TextListe (append Model*TextListe Paper*TextListe Block*TextListe )) (mapcar '(lambda (X) (if (= Inhalt nil ) (setq Inhalt (strcat " " (nth 0 X ) " " (nth 3 X ) " " (nth 4 X ) " \n" ) ) (setq Inhalt (strcat Inhalt " " (nth 0 X ) " " (nth 3 X ) " " (nth 4 X ) " \n" ) ) ) ) Gesamt*TextListe ) (setq Inhalt (strcat "\n\n" Inhalt "" )) (vk_WriteTextStream_XML Inhalt FILE "UTF-8" ) (command "shell" excelFILE ) ) ) ) (defun C:Textimport_XML ( / ) ;;; (c:cad_internet) (if (setq XMLfile (getfiled "TEXT-Import" (getvar "dwgprefix") "XML" 8 )) (progn (setq XMLListe (vk_ReadXML XMLfile ))) ) (setq ROW_laenge (vl-list-length (nth 2 (nth 1 XMLListe )))) (setq ROW_position ROW_laenge ) (repeat ROW_laenge (setq ROW_position (- ROW_position 1 ) ROW_zeile (nth 2 (nth ROW_position (nth 2 (nth 1 XMLListe )))) Handle_ (nth 2 (nth 1 ROW_zeile )) Wert_ (nth 2 (nth 2 ROW_zeile )) ) (Model*Text_Import Handle_ Wert_ ) (Paper*Text_Import Handle_ Wert_ ) (Block*Text_Import Handle_ Wert_ ) ) ) (defun Block*Text_Import ( Handle_ Wert_ / RETLIST) ; Alle Text in den Blöcken (vlax-for BlocksItem (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object) ) ) (vlax-for Item BlocksItem (if (= (vla-get-Handle Item) Handle_ ) ;vla-HandleToObject (vla-put-TextString Item Wert_ ) (princ) ) ) ) ) (defun Model*Text_Import ( Handle_ Wert_ / RETLIST) ;alle Text im Modelbereich (setq ModelSpaceItem (vla-get-ModelSpace (vla-get-activedocument (vlax-get-acad-object) ) ) ) (vlax-for Item ModelSpaceItem (if (= (vla-get-Handle Item) Handle_ ) ; (vla-put-TextString Item Wert_ ) (princ) ) ) ) (defun Paper*Text_Import ( Handle_ Wert_ / RETLIST) ;alle Text im Papierbereich (setq PaperSpaceItem (vla-get-PaperSpace (vla-get-activedocument (vlax-get-acad-object) ) ) ) (vlax-for Item PaperSpaceItem (if (= (vla-get-Handle Item) Handle_ ) ; (vla-put-TextString Item Wert_ ) (princ) ) ) ) (defun JH:list>file (symlist filename / fh) ;;; (c:cad_internet) ;Aufruf = (JH:list>file 'liste1 "datei1.lsp") oder (JH:list>file '(liste1 liste2) "datei1.lsp") (if (setq fh (open filename "w" ) ) (progn (foreach sym (if (listp symlist) symlist (list symlist )) (princ "(setq " fh ) (princ sym fh ) (foreach item (list (cons 'quote (list (eval sym )))) (prin1 item fh ) ) (princ ")" fh ) ) (close fh ) ) (princ"Datei konnte nicht geöffnet werden!\n") ) ) (defun vk_ReadXML ( FileName ;;; (xml-liste-auswerten) / Doc ;OutList *error* ) (if (and FileName ;;; (setq FileName (findfile FileName)) (setq Doc (vlax-create-object "MSXML.DOMDocument")) (not (vlax-put Doc "async" 0)) (if (= (vlax-invoke Doc "load" FileName) -1) t (prompt (strcat "\nError: " (vlax-get (vlax-get Doc "parseError") "reason") ) ) ) (= (vlax-get Doc "readyState") 4) ) (setq OutList (vk_XMLGetchildNodes (vlax-get Doc "firstChild"))) ) (and Doc (vlax-release-object Doc)) (gc) OutList ;;; starte mit ;;;(vk_ReadXML (getfiled "" "" "xml" 16)) ) (defun vk_XMLGetchildNodes (Node /) ;;; (vk_ReadXML) (princ (strcat "\n\n<< " (itoa (setq Modulzaehler (1+ Modulzaehler))) " \t<<<<<<<<<<<<<<<<<[Modul: vk_XMLGetchildNodes]>>>>>>>>>>>>>>>>>>>>>>>\n\n"))(princ) (if Node (if (= (vlax-get Node "nodeType") 3) (vlax-get Node "nodeValue") (cons (list (vlax-get Node "nodeName") (vk_XMLGetAttributes Node) (vk_XMLGetchildNodes (vlax-get Node "firstChild")) ) (vk_XMLGetchildNodes (vlax-get Node "nextSibling")) ) ) ) ) (defun vk_XMLGetAttributes ( Node ;;; (vk_XMLGetchildNodes) / Attributes Attribute OutList ) (princ (strcat "\n\n<< " (itoa (setq Modulzaehler (1+ Modulzaehler))) " \t<<<<<<<<<<<<<<<<<[Modul: vk_XMLGetAttributes]>>>>>>>>>>>>>>>>>>>>>>>\n\n"))(princ) (if (setq Attributes (vlax-get Node "attributes")) (progn (while (setq Attribute (vlax-invoke Attributes "nextNode")) (setq OutList (cons (cons (vlax-get Attribute "nodeName") (vlax-get Attribute "nodeValue") ) OutList ) ) (vlax-release-object Attribute) ) (vlax-release-object Attributes) (reverse OutList) ) ) )