Tipps & Tricks. Eine Standardfunktionalität ist das Erstellen von Grafischen Basisobjekten auf dem Patran Viewport.

Ähnliche Dokumente
Tube Analyzer LogViewer 2.3

Graphische Benutzeroberflächen mit Matlab

Programmierung eines GIMP-Plugin

SAP-Daten per HTML anzeigen

Dokumentation für Popup (lightbox)

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016

How to create a Gift Certificate Wie man ein Gift Certificate (Gutschein) erstellt

11: Echtzeitbetriebssystem ucos-ii

ONLINE LICENCE GENERATOR

Der Beginn einer wunderbaren Freundschaft von Stefan Schnell

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Programmier-Befehle - Woche 8

RailMaster New Version 7.00.p26.01 /

Use of the LPM (Load Program Memory)

Mul$media im Netz (Online Mul$media) Wintersemester 2014/15. Übung 02 (Nebenfach)

Rails Ruby on Rails Ajax on Rails. Clemens H. Cap

Exercise (Part II) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

Exercise (Part XI) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

GUI Programmierung mit GTK

Unified-E Standard WebHttp Adapter

Guidance Notes for the eservice 'Marketing Authorisation & Lifecycle Management of Medicines' Contents

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Algorithmen und Datenstrukturen Musterlösung 5

USB Treiber updaten unter Windows 7/Vista

SmallTalk - Eine kurze Einführung

Git - Fast Version Control System

Exercise 6. Compound Types and Control Flow. Informatik I für D-MAVT. M. Gross, ETH Zürich, 2017

<header> <body> Wordpress Plugins. <aside> (Sidebar) <footer> ! Einleitung. " Grundstruktur " Backend. " Frontend. $ Ziel

HiOPC Hirschmann Netzmanagement. Anforderungsformular für eine Lizenz. Order form for a license

Titelbild1 ANSYS. Customer Portal LogIn

Übung Informatik I - Programmierung - Blatt 8

a) Name and draw three typical input signals used in control technique.

Session 1: Classes and Applets

VGM. VGM information. HAMBURG SÜD VGM WEB PORTAL - USER GUIDE June 2016

Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn. Testen. Tutorial im Rahmen des Software(technik)praktikums SS 2012

Einführung in SPSS. Sitzung 2: Datenbereinigung und Datenmanagement. Knut Wenzig. 9. Dezember 2004

Grundlagen der Informatik für Ingenieure I. 8. AWT - Abstract Window Toolkit Teil 1

Programmier-Befehle - Woche 10

EXCEL VBA Cheat Sheet

Visuelle Kryptographie. Anwendung von Zufallszahlen

Übungen zu Softwareentwicklung 1, WS 2009/10 Übung 6

Informatik I. Informatik I. 7.1 Der let-ausdruck. 7.2 Das Graphik-Paket image.ss. 7.3 Fraktale Bilder. Wiederholte Berechnungen: Der let-ausdruck


Restschmutzanalyse Residual Dirt Analysis

Partner Self Service

VGM. VGM information. HAMBURG SÜD VGM WEB PORTAL USER GUIDE June 2016

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

Testsequenz "Cloud-User Unmount volume" (ID 243) Testprotokoll. Testsequenz Projekt > System Test > Cloud-User Unmount volume (ID 243)

Wiederholung: Listen, Referenzen

Vorsicht bei redundanten und unvollständigen Matches!

Word-CRM-Upload-Button. User manual

Übung 3: VHDL Darstellungen (Blockdiagramme)

Umrechnungsfunktionen Simatic S5-Gleitpunkt-Format in S7 Real und zurück Converting Simatic S5 floating point format to S7 real and reverse

Can I use an older device with a new GSD file? It is always the best to use the latest GSD file since this is downward compatible to older versions.

Monitor VIS 3xx Kurzanleitung

Sepiola Mockups. Overview. Show notes. Primäre Navigation anklicken um zum gewünschten Mockups zu gehen. Backup usage. Overview.

KlassifikationsBrowser

7.0 Arbeiten mit Objekten und Klassen

A Classification of Partial Boolean Clones

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

NEWSLETTER. FileDirector Version 2.5 Novelties. Filing system designer. Filing system in WinClient

Lukas Hydraulik GmbH Weinstraße 39 D Erlangen. Mr. Sauerbier. Lukas Hydraulik GmbH Weinstraße 39 D Erlangen

1. General information Login Home Current applications... 3

Übung HelloWorld /*===========================================================================

Makro Programmierung User Interface (Entwicklungs- Umgebung) Grafische Werkzeugbox. GUI Form erstellen (UserForm)

Praktikum: Paralleles Programmieren für Geowissenschaftler

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

How-To-Do. Communication to Siemens OPC Server via Ethernet

DHBW Stuttgart, Informatik, Advanced SW-Engineering Aug Programmierung

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Übersicht GUI PyQT TU Dresden, Sommerkurs Python GUI Folie 1 von XYZ

Interface. So werden Interfaces gemacht

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

WPF Steuerelemente. Dr. Beatrice Amrhein

p^db=`oj===pìééçêíáåñçêã~íáçå=

Die Dokumentation kann auf einem angeschlossenen Sartorius Messwertdrucker erfolgen.

LCD Display 20x4 mit Buttons

The process runs automatically and the user is guided through it. Data acquisition and the evaluation are done automatically.

Kurzanleitung ERwin V Kurzanleitung Erwin

file:///c:/users/wpzsco/appdata/local/temp/tmp373d.tmp.htm

Das Modul kann thermische oder 3-stufige Aktoren regeln, wie auch vier 0-10 VDC analoge Ausgänge.

~10 RESET 3.3V 5V GND GND VIN

Beispiellösungen Übungsblatt 1

v i r t u A L C O M P o r t s

Newsletter2Go - API Dokumentation

WPF Bindung. Dr. Beatrice Amrhein

Teil 1 : Erstellen eines neuen Typen und Einbindung in den 'Type Chooser' der Standardsuche

pue08 December 9, 2016

Correspondence between initialisation table and Common Criteria Evaluation

microkontrol/kontrol49 System Firmware Update

JAVA Look & Feel Design Guidelines

Inhalt. Design patterns Kernbereiche Creational patterns Factory method Abstract Factory Builder Structural patterns Adapter Facade Decorator

THEMA: GUT VORBEREITET IST HALB ZERTIFIZIERT ANTWORTEN ZUR SAS VISUAL ANALYTICS-ZERTIFIZIERUNG" THOMAS WENDE

Snom 3xx/7xx Serie. Manuelle Neukonfiguration. Dokumentenversion 1.0

Löschen eines erkannten aber noch nicht konfigurierten Laufwerks

Komponentenorientierter Entwurf von PIMs und CIMs mit der KobrA-Methode

Wie ich lernte die API zu lieben. 19. März sic[!]sec GmbH Industriestraße Gröbenzell

Die Klasse Collection (gb) implementiert eine Hash-Tabelle, deren Elemente aus einem Wert-Schlüssel-Paar

Theorie zu Übung 8 Implementierung in Java

Transkript:

Eine Standardfunktionalität ist das Erstellen von Grafischen Basisobjekten auf dem Viewport. Anders als bei Titeln bewegen sich die Grafikobjekte mit dem Modell mit. Ein im Elementschwerpunkt platzierter Text dreht sich dementsprechend mit. Einem Grafischen Segment können verschiedene Graphische Objekte zugeordnet werden. Dadurch wird eine bessere Performance gewährleistet, als würde ich jeweils ein eigenes Grafisches Segment erzeugen. Mit Hilfe Graphischer Basisobjekte können Texte, Symbole oder Linien dargestellt werden. Mehr Details findet man in der Online Dokumentation im PCL and Customization Handbuch. Am Beispiel des Darstellens des Materialnamens im Elementschwerpunkt selektierter Elemente soll die Funktionalität gezeigt werden. Im Folgenden wird auf Abschnitte des eigentlichen PCL Source Codes eingegangen. marker_color legt die Farbe des Textobjektes fest seg_id ist der Identifier des erzeugten Grafischen Segments marker_color = 2 gm_segment_create(seg_id) Nachfolgende Auszüge werden für jedes Element innerhalb einer FOR-Schleife ausgeführt. Der folgende Auszug ermittelt den Materialnamen, der als Text später den eigentlichen Inhalt unseres Textobjektes bildet. / Determines the current material name / db_get_material_name_from_id(mat_id, mat_name) Hier bestimmen wir den jeweiligen Elementschwerpunkt, der als Position unseres Textobjektes dient. / Extracts element center locations / fem_geom_elem_location(melm_str, xyz_array, nextracted) Umspeichern des 2dim Koordinatenarrayoutputs in einen Koordinatenvektorinput. xyz(1) = xyz_array(1, 1) xyz(2) = xyz_array(1, 2) xyz(3) = xyz_array(1, 3) Hier wird das jeweilige Textobjektes erzeugt. gm_draw_text(seg_id, marker_color, xyz, mat_name) Alle Grafischen Segmente werden mit Hilfe des nachfolgenden Befehls dargestellt. gm_segment_flush()

Beachtet werden sollte, daß man die ID der Grafiksegmente nicht ohne weiteres bestimmen kann. Daher hat sich folgender Trick bewährt. Man erzeugt ein neues Grafisches Segment und löscht anschließend alle Grafischen Segmente mit kleineren IDs inklusive des neu erzeugten Grafischen Segments. INTEGER seg_id, i gm_segment_create(seg_id) FOR (i = 1 TO seg_id) gm_segment_delete(i) END FOR PCL GUI und Viewport: Die Schriftgröße der Grafikschriften kann nachträglich über die Standardfunktionalität im Display -Menü geändert werden. Hierzu wählt man einen der vorgegebenen Werte für Label Font Size unter Entity Color/Label/Render.

Der vollständige PCL Source Code wird nun aufgeführt. #include "appforms.p" #include "lpenums.p" #include "lpkeywords.i" #define CLASS_NAME #define CLASS_NAME_QUOTED he_plot_mat_marker "he_plot_mat_marker" CLASS CLASS_NAME / ABSTRACT: This program creates text segments at the center of elements ========= showing the associated material name. KEYWORDS: None INPUT: None OUTPUT: None RETURN VALUES: None SIDE EFFECTS: DESCRIPTION: ============ ============================================================================= REVISION HISTORY: REVISION DATE AUTHOR EMAIL -------- ----------- ----------------------- -------------------------- 1 13-Jun-2017 Holger Eß / MSC Germany holger.essmscsoftware.com REVISION number and reason -------------------------- 1 Creation. / / Variable initialization / CLASSWIDE WIDGET main_form, sep, apply_button, cancel_button CLASSWIDE WIDGET select_frame, select_dbox CLASSWIDE STRING pick_list[virtual] CLASSWIDE STRING message[512] CLASSWIDE REAL form_height, form_width

/----------------------------------------------------------------------------/ FUNCTION init() / ABSTRACT: This function initializes the main form. KEYWORDS: FORM, WIDGET, MAIN INPUT: None OUTPUT: None RETURN VALUES: None SIDE EFFECTS: Hopefully none DESCRIPTION: ============================================================================= REVISION HISTORY: REVISION DATE AUTHOR EMAIL -------- ----------- ----------------------- -------------------------- 1 13-Jun-2017 Holger Eß / MSC Germany holger.essmscsoftware.com REVISION number and reason -------------------------- 1 Creation. / REAL REAL y_loc, x_loc sframe_height, sframe_width, sdbox_width, y_frame form_height = FORM_HGT_FULL form_width = FORM_WID_SML sframe_height = SDBOX_HGT_LABOVE + SFRAME_T_MARGIN + SFRAME_B_MARGIN + SFRAME_2EDGE sframe_width = SFRAME_WID_SINGLE sdbox_width = SDBOX_WID_SINGLE - SFRAME_2EDGE x_loc = 0.5(form_width - sframe_width) y_loc = FORM_T_MARGIN + 1.0INTER_WIDGET_SPACE main_form=ui_form_create( / callback / "", / x / FORM_X_LOC_SML, / y / FORM_Y_LOC, / position / "UL", / width / form_width,

/ height / form_height, / label / "Plot Material Name", / unused / "") / This frame contains the select databox. / select_frame = ui_selectframe_create( / parent / main_form, / callback / "", / x / x_loc, / y / y_loc, / width / sframe_width, / height / sframe_height, / label / "", / recycle / TRUE) y_frame = SFRAME_T_MARGIN / With help of that select databox the user can select the entities. / select_dbox=ui_selectdatabox_create( / parent / select_frame, / callback / "", / x / SFRAME_L_MARGIN, / y / y_frame, / label_length / 0.0, / box_length / sdbox_width, / label / "Select 2D Elements", / value / "", / label_above / TRUE, / datatype / "ELEM2D", / prompt / "") y_loc += sframe_height + 2INTER_WIDGET_SPACE sep = ui_separator_create( / parent / main_form, / name / "", / x / 0, / y / y_loc, / width / form_width, / horizontal / TRUE) y_loc += LINE_THICKNESS + 1.5 INTER_WIDGET_SPACE / This button executes the request. / apply_button = ui_button_create( / parent / main_form, / callback / "apply_button_cb", / x / BUTTON_HALF_X_LOC1, / y / y_loc, / width / BUTTON_WID_HALF, / height / 0, / label / "Apply", / labelinside / TRUE,

/ highlight / TRUE) / This button hides the main form. / cancel_button = ui_button_create( / parent / main_form, / callback / "cancel_cb", / x / BUTTON_HALF_X_LOC2, / y / y_loc, / width / BUTTON_WID_HALF, / height / 0, / label / "Cancel", / labelinside / TRUE, / highlight / FALSE) y_loc += BUTTON_DEFAULT_HGT + 1.0 INTER_WIDGET_SPACE form_height = y_loc + FORM_B_MARGIN ui_wid_set(main_form,"height", form_height) END FUNCTION / init / /----------------------------------------------------------------------------/ FUNCTION display() / ABSTRACT: This function controls the display of the GUI. ========= KEYWORDS: DISPLAY, FORM INPUT: None OUTPUT: None RETURN VALUES: 0 finished successful SIDE EFFECTS: DESCRIPTION: ============ ============================================================================= REVISION HISTORY: REVISION DATE AUTHOR EMAIL -------- ----------- ----------------------- -------------------------- 1 13-Jun-2017 Holger Eß / MSC Germany holger.essmscsoftware.com REVISION number and reason --------------------------

1 Creation. / / Check to see if Main Form has been initialized / IF (!ui_form_exists(class_name_quoted)) THEN ui_exec_function(class_name_quoted, "init") ui_form_display(class_name_quoted) ui_wid_set(select_dbox, "VALUE", "") ui_set_focus(select_dbox) ui_wid_refresh() RETURN(0) END FUNCTION / display / /----------------------------------------------------------------------------/ FUNCTION apply_button_cb() / ABSTRACT: This callback is associated to the button apply_button. ========= KEYWORDS: CALLBACK, WIDGET, BUTTON INPUT: None OUTPUT: None RETURN VALUES: 0 finished successful SIDE EFFECTS: DESCRIPTION: ============ ============================================================================= REVISION HISTORY: REVISION DATE AUTHOR EMAIL -------- ----------- ----------------------- -------------------------- 1 13-Jun-2017 Holger Eß / MSC Germany holger.essmscsoftware.com REVISION number and reason -------------------------- 1 Creation. /

INTEGER status INTEGER nelem_ids, elem_ids(virtual), region_ids(virtual), mat_id, seg_id INTEGER i, i_01, i_02, i_03, i_04, i_05, i_06, i_07, i_09, i_10 INTEGER marker_color, nextracted REAL STRING xyz_array(virtual), xyz(3) mat_name[32], s_01[32], melm_str[virtual] / Sets the autofitting, autocentering and autoextending to FALSE / auto_fitview(false) auto_center(false) auto_extend(false) ui_wid_get_vstring(select_dbox, "VALUE", pick_list) / In case of an empty pick list a warning message appeares. / IF (pick_list == " ") THEN message = "No 2D Elements selected!" write_line(message) RETURN(-1) marker_color = 2 gm_segment_create(seg_id) / Counts the number of elements of the select string / nelem_ids = fem_u_count_id_list(lp_sublist_element, pick_list, TRUE, status) SYS_ALLOCATE_ARRAY(elem_ids, 1, nelem_ids) SYS_ALLOCATE_ARRAY(region_ids, 1, nelem_ids) / Gets the element IDs of the select string / fem_u_get_id_list(lp_sublist_element, pick_list, nelem_ids, TRUE, elem_ids) SYS_ALLOCATE_STRING(melm_str, 7000) / Determines the Property Region IDs of the selected elements / db_get_region_for_elements(nelem_ids, elem_ids, region_ids) FOR (i = 1 TO nelem_ids) LOOP_ELEMS IF (region_ids(i)!= 0) THEN / Determines the Property Region Definition of the current element / status = db_get_region_definition(region_ids(i),

s_01, i_01, i_02, i_03, i_04, i_05, i_06, i_07, mat_id, i_09, i_10) IF (status!= 0) THEN msg_to_form(status, 4, appcode(status), 1, 1.0, "") RETURN(status) IF (mat_id!= 0) THEN / Determines the current material name / db_get_material_name_from_id(mat_id, mat_name) melm_str = "Elem"//" "//str_from_integer(elem_ids(i)) / Extracts element center locations / nextracted = 0 fem_geom_elem_location(melm_str, xyz_array, nextracted) IF (nextracted == 0) THEN RETURN(-2) xyz(1) = xyz_array(1, 1) xyz(2) = xyz_array(1, 2) xyz(3) = xyz_array(1, 3) SYS_FREE_ARRAY(xyz_array) gm_draw_text(seg_id, marker_color, xyz, mat_name) END FOR gm_segment_flush() RETURN(0) END FUNCTION / apply_button_cb / /----------------------------------------------------------------------------/ FUNCTION cancel_cb() / ABSTRACT: This callback is associated to the button cancel_button. =========

KEYWORDS: CALLBACK, WIDGET, BUTTON INPUT: None OUTPUT: None RETURN VALUES: 0 finished successful SIDE EFFECTS: DESCRIPTION: ============ ============================================================================= REVISION HISTORY: REVISION DATE AUTHOR EMAIL -------- ----------- ----------------------- -------------------------- 1 13-Jun-2017 Holger Eß / MSC Germany holger.essmscsoftware.com REVISION number and reason -------------------------- 1 Creation. / INTEGER seg_id, i gm_segment_create(seg_id) FOR (i = 1 TO seg_id) gm_segment_delete(i) END FOR display_cleanup( ) select_focus.exit() ui_form_hide(class_name_quoted) RETURN(0) END FUNCTION / cancel_cb / /----------------------------------------------------------------------------/ END CLASS / he_plot_mat_marker /