Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Elements/Programmierung
  docupntcnp X/Y ändern

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo
Autor Thema:  docupntcnp X/Y ändern (1318 mal gelesen)
MiBr
Mitglied
Konstrukteur


Sehen Sie sich das Profil von MiBr an!   Senden Sie eine Private Message an MiBr  Schreiben Sie einen Gästebucheintrag für MiBr

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: 30. Jan. 2018 10:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich versuche gerade mal wieder nee Lisp zu schreiben, in dieser würde ich einen Punkt wählen und einen
Text mit einer Verschiebung in X/Y absetzen.

Für den Punkt habe ich die Variable -> Ausw_pun <- , die ich im Anno mittels :value-type :docupntcnp ermittel.

Der Inhalt sieht dann z.B. so aus:
#S(GPNTDOCU X -856 Y 615 GPORT "Annotation")

Mittels (setq posX gpnt2d_x) (setq posY gpnt2d_y) kann ich dies auch entsprechend weiter verarbeiten
und das klappt alles gut und funzt.
Trotzdem denke ich, es wäre einfacher, wenn ich die Werte der Variable ändern könnte und mir so die zwei
weiteren Variablen  posX und posY sparen könnte.
Von daher die Frage: Kann ich den X und Y Wert der Variable ändern, wie z.B. den Wert X um 10 addieren?

Gruß Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

der_Wolfgang
Ehrenmitglied V.I.P. h.c.
Tastenhauer


Sehen Sie sich das Profil von der_Wolfgang an!   Senden Sie eine Private Message an der_Wolfgang  Schreiben Sie einen Gästebucheintrag für der_Wolfgang

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: 01. Feb. 2018 13:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MiBr 10 Unities + Antwort hilfreich

GPNTDOCU  ist eine LISP Struktur. Sehr einfach erkennbar an dem "#S(...)"  wenn man einen schnoeden print darauf macht (Ihr habt das schon 1024 beim (pprint sel-item) gesehen)

#S(GPNTDOCU

LISP Strukturen bestehen aus verschiendenen Komponenten und werden mit eine "special" funktion erzeugt.

Der aus 3D bekannte Punkt auf einer Arbeitsebenen verhaelt sich recht aehnlich, siehe Intergration kit -> "GPNT2D [structure]" :
integration_kit/reference/util_vec.html#gpnt2d


  • (make-gpnt2d :x x :y y)  ; die punkt struktur erzeugen, in dem man X und Z werte vorgibt
  • (copy-gpnt2d vec2d) ; den punkt kopieren
  • (gpnt2d-p gpnt3d) ; checken ob es genaus DIESE Struktur ist
  • (gpnt2d_x vec2d) ; die X komponente des Punktes erfragen
  • (gpnt2d_y vec2d) ; die Y komponente des Punktes erfragen

2D Punkte kann man sogar addieren (IKIT funktionen): sd-vec-add und andere Sachen damit treiben.

Im annotation gibt es 2 Konvertierungsfunktionen
● gpnt2d-to-gpntdocu
● gpntdocu-to-gpnt2d
die Konvertieren von der einen Struktur in die andere.
__________________________________________

Ein direktes Setzen des Wertes einer Komponente ist AFAIK nicht moeglich (habe es aber nicht probiert).
__________________________________________

Also bliebe nur das Erzeugen eines neuen Punktes:

Code:
(defparameter *annotation-view-port* "Annotation" )

(setq newpnt (MAKE-GPNTDOCU :x (+ old-value-x offest-x)
                            :y (+ old-value-y offest-y)
                            :gport *annotation-view-port*))



Du siehst, x und y musst du eh wieder einzeln handhaben. Ob die obige Variante dann 'einfacher' ist musst du selbst entscheiden.

------------------
Firefox ESRJava Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en)NotePad++BuFDi

[Diese Nachricht wurde von der_Wolfgang am 01. Feb. 2018 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

der_Wolfgang
Ehrenmitglied V.I.P. h.c.
Tastenhauer


Sehen Sie sich das Profil von der_Wolfgang an!   Senden Sie eine Private Message an der_Wolfgang  Schreiben Sie einen Gästebucheintrag für der_Wolfgang

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: 01. Feb. 2018 13:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MiBr 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von der_Wolfgang:
Ein direktes Setzen des Wertes einer Komponente ist AFAIK nicht moeglich (habe es aber nicht probiert).

Man(n) wird so halt wie ne Kuh und macht immer noch "MUHHHH".

Als ich noch ein paar Lisp-Strukture-Links an meine obige Antwort haengen wollte, als das waeren(english skills required!):
http://www.n-a-n-o.com/lisp/cmucl-tutorials/LISP-tutorial-15.html
http://www.lispworks.com/documentation/lw70/CLHS/Body/m_defstr.htm
https://www.tutorialspoint.com/lisp/lisp_structures.htm

fand ich heraus das man die Teile einer Struktur natuerlich DOCH direkt manipulieren kann (und das sieht so aehnlich aus wie bei getf... )

Code:
(pprint oldpoint)
(setf (GPNTDOCU_x oldpoint) 100) ;; setze den X wert auf 100
(setf (GPNTDOCU_y oldpoint) -42) ;; setze den X wert auf minus magie
(pprint oldpoint)
(setf (GPNTDOCU_x oldpoint) (+ (GPNTDOCU_x oldpoint) 100)) ;; vergroessere den X wert um 100
(setf (GPNTDOCU_y oldpoint) (+ (GPNTDOCU_y oldpoint) -42)) ;; vergroessere den Y wert um -42
(pprint oldpoint)

man achte auf den feinen Unterschied bei der Verwendung von "-" und "_" hinter GPNTDOCU.  Der Teufel sitzt bekanntlich im Detail  

So weit die Therorie meinerseits..... 

[edit]Aufgrund Michaels Erkenntnis (2 Postings spaeter): Beispiel korrigiert und Text angepasst[/edit]
------------------
Firefox ESRJava Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en)NotePad++BuFDi

[Diese Nachricht wurde von der_Wolfgang am 03. Feb. 2018 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MiBr
Mitglied
Konstrukteur


Sehen Sie sich das Profil von MiBr an!   Senden Sie eine Private Message an MiBr  Schreiben Sie einen Gästebucheintrag für MiBr

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: 01. Feb. 2018 15:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Wolfgang,

habs gerade Versucht, bin aber leider nicht weit gekommen. Wenn ich das wie
folgt mache, dann bekomme eine Fehlermeldung beim Laden der Lisp:

Code:
(Ausw_pun
:value-type :DOCUPNTCNP
:title "Punkt"
:toggle-type :invisible
:after-input (progn (pprint Ausw_pun)
(setf (GPNTDOCU-x Ausw_pun) (+ (GPNTDOCU_x Ausw_pun) 100))
(setf (GPNTDOCU-y Ausw_pun) (+ (GPNTDOCU_y Ausw_pun) -42))
(pprint Ausw_pun)
)
)

Fehlermeldung:

LISP-Fehler:
Cannot expand the SETF form (GPNTDOCU-X AUSW_PUN).

Weiß nicht ob hilft, aber wenn ich anstelle von setf setq benutze, dann wird die Lisp
geladen, aber erhalte dann die Fehlermeldung:

LISP-Fehler:
(CUSTOM::GPNTDOCU-X CUSTOM::AUSW_PUN) is not a symbol.

Gruß Michael

[Diese Nachricht wurde von MiBr am 01. Feb. 2018 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MiBr
Mitglied
Konstrukteur


Sehen Sie sich das Profil von MiBr an!   Senden Sie eine Private Message an MiBr  Schreiben Sie einen Gästebucheintrag für MiBr

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: 01. Feb. 2018 15:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Wolfgang,

so habs mal mit "_" bei beiden GPNTDOCU ausprobiert und es funktioniert.
Also so:

Code:

(setf (GPNTDOCU_x Ausw_pun) (+ (GPNTDOCU_x Ausw_pun) 100))
(setf (GPNTDOCU_y Ausw_pun) (+ (GPNTDOCU_y Ausw_pun) -100))

Also bleibt mir mal wieder nichts anderes als DANKE zu sagen!

Gruß Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

der_Wolfgang
Ehrenmitglied V.I.P. h.c.
Tastenhauer


Sehen Sie sich das Profil von der_Wolfgang an!   Senden Sie eine Private Message an der_Wolfgang  Schreiben Sie einen Gästebucheintrag für der_Wolfgang

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: 03. Feb. 2018 14:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MiBr 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von MiBr:
so habs mal mit "_" bei beiden GPNTDOCU ausprobiert und es funktioniert.

ah prima! 

Danke fuer's testen und fixen.

So ein bischen kam mir das auch komisch vor mit dem '-'. Aber ich konnte es nicht testen ("So weit die Therorie meinerseits").

Ich erinnere sogar man kann festlegen welches Zeichen als Trenner zwischen StruktureNAME und StruktureKOMPONENTENNAME verwendet wird. Aber das ist tief im LISP. Siehe die Beschreibung von :conc-name. Aber das wollen wir HIER nicht vertiefen. 

------------------
Firefox ESRJava Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en)NotePad++BuFDi

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz