;;----------------------------------------------------------------------------- ;; for PTC Creo Elements/Direct Modeling ;; better known as CoCreate SolidDesigner ;; ;; Beschreibung: Tool erstellt Arbeitsebenen im Teilereferenzpunkt ;; gewählter Baugruppen oder Teile ;; ;;----------------------------------------------------------------------------- ;; ;; Filename : teilereferenzpunkt.lsp ;; Version : 1.0 ;; Datum : 10.03.2021 ;; Author : MiBr@forum@cad.de ;; Reference : http://ww3.cad.de/foren/ubb/Forum92/HTML/000955.shtml ;; ;;----------------------------------------------------------------------------- (in-package :mibr) (use-package :oli) (sd-defdialog 'Teilereferenzpunkt :toolbox-button t :dialog-title "Teilereferenzpunkt anzeigen" :variables '( (BE_Objekt :value-type :part-assembly :title "Besitzer" :prompt-text "Besitzer auswählen" :modifies nil :initial-value nil :after-input (if (sd-inq-assembly-p BE_Objekt) (progn (sd-set-variable-status 'do_exemplare :enable t) (sd-set-variable-status 'eine_ebene :enable t) ) (progn (sd-set-variable-status 'do_exemplare :enable nil) (sd-set-variable-status 'eine_ebene :enable nil) ) ) ;end if ) ("-") (do_exemplare :value-type :boolean :toggle-type :grouped-toggle :title "Exemplare" :persistent-data-storage t :initial-value nil :initial-enable nil ) (eine_ebene :value-type :boolean :toggle-type :grouped-toggle :title "Eine Ebene" :persistent-data-storage t :initial-value t :initial-enable nil ) ("-") (AE_erstellen :title "AE´s erstellen" :push-action (when BE_Objekt (sd-call-cmds (do-it))) :toggle-type :right-toggle :after-input (setf BE_Objekt nil) ) ) ) ;; end variables :prompt-variable 'BE_Objekt :local-functions '( (do-it () (let (AE_BG_Name BE_Elemente bez_abk (default_WP (sd-inq-curr-wp))) ;Aktive Arbeitsebene sichern (setq AE_BG_Name (sd-gen-obj-basename :assembly :Parent "/" :Prefix (Format nil "AE- ~a" (sd-inq-obj-basename BE_Objekt)))) (create_assembly :name AE_BG_Name :model_name AE_BG_Name :owner "/") (setq bez_abk "BE") (create_AE BE_Objekt AE_BG_Name bez_abk) ;lokale Funktion (setq bez_abk "BG") (when (sd-inq-assembly-p BE_Objekt) ;Baugruppe auswerten (if eine_ebene (setf BE_Elemente (sd-inq-obj-children BE_Objekt)) (setf BE_Elemente (sd-call-cmds (get_selection :focus_type (list *sd-part-seltype* *sd-assembly-seltype*) :with_stock_container :allow_face_part :allow_wire_part :select :recursive :in_assembly BE_Objekt) ) ) ) (unless do_exemplare (setf BE_Elemente (remove-duplicates BE_Elemente :test #'equal :key #'sd-inq-obj-contents-sysid))) (dolist (a-item BE_Elemente) (when (or (sd-inq-assembly-p a-item) (sd-inq-part-p a-item)) (create_AE a-item AE_BG_Name bez_abk) ;lokale Funktion ) ;end when ) ;end dolist ) ;end when (current_WP default_WP);Aktive Arbeitsebene setzen ) ;end let ) ;;do-it (create_AE (akt_item AE_BG_Name bez_abk) (let (lor lz ly lx contents-name) (setf lor (sd-vec-xform (make-gpnt3d :x 0 :y 0 :z 0) :source-space akt_item :dest-space :global)) (setf ly (sd-vec-xform (make-gpnt3d :x 0 :y 1 :z 0) :source-space akt_item :dest-space :global)) (setf lx (sd-vec-xform (make-gpnt3d :x 1 :y 0 :z 0) :source-space akt_item :dest-space :global)) (when (or (sd-inq-assembly-p akt_item) (sd-inq-part-p akt_item)) (if (sd-inq-obj-contents-name akt_item) (setq contents-name (format nil "~a" (sd-inq-obj-contents-name akt_item))) (setq contents-name "X") ) (create_workplane :new :name (if (sd-inq-part-p akt_item) (format nil "AE-TE-~a-~a" contents-name (sd-inq-obj-basename akt_item)) (format nil "AE-~a-~a-~a" bez_abk contents-name (sd-inq-obj-basename akt_item)) ) :owner (format nil "/~a" AE_BG_Name) :pt_pt_pt lor lx ly) (uic_c_line_cross_cp 0,0) ;Hilfsliniekreuz erstellen ) ;end when ) ;end let ) ;end create_AE ) ;end local-functions :help-action '(sd-display-message "Teilereferenzpunkte erstellen Funktion: Tool erstellt Arbeitsebenen im Teilereferenzpunkt Optionen: Exemplare gewählt - alle Exemplare werden berücksichtigt Eine Ebene gewählt - Nur die Ebene der gewählten Baugruppe wird berücksichtigt Benennung der AE´s: - AE-BE-... = Teilereferenzpunkt des gewählten Teils oder Baugruppe - AE-BG-... = Teilereferenzpunkt einer Baugruppe - AE-TE-... = Teilereferenzpunkt eines Teils - ... -> Modellname-Bezeichnung" );;sd-display-message ) ;; end defdialog