(in-package :custom) (use-package :oli) ;;*************************************************************************** ;; BROWSER-Spaltendefinitionen * ;**************************************************************************** (sd-create-column-definition :contents-density :title "Basisdichte" :alignment :right :display-fnc 'browser-display-contents-density :applicable-fnc 'applicable-density-p :edit-fnc nil ;; not editable ) (sd-create-column-definition :instance-density :title "Expl-Dichte" :alignment :right :display-fnc 'browser-display-instance-density :applicable-fnc 'applicable-density-p :edit-fnc nil ;; not editable ) (oli:sd-create-column-definition :geo-resolution :title "Geo AuflÎsung" :alignment :right :display-fnc 'display-geo-resolution :applicable-fnc 'applicable-geo-resolution-p :edit-fnc nil ;; not editable ) (sd-create-column-definition :visible-parts :title "eingeblendete Teile/Baugpuppen" :display-fnc 'browser-display-visible-parts-fnc :applicable-fnc nil :edit-fnc nil ;; not editable ) (sd-create-column-definition :part-type :title "Teileart" :display-fnc 'browser-detect-part-type-fnc :applicable-fnc nil :edit-fnc nil ;; not editable ) ;;*************************************************************************** ;; BROWSER-Views * ;**************************************************************************** (oli:sd-create-browser-view "ATTRIBUTES" :tree-config '(:instance-name) :detail-config '(:contents-name :instance-density :contents-density :geo-resolution :part-type) :title "Eigenschaften" ) ;;*************************************************************************** ;; BROWSER-Such/Filterfunktionen * ;**************************************************************************** (oli::sd-create-browser-search "parcel-gbrowser" :name "sichtbare-Teile" :title "sichtbare Teile/BGR" :case-sensitive nil :match :all :criteria '((:column :visible-parts :operation :equals :value "JA") ) ) ;;*************************************************************************** ;; FUNCTIONS * ;*************************************************************************** (defun browser-display-contents-density (node) (let ((node-item (sd-pathname-to-obj (BrowserNode-objPath node)))) (if (sd-inq-part-p node-item) (oli:sd-num-to-string (oli::sd-sys-to-user-units :density (sd-inq-part-density node-item :contents))) "n/a" ) );let ) (defun browser-display-instance-density (node) (let ((node-item (sd-pathname-to-obj (BrowserNode-objPath node)))) (if (and (sd-inq-part-p node-item) (sd-inq-part-density node-item :instance)) (oli:sd-num-to-string (oli::sd-sys-to-user-units :density (sd-inq-part-density node-item :instance))) "n/a" ) );let ) (defun applicable-density-p (node) (let ((sel-item (oli::sd-pathname-to-obj (oli::BrowserNode-objPath node)))) (when sel-item (oli:sd-inq-part-p sel-item)) ) ) (defun browser-display-name (node) (let ((node-item (sd-pathname-to-obj (BrowserNode-objPath node)))) (if (sd-inq-obj-contents-name node-item) (sd-inq-obj-contents-name node-item) (sd-inq-obj-basename node-item) ) );let ) (defun display-geo-resolution (node) (let ((sel-item (oli::sd-pathname-to-obj (oli::BrowserNode-objPath node)))) (if sel-item (if (oli:sd-inq-part-geo-resolution sel-item) ; neue Teile haben noch keine GEO-Auflösung! (oli:sd-num-to-string (oli:sd-inq-part-geo-resolution sel-item)) "n/a" ) "n/a" ) ) ) (defun applicable-geo-resolution-p (node) (let ((sel-item (oli::sd-pathname-to-obj (oli::BrowserNode-objPath node)))) (when sel-item (oli:sd-inq-part-p sel-item)) ) ) (defun browser-display-visible-parts-fnc (node) (let (ret_val obj-visible parent-obj-visible) ; (display (BrowserNode-objPath node)) (setf ret_val "") (setf obj-visible (sd-inq-vp-drawlist-member-p (sd-inq-current-vp) (sd-pathname-to-obj (BrowserNode-objPath node))) ) ; Vaterobjekt muss exisiteren (oberste Baugruppe!) (if (sd-inq-parent-obj (sd-pathname-to-obj (BrowserNode-objPath node))) (setf parent-obj-visible (sd-inq-vp-drawlist-member-p (sd-inq-current-vp) (sd-inq-parent-obj (sd-pathname-to-obj (BrowserNode-objPath node)))) ) nil ) ; nur "JA" wenn: Objekt sichtbar, aber Vaterobjekt nicht sichtbar! (if (and obj-visible (not parent-obj-visible)) (setf ret_val "JA") ) ret_val );let ) (defun browser-detect-part-type-fnc (node) (let (ret_val) ; (display (BrowserNode-objPath node)) (setf ret_val "") (if (sd-inq-part-p (sd-pathname-to-obj (BrowserNode-objPath node))) (cond ((sd-inq-face-part-p (sd-pathname-to-obj (BrowserNode-objPath node))) (setf ret_val "FLAECHENTEIL"));Flächenteil ((sd-inq-wire-part-p (sd-pathname-to-obj (BrowserNode-objPath node))) (setf ret_val "DRAHTTEIL"));Drahtteil (t (setf ret_val "VOLUMENTEIL"));Volumsteil );cond );if ret_val );let )