(in-package :test-package) (use-package :oli) ;; Filterfunktion für Baugruppen. ;; Wenn Baugruppen keine Teile enthalten, oder nur einen Ansichtssatz als Teil, gib :ok zurück, ;; sonst :filter. (defun checkfn (asm) (let ((children (sd-inq-obj-children asm))) (if children (if (and (= 1 (length children)) (or (sd-am-view-set-p (first children)) (sd-inq-container-p (first children))) (not (sd-inq-obj-partially-loaded-p asm))) :ok :filter) ;; else :ok ) ) ) (sd-defdialog 'loesche_leere_bgr :dialog-title "Leere Baugr. 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)) ) )