Zeichnungen basierend auf Modellen erstellen (Creo Elements/Direct Annotation) > Erweiterte Themen > Anpassung für fortgeschrittene Benutzer > STL-Funktionen
  
STL-Funktionen
Für die Stücklisten in Creo Elements/Direct Annotation stehen zahlreiche Funktionen zur Verfügung. Zu den wichtigsten Funktionen gehören das Laden von STL-Layouts sowie das Registrieren von Attributen und Textbezügen. Sie können auch die Schaltfläche "Modell abtasten" deaktivieren, falls die WorkManager-Datenbank die einzige Quelle für STL-Informationen ist.
Die Funktionen werden in den folgenden Abschnitten erklärt:
Laden von Kopf, Komponenten- und Markierungs-Layouts
Registrieren von STL-Attributen und Textbezügen (ohne WorkManager) und Registrieren von STL-Attributen und Textbezügen (mit WorkManager)
Festlegen von Standardanbindungsmodus und Standardwachstumsrichtung
Beispiel für eine vollständige STL-Registrierung
Laden von Kopf, Komponenten- und Markierungs-Layouts
Ein Layout ist die Vorlage, die das Erscheinungsbild von STL-Tabellen und Positionsmarkierungen bestimmt. Sie können jede beliebige MI-Datei als STL-Layout laden und registrieren. Für Stücklisten werden drei Layouts unterschieden:
Das Kopf-Layout für den Titel der STL-Tabelle. Dieses Layout kann Informationen zur STL-Root-Baugruppe enthalten.
Das Komponenten-Layout für die einzelnen Zeilen in der Tabelle.
* 
Ein gültiges Tabellen-Layout muss ein Kopf- und ein Komponenten-Layout mit derselben Option UI-NAME besitzen.
Das Markierungs-Layout für die STL-Positionsmarkierungen.
Die Werte können in spezielle Registrieren von STL-Attributen und Textbezügen (ohne WorkManager) einbezogen werden, die auf die Layouts in den STL-Layout-Anpassungsmenüs angewendet werden. Geladene Layouts können in einem temporären Blatt 0 bearbeitet und anschließend mit dem normalen Befehl "Skizze speichern" in einer Datei gespeichert werden. Die Abbildung zeigt typische STL-Layouts.
STL-Layouts
In der erster Grafik sind ein Tabellenkopf-Layout (oben) und ein Komponenten-Layout (unten) dargestellt, während die zweite Grafik ein Markierungs-Layout enthält.
Die Layout-Funktionen und ihre Optionen sind nachstehend aufgeführt. Nähere Informationen erhalten Sie unter den jeweiligen Links. Ein Beispiel finden Sie nachstehend.
Syntax
(DOCU-LOAD-BOM-HEAD-LAYOUT --+--> Option UI-NAME---->+--->
| ^
`--> Option FILE------->'
(DOCU-LOAD-BOM-COMP-LAYOUT --+--> Option UI-NAME---->+--->
| ^
`--> Option FILE------->'
(DOCU-LOAD-BOM-FLAG-LAYOUT --+--> Option UI-NAME---->+--->
| ^
`--> Option FILE------->' Funktion DOCU-UNLOAD-ALL-BOM-LAYOUTS
Option UI-NAME
:UI-NAME legt den Layout-Namen fest, der entweder im Skizzen-Layout oder in der Markierungs-Layout-Tabelle angezeigt wird. Für die Definition des gesamten Tabellen-Layouts müssen die zugehörigen Kopf- und Komponenten-Layouts identische UI-NAME-Zeichenfolgen besitzen. Markierungs-Layouts sind unabhängig. Bei ihrer Benennung spielt der Tabellen-Layout-Name keine Rolle.
Syntax
-->(:UI-NAME)----->|"interface name"|------->
Option FILE
:FILE gibt die MI-Datei an, die als Layout verwendet wird. Normalerweise handelt es sich dabei um eine Layout-Skizze, die mit dem Befehl "Skizze speichern" gespeichert wurde. Die benannte Datei wird von Creo Elements/Direct Annotation automatisch beim Start geladen.
Syntax
-->(:FILE)----->|"filename"|------->
Funktion DOCU-UNLOAD-ALL-BOM-LAYOUTS
Die Funktion DOCU-UNLOAD-ALL-BOM-LAYOUTS entlädt alle zuvor geladenen Layouts (und hebt ihre Registrierung auf). Verwenden Sie diese Funktion in der Datei am_customize (oder in einer separaten Datei) vor Instanzen von (DOCU-LOAD-BOM-...-LAYOUT ...), wenn die Standard-Layouts nicht zur Verfügung stehen sollen.
Beispiel
Nachstehend finden Sie ein Beispiel für eine Layout-Registrierung:
(docu-load-bom-head-layout
:ui-name "Example1"
:file "/bom/head1.mi")
(docu-load-bom-comp-layout
:ui-name "Example1"
:file "/bom/comp1.mi")
(docu-load-bom-flag-layout
:ui-name "Example1"
:file "/bom/flag1.mi")
Registrieren von STL-Attributen und Textbezügen (ohne WorkManager)
Die im Folgenden beschriebenen Funktionen beziehen sich auf die Arbeit ohne WorkManager. Weitere Informationen zu WorkManager finden Sie unter Registrieren von STL-Attributen und Textbezügen (mit WorkManager).
Creo Elements/Direct Annotation bietet einen einfachen STL-Generator. In einer angegebenen Baugruppe durchsucht er den Modellbaum und generiert STL-Daten für jedes gefundene Objekt. Sie können bestimmte Attribute mit zugehörigen Wertfunktionen registrieren, um den Inhalt der STL zu definieren.
Die Attributfunktionen, ihre Optionen und die zugehörigen Funktionen sind unten aufgeführt. Nähere Informationen erhalten Sie unter den jeweiligen Links. Ein Beispiel finden Sie nachstehend.
(DOCU-REGISTER-BOM-ATTR --+--> Option ATTR-TYPE--------->+--->
| ^
|--> Option ATTR-TITLE-------->|
| |
|--> Option ATTR-DISPLAY------>|
| |
`--> Option ATTR-VALUE-FNC---->' Funktion DOCU-UNREGISTER-BOM-ATTR-ALL Funktion DOCU-UNREGISTER-BOM-ATTR Funktion DOCU-REGISTER-BOM-TR-GROUP Funktion DOCU-REGISTER-WMBOM-TR-GROUP
Option ATTR-TYPE
:ATTR-TYPE legt den Attributtyp fest, der den Zieltextbezugstyp bestimmt. Siehe auch Funktion DOCU-REGISTER-BOM-TR-GROUP.
Syntax
-->(:ATTR-TYPE)----->|"text reference type"|------->
Option ATTR-TITLE
:ATTR-TITLE legt den Namen des STL-Attributs fest, der in der aktuellen STL-Tabelle angezeigt wird.
Syntax
-->(:ATTR-TITLE)----->|"name in table"|------->
Option ATTR-DISPLAY
:ATTR-DISPLAY legt fest, ob das STL-Attribut in der aktuellen STL-Tabelle angezeigt wird. Sie können das Attribut bei Bedarf "ausblenden"; es wird allerdings nach wie vor beim Scannen ermittelt.
Syntax
-->(:ATTR-DISPLAY)----->|t or nil|------->
Option ATTR-VALUE-FNC
:ATTR-VALUE-FNC legt die Funktion fest, die den Wert des STL-Attributs bestimmt. Die Wertfunktion muss vor der Registrierung definiert werden. Sie besitzt einen Parameter, der ein sel-item-Teil oder eine sel-item-Baugruppe beschreibt, und gibt eine Zeichenfolge aus, die den Wert enthält, der in die Stückliste einzutragen ist.
Weitere Informationen zur Verwendung von Funktionen des Integration Kits für STL-Attributwertfunktionen finden Sie unter Beispiel für eine vollständige STL-Registrierung.
Syntax
-->(:ATTR-VALUE-FNC)----->|#'value-function-name|------->
Hinweis: Für systemdefinierte Attribute wie DOCU_BOM_QUANTITY wird die Systemwertfunktion benutzt. Allerdings muss das Attribut nach wie vor registriert werden, damit es in der STL-Tabelle angezeigt wird. Verwenden Sie in diesen Fällen nil für die Wertfunktion:
-->(:ATTR-VALUE-FNC)----->|nil|------->
(Hinweis: Das Systemattribut DOCU_BOM_POS_NO ist automatisch verfügbar; es muss nicht registriert werden.)
Siehe auch das Beispiel unten.
Funktion DOCU-UNREGISTER-BOM-ATTR-ALL
Die Funktion DOCU-UNREGISTER-BOM-ATTR-ALL hebt die Registrierung aller zuvor registrierten STL-Attribute auf. Verwenden Sie diese Funktion in der Datei am_customize (oder in einer separaten Datei) vor Instanzen von (DOCU-REGISTER-BOM-ATTR ...), wenn die Standard-STL-Attribute nicht zur Verfügung stehen sollen.
Funktion DOCU-UNREGISTER-BOM-ATTR
Die Funktion DOCU-UNREGISTER-BOM-ATTR hebt die Registrierung eines zuvor definierten STL-Attributs auf. Sie können den Wert Option ATTR-TYPE jedes vorhandenen Attributs (in doppelten Anführungszeichen) angeben.
Syntax
(DOCU-UNREGISTER-BOM-ATTR "attribute type")
Funktion DOCU-REGISTER-BOM-TR-GROUP
Der STL-Generator in Creo Elements/Direct Annotation zählt das Vorkommen von gemeinsam verwalteten Teilen und trägt die ermittelten Daten in das System-STL-Attribut "DOCU_BOM_QUANTITY" ein. Die Standardtextbezugsgruppe für STL-Textbezüge ist "BFG". Es ist möglich, mit der Funktion DOCU-REGISTER-BOM-TR-GROUP eine andere Gruppe anzugeben.
Alle registrierten STL-Attribute erzeugen automatisch neue Textbezugsarten (mit demselben Namen) in dieser Gruppe. Die Textbezugsarten sind in den Stücklisten-Layout-Anpassungsmenüs verfügbar.
Hinweis: Der Systemtextbezug "DOCU_BOM_POS_NO" wird zum Anzeigen von Positionsnummern verwendet; er wird automatisch zur Verfügung gestellt.
Syntax
(DOCU-REGISTER-BOM-TR-GROUP "group name")
Registrieren von STL-Attributen und Textbezügen (mit WorkManager)
Die folgenden Funktionen werden in Verbindung mit WorkManager angewendet.
Funktion DOCU-REGISTER-WMBOM-TR-GROUP
WorkManager liefert Tabellen, die STL-Attribute in Titelspalten und die Daten in Zeilen definieren. In der Konfigurationstabelle wird festgelegt, welche Attribute in der STL-Anzeigetabelle angezeigt werden sollen. Aus diesem Grund muss die Anpassung weitestgehend in WorkManager erfolgen.
Die Standardtextbezugsgruppe für WorkManager-STL-Attribute ist "BFG". Diese Einstellung kann mit der Funktion DOCU-REGISTER-WMBOM-TR-GROUP geändert werden.
Das System erhält unter diesem Namen automatisch eine Liste mit WorkManager-Attributen und erzeugt neue Textbezugsarten (mit demselben Namen) in dieser Gruppe. Die Textbezugsarten sind in den Stücklisten-Layout-Anpassungsmenüs verfügbar.
Hinweis: Der Systemtextbezug "DOCU_BOM_POS_NO" wird zum Anzeigen von Positionsnummern verwendet; er wird automatisch zur Verfügung gestellt.
Syntax
(DOCU-REGISTER-WMBOM-TR-GROUP "WorkManager group name")
Beispiel
Nachstehend finden Sie ein Beispiel für eine STL-Attributregistrierung:
(defun docu-bom-attr-part-name (selitem)
(let ((contents-name (oli::sd-inq-obj-contents-name selitem)))
(if contents-name contents-name (oli::sd-inq-obj-basename selitem))
)
)
(docu-unregister-bom-attr-all)
(docu-register-bom-attr :attr-type "PART_NAME"
:attr-title "Part Name"
:attr-display t
:attr-value-fnc #'docu-bom-attr-part-name)
(docu-unregister-bom-attr "PART_NAME")
(docu-register-bom-attr :attr-type "DOCU_BOM_QUANTITY"
:attr-title "Quantity"
:attr-display t
:attr-value-fnc nil) ;; system BOM attribute
(docu-register-bom-attr :attr-type "PART_NAME"
:attr-title "Part Name"
:attr-display t
:attr-value-fnc #'docu-bom-attr-part-name)
Festlegen von Standardanbindungsmodus und Standardwachstumsrichtung
Anbindungsmodus
Sie können die Standardcursorposition festlegen, die beim Positionieren von STL-Tabellen verwendet wird. Als Vorgabe ist der Mittelpunkt der Tabelle eingestellt (MIDDLE_MIDDLE).
Syntax
(DOCU::DOCU-SET-CURRENT-BOM-ATTACH-MODE "position")
Als mögliche Position stehen zur Auswahl: UPPER_LEFT, UPPER_MIDDLE, UPPER_RIGHT, MIDDLE_LEFT, MIDDLE_MIDDLE, MIDDLE_RIGHT, LOWER_LEFT, LOWER_MIDDLE oder LOWER_RIGHT. Hinweis: Bei diesen Optionen wird zwischen Groß- und Kleinschreibung unterschieden. Außerdem muss die Eingabe mit großem Anfangsbuchstaben erfolgen.
Wachstumsrichtung
Sie können auch die Standardwachstumsrichtung für STL-Tabellen festlegen. Diese Vorgabe bestimmt, ob die STL-Informationen von oben nach unten oder von unten nach oben auflistet werden.
Syntax
(DOCU::DOCU-SET-CURRENT-BOM-GROWTH-DIR :GROW-UPWARD or :GROW-DOWNWARD)
Beispiel für eine vollständige STL-Registrierung
Das folgende Beispiel veranschaulicht, wie Attribute mit dem Modell verknüpft und in der Stückliste abgerufen werden.
;;-----------------------------------------------------------------------------
;; simple example how to implement BOM attributes using IK functions
;;-----------------------------------------------------------------------------
(in-package :my-special-bom-attr)
(use-package '( :oli ))
;;-----------------------------------------------------------------------------
;; functions to inquire attached BOM information of an SD part or assembly
;;-----------------------------------------------------------------------------
(defun bomattr-get-material (object)
(let ((attr (sd-inq-item-attribute object "MY_SPECIAL_BOM_ATTR"
:values :attachment :contents)))
(if attr (getf attr :material) nil)
)
)
(defun bomattr-get-partno (object)
(let ((attr (sd-inq-item-attribute object "MY_SPECIAL_BOM_ATTR"
:values :attachment :contents)))
(if attr (getf attr :part-number) nil)
)
)
;;-----------------------------------------------------------------------------
;; dialog to attach BOM information to an SD part or assembly
;;-----------------------------------------------------------------------------
(sd-defdialog 'my_special_bom_attr
:dialog-title "BOM Attr"
:start-variable 'object
:variables
'(
(OBJECT
:value-type :part-assembly
:modifies :contents
:title "Part/Assy"
:prompt-text "Select a part or assembly."
:after-input
(progn
(setq material (bomattr-get-material object))
(setq partno (bomattr-get-partno object))
)
)
(MATERIAL
:range ("Steel" "Aluminium" "Brass")
:title "Material"
:prompt-text "Enter material info."
)
(PARTNO
:value-type :string
:title "Part No"
:prompt-text "Enter part number info."
)
)
:ok-action
'(progn
(sd-attach-item-attribute object "MY_SPECIAL_BOM_ATTR"
:attachment :contents
:on-copy :copy
:on-merge :maintain
:on-split :copy
:on-xform :maintain
:filing '(:sd-file)
:values
`(
:material ,material
:part-number ,partno
)
)
)
)
;;-----------------------------------------------------------------------------
;; convenience functions to inquire attached BOM information
;;-----------------------------------------------------------------------------
(defun bomattr-get-material (selitem)
(let ((attr (sd-inq-item-attribute selitem "MY_SPECIAL_BOM_ATTR"
:values :attachment :contents)))
(if attr (getf attr :material) nil)
)
)
(defun bomattr-get-partno (selitem)
(let ((attr (sd-inq-item-attribute selitem "MY_SPECIAL_BOM_ATTR"
:values :attachment :contents)))
(if attr (getf attr :part-number) nil)
)
)
;;-----------------------------------------------------------------------------
;; examples of how to customize some simple BOM attributes
;;-----------------------------------------------------------------------------
(defun my-bom-attr-part-name (selitem)
(let ((contents-name (oli::sd-inq-obj-contents-name selitem)))
(if contents-name contents-name (oli::sd-inq-obj-basename selitem))
)
)
(defun my-bom-attr-part-no (selitem)
(let ((part-no (bomattr-get-partno selitem)))
(if part-no part-no "")
)
)
(defun my-bom-attr-material (selitem)
(let ((material (bomattr-get-material selitem)))
(if material material "")
)
)
(docu::docu-unregister-bom-attr-all)
(docu::docu-register-bom-attr :attr-type "DOCU_BOM_QUANTITY"
:attr-title "Quantity"
:attr-display t
:attr-value-fnc nil) ;; system bom attribute
(docu::docu-register-bom-attr :attr-type "PART_NAME"
:attr-title "Part Name"
:attr-display t
:attr-value-fnc #'my-bom-attr-part-name)
(docu::docu-register-bom-attr :attr-type "PART_NO"
:attr-title "Part No"
:attr-display t
:attr-value-fnc #'my-bom-attr-part-no)
(docu::docu-register-bom-attr :attr-type "MATERIAL"
:attr-title "Material"
:attr-display t
:attr-value-fnc #'my-bom-attr-material)