; ---------------------------------------------------------------------------------------- ; Structure Browser ADD ON ; Copyright der_Wolfgang@Froum@Cad.de 06.sep.2007 ; enhance the info printed with WRITE tree function inside the structure browser ; in this case a CVS format is choosen to import the contents into a spreadsheet ; OSD V14.xx and newer (tested up to V15.50) ; ---------------------------------------------------------------------------------------- (in-package :my-tools) (use-package :oli) (defun cvs-print-tree (node name) (declare (ignore name)) (let* ((objname (BrowserNode-objPname node)) (path (BrowserNode-objPath node)) (obj (oli:sd-pathname-to-obj path)) ) (if (sd-string= "/" (BrowserNode-objPath node)) ",Name,Pfad,ModellName,Volumen,Dichte,Gewicht" ;; == CSV header line ;; else (if (and (sd-inq-part-p obj) (not (sd-inq-empty-part-p obj))) (progn (setq VOLUMEN (sd-call-cmds (get_vol_prop :for_part obj :part_asmb path :volume) :failure nil );sd-call-cmds );;setq VOLUMEN (setq dichte (sd-inq-part-density obj)) (format nil ",~A,~A,~A,~A,~A,~A" objname path (or (sd-inq-obj-contents-name obj) "(model name missing)") (sd-num-to-string (/ VOLUMEN 1000000)4) (sd-num-to-string (* 1000 dichte)2) (sd-num-to-string (* (/ VOLUMEN 1000) dichte)2)) ) ;; else (format nil ",~A,~A,~A,~A,~A,~A" objname path (or (sd-inq-obj-contents-name obj) "(model name missing)") 0 0 0) ) ) ;; end if root ) ) (sd-browser-add-interrogator "parcel-gbrowser" :interrogator-type :tree-print-name :interrogator-func 'cvs-print-tree) ;; here a very simple variant (when NIL (defun my-print-tree (node name) (declare (ignore name)) (format nil "~A -- ~A" (BrowserNode-objPname node) (or (sd-inq-obj-contents-name (sd-pathname-to-obj (BrowserNode-objPath node))) "(model name missing)") ) ) (sd-browser-add-interrogator "parcel-gbrowser" :interrogator-type :tree-print-name :interrogator-func 'my-print-tree) )