;********************************************************************************************* ; Dateiname : SD_CreateConfigs.lsp ; Autor : Stephan Wörz ; Erstellt : 23.01.2008 ; geändert : 13.03.2008 - Browser refresh hinzu ; : 03.05.2010 - Unterbaugruppen hinzu ;********************************************************************************************* ; Beschreibung : - Hier geht es um folgendes: ; Um Einzelteilansichten von Baugruppenteilen auf der Baugruppenzeichnung ; darzustellen werden bei Schiller entsprechende Konfigurationen erstellt ; die jeweils nur ein Teil in der Drawlist haben. Von diesen Konfigs werden ; dann die Ansichten erstellt (Einzelteilansichten). ; Dieses Tool erzeugt von einer gewählten Baugruppe {Baugruppe} für jedes ; einzigartige Teil (Exemplare werden nur 1x verarztet) {SelectUnique} eine ; Konfiguration {MakeConfig} ; ; Optionen : - ; - ; - ;********************************************************************************************* ; ---------------------------------------------------------------------------------------- ; ä Ì Ä Ø ö Î Ö Ú ü Ï Ü Û ß Þ ° ³ ; ---------------------------------------------------------------------------------------- ; Änderungen ; (in-package :Teo) (use-package :OLI) ;(display :clear) (sd-defdialog 'SD_CreateConfigs :toolbox-button t :dialog-title "Konfigurationen erstellen" :mutual-exclusion '(Baugruppe Auswahl Unterbaugruppen) :variables '( (Baugruppe :value-type :assembly :prompt-text "Baugruppe wÌhlen" :title "Baugruppe" :modifies :contents :initial-value nil :initial-enable t :after-input (progn (setf Besitzer Baugruppe) (SelectUnique) );end progn );Baugruppe (Auswahl :value-type :part :prompt-text "Teil(e) wÌhlen" :title "von Teil(en)" :multiple-items t :modifies nil :initial-value nil :initial-enable t :after-input (progn (setf ObjectList nil) (setf ObjectList Auswahl) (setf Besitzer (sd-inq-parent-obj (first ObjectList))) );end progn );Auswahl (Unterbaugruppen :value-type :assembly :prompt-text "Unterbgr. wÌhlen" :title "von Unterbgr." :multiple-items t :modifies nil :initial-value nil :initial-enable t :after-input (progn ; (setf ObjectList nil) (setf ObjectList Unterbaugruppen) (setf Besitzer (sd-inq-parent-obj (first ObjectList))) );end progn );Unterbaugruppen (AllParts) ; Liste aller Teile in Baugruppe (UniqueParts) ; Liste aller einzigartigen Teile in Baugruppe (ITEM) ; Hilfsvariable ) ;;variables :local-functions '( ;; ---------------------------------------------------------------------------------------------------------------------------------------------------- ;Funktion zum refreshen des Browsers ;Umweg über "create_part" !!! der Browser-Refresh will nicht!!! (RefreshBrowser () (progn ;; (sd-browser-exec-cmd "parcel-gbrowser" :REFRESH-TREE nil t) (sd-call-cmds (create_part :name "bingleichwiederweg")) (sd-call-cmds (delete_3d "/bingleichwiederweg")) );;progn );;RefreshBrowser ;; ---------------------------------------------------------------------------------------------------------------------------------------------------- ;Funktion zum erstellen der Konfigurationen (MakeConfig (item) (progn (setf list item) (sd-call-cmds (sd-create-configuration :owner Besitzer :mode :absolute :attachment :contents :name (sd-inq-obj-basename item) ; :name-conflict keyword :delete-old ; :positions positions :drawlist (first list) ; :camera camera );;sd-create-configuration );;sd-call-cmds );;progn );end MakeConfig ;; ---------------------------------------------------------------------------------------------------------------------------------------------------- ;Funktion zum wählen aller einzigartigen Teile rekursiv in Baugruppe (SelectUnique () ;Variablen zurücksetzen (setf UniqueParts_2 nil) (setf UniqueParts nil) (setf ObjectList nil) (setf ITEM nil) (setf AllParts nil) ; Alle Teile rekursiv in Baugruppe auswählen (setf AllParts (sd-call-cmds (get_selection :focus_type *sd-part-seltype* :allow_wire_part :allow_face_part :select :recursive :in_assembly Baugruppe );;get_selection );;sd-call-cmds );;setf AllParts ; Für jedes Teil in der Liste 'AllParts' die SysID (einzigartig) und die SysID_2 (zum umwandeln in Objekt) holen (dolist (ITEM AllParts) (progn (setf SysID (sd-inq-obj-contents-sysid ITEM)) (setf SysID_2 (sd-inq-obj-sysid ITEM)) );;progn ;Die SysID soll nur in die Liste geschrieben werden wenn sie nicht in der Liste vorhanden ist (when (not (member SysID UniqueParts :test #'equal)) (progn (push SysID UniqueParts) ;SysID in Liste 'UniqueParts' schreiben (push SysID_2 UniqueParts_2) ;SysID_2 in Liste 'UniqueParts_2' schreiben );;progn );;when );;dolist ;Liste umsetzen: SysIds --> Objekten [sd-sysid-to-obj] (setf ITEM nil) (dolist (ITEM UniqueParts_2) (push (sd-sysid-to-obj ITEM) ObjectList) );;dolist );SelectUnique ); end local-functions :ok-action '(progn (mapcar #'MakeConfig ObjectList) (RefreshBrowser) ;(display Besitzer) );;progn ;; ---------------------------------------------------------------------------------------------------------------------------------------------------- :cleanup-action '(progn );end progn ;; ---------------------------------------------------------------------------------------------------------------------------------------------------- :cancel-action '(progn );;progn ;; ---------------------------------------------------------------------------------------------------------------------------------------------------- :help-action '(sd-display-message "Kleine Hilfe: Wird eine Baugruppe gewÌhlt dann wird fÏr jedes Teil in der Baugruppe eine Konfiguration erstellt. Werden Teile gewÌhlt, dann wird fÏr jedes Teil eine Konfiguration unter der Baugruppe des zuerst gewÌhlten Teils erstellt. Werden Unterbgr. gewÌhlt, dann wird fÏr jede Bgr. eine Konfiguration unter der Baugruppe der zuerst gewÌhlten Bgr. erstellt. Nach dem erstellen der Konfiguratioenn werden die Darstellungslisten entsprechend gesetzt. " :title "Notizen" :push "OK" );;sd-display-message ;; ---------------------------------------------------------------------------------------------------------------------------------------------------- ) ;; end defdialog