#| SW-Teile-Suchen.lsp erstellt am 07.03.2016 von Wolfgang Seel Makro zur Erleichterung der Suche von Teilen im Strukturbaum |# (in-package :SW) (use-package :oli) (sd-defdialog 'SW-Teile-Suchen :dialog-title "SW-Teile-Suchen" :toolbox-button nil ; t :variables '( ("Suche im Strukturbaum") (Baugruppe :value-type :assembly :modifies nil :modifies :contents :prompt-text "Baugruppe angeben" :title "in Baugruppe" :initial-value "/" :after-input (after-bgr-action) );end Baugruppe (SuchString :value-type :string :title "Suche ohne *" :initial-value "*" :proposals ("-AS-" "-DS-" "DS-ASP" "DS-ZwP" "DS-HK" "DS-FP" "DS-RP" "DS-HE" "AS-HE" "AS-FP" "AS-ZwP" "AS-L" "AS-AHP" "AS-AGP" "AS-AHP" "AS-ASP" ) :prompt-text "Suchschlüssel eingeben der gesucht wird." :after-input (progn (setq string (format nil "*~a*" SuchString)) (setq SuchString string) (CreateSearch) ; (ActivateSearch) (after-bgr-action);Test (if (equal Loeschen "ja") (sd-call-cmds (clear_vp (sd-inq-current-vp))) ) ;endif (mapcar #'DisplayFN Teile) (fit_vp (sd-inq-current-vp)) (if Baumi(ActivateSearch) ) ; Im Baum Anzeigen ja nein ) ; progn );;Suchstring ("Bisherige Suche") (Loeschen :value-type :string :prompt-text "Soll bei nächster Suche Darstellungsfenster geleert werden?" :title "Fenster leeren" :proposals ("ja" "nein" ) ;;"Automatisch" :auto-add-proposal nil :persistent-proposals t :initial-value "ja" :after-input (progn (if (equal Loeschen "ja") (setq Loeschen "ja") (setq Loeschen "nein") ) ;endif ) ;progn ); end-Loeschen ("Zusaetzliche Anzeigen") (DispFaceParts :title "Flächenteile anzeigen" :toggle-type :wide-toggle :initial-enable t :push-action (progn (setf Suchstring "*") (setf FaceParts (sd-call-cmds (get_selection :focus_type *sd-part-seltype* :allow_face_part :check_function #'(lambda (pa) (if (sd-inq-face-part-p pa) :ok :filter)) :select :recursive :in_assembly Baugruppe))) (if (equal Loeschen "ja") (sd-call-cmds (clear_vp (sd-inq-current-vp))) ) ;endif (mapcar #'DisplayFN FaceParts) (setf Suchstring "") ;;Vorgabe für Variable Suchstring setzen (after-bgr-action) ;;zurücksetzen auf Teile (*sd-part-seltype*) );end progn );end DispFaceParts (DispWireParts :title "Drahtteile anzeigen" :toggle-type :wide-toggle :initial-enable t :push-action (progn (setf Suchstring "*") (setf WireParts (sd-call-cmds (get_selection :focus_type *sd-part-seltype* :allow_wire_part :check_function #'(lambda (pa) (if (sd-inq-wire-part-p pa) :ok :filter)) :select :recursive :in_assembly Baugruppe))) (if (equal Loeschen "ja") (sd-call-cmds (clear_vp (sd-inq-current-vp))) ) ;endif (mapcar #'DisplayFN WireParts) (setf Suchstring "") ;;Vorgabe für Variable Suchstring setzen (after-bgr-action) ;;zurücksetzen auf Teile (*sd-part-seltype*) );end progn );end DispFaceParts (Schreibweise :value-type :boolean :toggle-type :grouped-toggle :title (sd-multi-lang-string "big/small" :german "Groß/Klein") :after-input (progn );progn :initial-value nil );Schreibweise (Baumi :value-type :boolean :toggle-type :grouped-toggle :title (sd-multi-lang-string "Browser" :german "Teilebaum") :after-input (progn );progn :initial-value t );Minus1 );end variables ;; ================================================================================================================================================= :local-functions '( (CreateSearch () (progn (sd-create-browser-search "parcel-gbrowser" :name "Schlumpfy" :title "Schlumpfy" :criteria `( (:column :instance-name :Operation :equals :value ,Suchstring)) :match :all :case-sensitive nil :enable t );;sd-create-browser-search );;progn );;CreateSearch (ActivateSearch () (oli:sd-browser-exec-cmd "parcel-gbrowser" :EXPAND-TREE 1) (setf Darstellungsliste (sd-inq-vp-drawlist-objects (oli::sd-inq-current-vp))) ;; aktuelle Datellungsliste am Bildschirm erfassen (dolist (Einzelteil Darstellungsliste) ;; Liste einzeln abbarbeiten (search_by_pick "parcel-gbrowser" "search-by-pick" (sd-inq-obj-pathname Einzelteil)) );;dolist );;ActivateSearch ;; ------------------------------------------------------------------------------------------------------------------------------------------------- (DeactivateSearch () (sd-set-current-browser-search "parcel-gbrowser" "TOOL" :activate nil :persistent nil );;sd-set-current-browser-search );;DeactivateSearch ;; ------------------------------------------------------------------------------------------------------------------------------------------------- ;; Funktion zum wählen aller Teile rekursiv in Baugruppe (after-bgr-action () (setf Teile (sd-call-cmds (get_selection :focus_type *sd-part-seltype* :allow_face_part :allow_wire_part :select :recursive :in_assembly Baugruppe))) );end after-bgr-action ;; ------------------------------------------------------------------------------------------------------------------------------------------------- ;; Function zum anzeigen der selektierten Teile (DisplayFN (item) (IF Schreibweise (when (sd-string-match-pattern-p SuchString (sd-inq-obj-basename item)) (sd-call-cmds (add_to_vp_drawlist (sd-inq-current-vp)(sd-inq-obj-pathname item)))) (when (match-p SuchString item) (sd-call-cmds (add_to_vp_drawlist (sd-inq-current-vp)(sd-inq-obj-pathname item)))) ) ; endif ); end DisplayFN ;; ------------------------------------------------------------------------------------------------------------------------------------------------- ;; Funktion zum ausblenden der selektierten Teile (HideFN (item) (IF Schreibweise (when (sd-string-match-pattern-p SuchString (sd-inq-obj-basename item)) (sd-call-cmds (remove_from_vp_drawlist (sd-inq-current-vp)(sd-inq-obj-pathname item)))) (when (match-p SuchString item) (sd-call-cmds (remove_from_vp_drawlist (sd-inq-current-vp)(sd-inq-obj-pathname item)))) );endif (fit_vp (sd-inq-current-vp)) ); end DisplayFN ;; ------------------------------------------------------------------------------------------------------------------------------------------------- ;; Funktion zum Transparent machen der selektierten Teile (TransFN (item) (IF Schreibweise (if (sd-string-match-pattern-p SuchString (sd-inq-obj-basename item)) (progn (set_part_base_transparency :parts (sd-inq-obj-pathname item) :transp 0 ) ) );endif (if (match-p SuchString item)(progn (set_part_base_transparency :parts (sd-inq-obj-pathname item) :transp 0 ) ) );endif );endif ); end TransFN ;; Funktion zum checken des Teilenames CaseINsensitive (match-p (searchStr item) (sd-string-match-pattern-p (sd-string-downcase searchStr) (sd-string-downcase (sd-inq-obj-basename item)))) ;; ------------------------------------------------------------------------------------------------------------------------------------------------- ;; Funktion zum zeigen Teile (DisplayAll() (progn (sd-call-cmds (clear_vp (sd-inq-current-vp))) (sd-call-cmds (add_to_vp_drawlist (sd-inq-current-vp) :without-wp (sd-inq-obj-pathname Baugruppe))) );;progn ); end DisplayFN ;; ------------------------------------------------------------------------------------------------------------------------------------------------- ); end local functions ;; ------------------------------------------------------------------------------------------------------------------------------------------------- :ok-action ' (sd-delete-browser-search "parcel-gbrowser" "Schlumpfy") :cleanup-action '() :cancel-action ' (sd-delete-browser-search "parcel-gbrowser" "Schlumpfy") :help-action '(sd-display-message " SW-Teile-Suchen.lsp 07.03.2016 erstellt von Wolfgang Seel 14.11.2017 Erweiterung der Suche um Groß-Klein-Schreibung vernachlässigen Ziel des LISP-Makros ist die erleichterte Suche von Teilen in der Strukturliste Funktionsprinzip: 1. in Baugruppe: Hier kann die Suche auf eine Baugruppe beschränkt werden. im Standard wird hier der komplette Strukturbaum durchsucht. 2. Suche ohne * : Hier wird der Suchbegriff eingegeben. z.B. P001 Im BullDown-Menu sind vorgefertigte Suchbegriffe hinterlegt. Sofort nach Eingabe beginnt die Suche und die Teile werden angezeigt. 3. Fenster leeren -ja- Bei jeder Suche wird das Darstellungsfenster geleert. Im BullDown-Menu kann man auf -nein- stellen, dann bleibt die bisherige Suche erhalten. 4. Button - Flaechenteile anzeigen : Alle Flaechenteile der gewählten Baugruppe werden angezeigt 5. Button - Drahtteile anzeigen : Alle Drahtteile werden angezeigt besondere Vorraussetzungen: keine " :title "SW-Teile-Suchen" :push "Weiter") );;sd-defdialog