(in-package :test-package) (use-package :oli) ;; Filter function for assemblies. ;; If assemblies has no children, or only one viewset as a child, return :ok, ;; else :filter. (defun checkfn (asm) (let ((children (sd-inq-obj-children asm))) (if children (if (and (= 1 (length children)) (sd-am-view-set-p (first children))) :ok :filter) ;; else :ok ) ) ) (sd-defdialog 'delempty :dialog-title "Leere Teile loeschen" :variables '((BAUGRUPPE :value-type :assembly :modifies :contents )) :ok-action '(let* ((all-empty-assemblies (sd-call-cmds (get_selection :focus_type *sd-assembly-seltype* :check_function #'checkfn :select :recursive :in_assembly BAUGRUPPE) :failure (display "Irgendwas ging schief - Tests fehlen noch"))) (counter (list-length all-empty-assemblies)) ) (dolist (asm all-empty-assemblies) (display (format nil "Loesche Baugruppe '~A'..." (sd-inq-obj-pathname asm))) (sd-call-cmds (delete_3d asm) :failure (progn (decf counter) (display "=> Kann Baugruppe nicht loeschen."))) ) (display (format nil "Wirklich geloeschte Baugruppen: ~A" counter)) ) )