| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
Autor
|
Thema: Annotation - Text erstellen und formatieren (1511 mal gelesen)
|
Michael318 Mitglied Konstrukteur
Beiträge: 20 Registriert: 06.12.2017 Modeling 18.1 M020 ModelManager 18.1 M020
|
erstellt am: 12. Dez. 2017 10:12 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich versuche aus eingelesenen Werten eine Tabelle auf eine Annotation-Zeichnung zu bringen. Die Textvorgaben will ich fest vorgeben. Bisher habe ich:
Code:
(in-package :custom) (use-package :OLI) (use-package :docu) (let (GANZEZEILE line ZEILEHINZU GANZEZEILELISTE z1 z2)
(with-open-file (stream "c:\\Temp\\super.txt") (loop for line = (read-line stream nil 'foo) until (eq line 'foo) do (setf GANZEZEILE line) (setf ZEILEHINZU (list GANZEZEILE)) (setf GANZEZEILELISTE (append GANZEZEILELISTE ZEILEHINZU)) ) ) (SETF z1 (remove #\Return (nth 0 GANZEZEILELISTE))) (SETF z2 (remove #\Return (nth 1 GANZEZEILELISTE))) (sd-am-create-sketch :name "VZ-Tabelle" :position -400,50 :owner_type :current-sheet) (sd-am-create-text :text (format nil "~A~A~A~A" z1 " Äpfel + " z2 " Birnen") :position -350,40 :owner_type :sketch :owner "1/VZ-Tabelle") )
Ich möchte nun mehrere Textfelder erstellen (keine Thema) und die Textvorgaben individuell anpassen. Setze ich vorher z.B. Code:
(sd-set-setting-value "Annotation/General/TextStyle/Size" :value 5)
wird es aber nicht berücksichtigt. Im IKIT wird auch Code:
(sd-am-text-attributes-struct-size 1)
genannt, aber auch das führt mich nicht zum Ziel. Ich glaube ja, dass die Lösung nicht all zu weit weg ist, aber ich komme nicht drauf. Kann mir jemand helfen? Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 508 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 19R3 Mechanical Pro
|
erstellt am: 12. Dez. 2017 10:52 <-- editieren / zitieren --> Unities abgeben: Nur für Michael318
Hallo Michael, um Texte zu erstellen benutze ich immer 'am-create-text' und das sieht dann z.B. so aus: Code: (AM_CREATE_TEXT :docu-text (format nil "~a" anzahl_AE) :owner :sketch (format nil "/~a/~a/~a" csn bg_sketch_Rah skizzenname_AE) :size 3.5 :color 16776960 :done :ratio 0.8 :adjust 5 (gpnt2d (1) (1)) );end AM_CREATE_TEXT :docu-text
So ist jeder Text ist individuell anpassbar. Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael318 Mitglied Konstrukteur
Beiträge: 20 Registriert: 06.12.2017 Modeling 18.1 M020 ModelManager 18.1 M020
|
erstellt am: 12. Dez. 2017 11:35 <-- editieren / zitieren --> Unities abgeben:
Ich kann mir nicht helfen, aber ich bekomme es nicht hin: In meinem Minimalbeispiel erstellt er nicht den Text "müll" Code:
(in-package :custom) (use-package :OLI)(sd-am-create-sketch :name "VZ-Tabelle" :position -400,50 :owner_type :current-sheet) (sd-am-create-text :text "Schnecke/" :position -390,40 :owner_type :sketch :owner "1/VZ-Tabelle") (sd-am-create-text :text "worm" :position -370,40 :owner_type :sketch :owner "1/VZ-Tabelle") (AM_CREATE_TEXT (format nil "~a" "müll") :owner (format nil "/~a/~a" "1" "VZ-Tabelle") :size 3.5 :color 16776960 :done :ratio 0.8 :adjust 2 :slant 15 -350,30
)
Ich glaube ich habe Tomaten auf den Augen.. Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Greskamp Mitglied Ingenieur
Beiträge: 523 Registriert: 12.03.2003
|
erstellt am: 12. Dez. 2017 11:50 <-- editieren / zitieren --> Unities abgeben: Nur für Michael318
|
Michael318 Mitglied Konstrukteur
Beiträge: 20 Registriert: 06.12.2017 Modeling 18.1 M020 ModelManager 18.1 M020
|
erstellt am: 12. Dez. 2017 11:53 <-- editieren / zitieren --> Unities abgeben:
|
Greskamp Mitglied Ingenieur
Beiträge: 523 Registriert: 12.03.2003
|
erstellt am: 12. Dez. 2017 11:55 <-- editieren / zitieren --> Unities abgeben: Nur für Michael318
|
Michael318 Mitglied Konstrukteur
Beiträge: 20 Registriert: 06.12.2017 Modeling 18.1 M020 ModelManager 18.1 M020
|
erstellt am: 12. Dez. 2017 11:58 <-- editieren / zitieren --> Unities abgeben:
|
MiBr Mitglied Konstrukteur
Beiträge: 508 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 19R3 Mechanical Pro
|
erstellt am: 12. Dez. 2017 12:49 <-- editieren / zitieren --> Unities abgeben: Nur für Michael318
Hallo, bei meinem Test hat es erst auch nicht funktioniert! Erst nachdem ich die Fehlermeldung (siehe I-Kit) deaktiviert habe, hat es geklappt. Vieleicht lag es bei dir erst ja auch daran! Code: (setf muell "Müll") (setf docu::*docu-hide-wrong-owner-warning* t) ;Fehlermeldung daktiv (sd-call-cmds (progn (sd-am-create-sketch :name "VZ-Tabelle" :position -400,50 :owner_type :current-sheet) (AM_CREATE_TEXT :docu-text (format nil "Was für ein ~a" muell) :owner "/1/VZ-Tabelle" :size 3.5 :color 16776960 :done :ratio 0.8 :adjust 2 :slant (* 15 (/ pi 180)) -350,30) ;(AM_CREATE_TEXT -> UND NOCH EIN TEXT ) ;end progn ) ;end sd-call-cmds (setf docu::*docu-hide-wrong-owner-warning* nil)
Zudem solltest Du das Eintragen mit einem '(sd-call-cmds (progn' versehen, damit du beim SCHRITT RÜCKGÄNGIG machen nicht jeden einzelnen Texteintrag klicken musst. Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael318 Mitglied Konstrukteur
Beiträge: 20 Registriert: 06.12.2017 Modeling 18.1 M020 ModelManager 18.1 M020
|
erstellt am: 13. Dez. 2017 14:47 <-- editieren / zitieren --> Unities abgeben:
Mallo Michael, ich habe das versucht, aber bekomme durch das sd-call-cmds einen Fehler - die Skizze wird erzeugt, aber kein Text. Sobald ich sd-call-cmds weg lasse und nur noch progn steht wird beim ersten Aufruf über die Toolbox nur die Skizze erstellt, aber kein Text mit der Meldung, dass die Zeichenfolge nicht dem Element des gewünschten Typs entspricht. Beim zweiten Aufruf läuft es wie erwartet (aber nur, wenn ich die Skizze aus dem ersten Aufruf noch nicht gelöscht habe). Kann das einer erklären? Code:
(in-package :custom) (use-package :OLI) (use-package :docu)(sd-defdialog 'VZ-Tabelle :dialog-title "VZ-Tabelle" :toolbox-button t :variables '(("-") (SW_SR :range ("Schnecke" "Schneckenrad") :title "Schnecke oder Rad")) :ok-action '(progn ; ;;----- (let ( z1 ) (setf z1 "Quatsch") (setf docu::*docu-hide-wrong-owner-warning* t) (IF (string= SW_SR "Schnecke") (progn (sd-am-create-sketch :name "VZ-Tabelle" :position -192.2,5 :owner_type :current-sheet) (AM_CREATE_TEXT (format nil "~a" "kein ") :owner (format nil "/~a/~a" "1" "VZ-Tabelle") :size 3.5 :color (sd-rgb-to-color 255,255,255) :done :ratio 1 :adjust 1 :slant 0 -100,100 ) (AM_CREATE_TEXT (format nil "~a" z1) :owner (format nil "/~a/~a" "1" "VZ-Tabelle") :size 3.5 :color (sd-rgb-to-color 255,255,255) :done :ratio 1 :adjust 1 :slant 0 -80,100 ) ) ;end progn (progn (AM_CREATE_TEXT (format nil "~a" "so ein ") :owner (format nil "/~a/~a" "1" "VZ-Tabelle") :size 3.5 :color (sd-rgb-to-color 255,255,255) :done :ratio 1 :adjust 1 :slant 0 -100,100 ) (AM_CREATE_TEXT (format nil "~a" z1) :owner (format nil "/~a/~a" "1" "VZ-Tabelle") :size 3.5 :color (sd-rgb-to-color 255,255,255) :done :ratio 1 :adjust 1 :slant 0 -80,100 ) ) ;end progn ) ;end if ) ;end let ) ;end progn ) ;end sd-defdialog
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 508 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 19R3 Mechanical Pro
|
erstellt am: 13. Dez. 2017 16:27 <-- editieren / zitieren --> Unities abgeben: Nur für Michael318
Hallo Michael, bin leider nicht am Arbeitsplatz, aber auf dem ersten Blick würde ich sagen da fehlt hinter am-create_text das :docu-text. Zum '(sd-call..(progn' diesen musst Du nach dem folgenden Code setzen und anschließend erst den SD-Call... siehe vorrherige Antwort. Code: (setf docu::*docu-hide-wrong-owner-warning* t)
(progn vor Let sollte über sein. und Du solltest die Warnung am Ende aktivieren! Zudem vermute ich, dass das erstellen der Skizze nicht mit in der If-Bedingung sein sollte, oder wenn dann in beiden! Wenn Du Winkel (slant) nutz im sd-call, musst du dies in Rad angeben! Daher :slant (* 15 (/ pi 180)) es gibt auch ein Befehl rad-to-irgendwas, so funzt es aber auch! Vielleicht kommst Du mit den Hinweisen erst mal weiter, wenn nicht melde Dich! Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 13. Dez. 2017 19:50 <-- editieren / zitieren --> Unities abgeben: Nur für Michael318
@Michael318 @ Fragen vorab:
- warum erstellst Du die Skizze nicht an der Stelle des ersten Textes? Das wuerde die Probleme mit der wrong-owner Geschichte auf alle Faelle reduzieren
--------------------- Zitat: Original erstellt von MiBr: aber auf dem ersten Blick würde ich sagen da fehlt hinter am-create_text das :DOCU-TEXT.
Ja / Nein. Auf alle Faelle haette ich fast den Text uebersehen aufgrund der ungewoehnlichen Einrueckung und Schreibweise. Aber: im interaktiven Betrieb "springt" die am_create_text routine immer wieder in den docu-text , bzw. die positionierung. Deshalb muss da auch ein :DOCU-TEXT vor den "text" Zitat: Zum '(sd-call..(progn' diesen musst Du nach dem folgenden Code setzen und anschließend erst den SD-Call
Da wir hier weder die failure-form / noch die :success-form vom sd-call-cmds verwenden reicht EIN sd-call-cmds um die ok-action herum. Zitat:
Code: (setf docu::*docu-hide-wrong-owner-warning* t)
Du solltest die Warnung am Ende aktivieren
besser: du solltest Dir am Anfang den Originalwert merken und DIESEN am Ende wieder herstellen. Zitat: Zudem vermute ich, dass das Erstellen der Skizze nicht mit in der If-Bedingung sein sollte
Jupp! Zitat: Wenn Du Winkel (slant) nutz ... musst du dies in Rad angeben! Daher ....rad-to-irgendwas
sd-deg-to-rad : NUTZE IKIT funktionen wann immer sie es gibt! _________________________ @Mibr: Deine Analysekuenste sind doch gar nicht so schlecht. Brauchst dich nicht verstecken. Aus dir wird noch was. ... Also (lisp (:technisch)) _________________________ Ich habe mal 3 varianten erzeugt. - 01: mit nur kleinen Aenderungen (vor allem das oben gesagte)
- 02: beide Texte einer Reihe werden (sogar) mit den selben properties erzeugt. Man kann beide Texte in einem Aufruf erzeugen.
- 03: da in beiden Faellen "Schnecke" und "Schneckenrad" die beiden Texte in der selben Art erzeugt werden, habe ich das mal in eine local-function ausgelagert, die dann mal so/mal so aufgerufen wird.
@Michael318 : ganz heisser Kandidat zum Spicken fuer dich: Koordinatentabelle. Ueberhaupt lohnt es sich alle(!) LSP files aus dem download ordner unsere Hilfeseite lokal auf der Platte zu haben und diese dann nach bereits vorhanden Codestellen immer wieder zu durchsuchen. Die Koordinatentabelle macht intensiven Gebrauch von AM_SKETCH_CREATE und AM_CREATE_TEXT. Du musst das Rad nicht neu erfinden!
------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael318 Mitglied Konstrukteur
Beiträge: 20 Registriert: 06.12.2017 Modeling 18.1 M020 ModelManager 18.1 M020
|
erstellt am: 15. Dez. 2017 10:39 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, vielen Dank für eure Hinweise. Ich habe mich gestern daran gemacht, diese einzuarbeiten und jetzt läuft es. Zitat:
warum erstellst Du die Skizze nicht an der Stelle des ersten Textes? Das wuerde die Probleme mit der wrong-owner Geschichte auf alle Faelle reduzieren
Nun ja, ich habe den Skizzenursprung an einen Eckpunkt meiner Tabelle setzen wollen und da ist nun mal kein Text. Dass das solche Probleme machen könnte, war mir zu dem Zeitpunkt nicht bewusst. Die drei Versionen habe ich mir mal angesehen. DANKE für die Bemühungen!! Habe mich letztlich für die zweite Version entschieden. Mehrere Texte in einem am_create_text verbessert die Performance auch deutlich. Die dritte Version finde ich eigentlich auch sehr gut. Ich lese aber meine Werte erst nach der ok-Action ein. Hier habe ich wahrscheinlich den Fehler gemacht, auch die Variablen danach zu setzen, sodass die Fehlermeldung unumgänglich war. Die Koordinatentabelle habe ich mir vorher auch schon angesehen, wenn man aber nur begrenzte Lisp-Kenntnisse hat, dann wird man dadurch schon ganz schön erschlagen. Vielen Dank an euch!! Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 15. Dez. 2017 14:28 <-- editieren / zitieren --> Unities abgeben: Nur für Michael318
|