Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Elements/Programmierung
  SEL_ITEM von neu erstelltem Objekt ermitteln

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:  SEL_ITEM von neu erstelltem Objekt ermitteln (461 mal gelesen)
holt
Mitglied
Systembetreuer CAD


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

Beiträge: 713
Registriert: 07.08.2003

Corei7 3770K, Win7-64, 16GB
PNY Quadro 2000K
CoCreate Modeling 18.10
CoCreate Drafting 18.10
CoCreate ModelManager 18.10

erstellt am: 13. Okt. 2008 15:09    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


am_copy_view.lsp.txt

 
Hallo,

ich stehe gerade vor dem Problem, das in diesem Beitrag erwähnt wird.

Ich möchte nämlich einer innerhalb eines Dialogs neu erstellten Ansicht die Eigenschaften einer bestehenden Ansicht zuweisen.
Leider liefert in meinem Fall sd-call-cmds keinen Rückgabewert für AM_CREATE_STANDARD_VIEWS.
Den Namen der Ansicht kennt man ja auch nicht, da dieser automatisch vergeben wird.

Hat jemand eine Idee, wie man trotzdem an den Namen oder das SEL_ITEM der neu erstellten Ansicht kommt?

Anbei ein Beispielcode.

------------------
Gruß aus dem Salzkammergut

Thomas

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

clausb
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 13. Okt. 2008 15:46    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 holt 10 Unities + Antwort hilfreich


Vorher und nachher eine Liste der Views bauen, dann vergleichen? (Geht in Lisp trivial einfach, mittels set-difference, siehe http://clhs.lisp.se/Body/f_set_di.htm  ).


------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/

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: 13. Okt. 2008 19:41    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 holt 10 Unities + Antwort hilfreich

IKIT docu..   (sd-am-create-standard-view ...)

------------------------------------
Die von Claus vorgeschlagene Methode könnte man schon mal auf das aktuelle (oder anvisierte) Viewset begrenzen, dann hast du deutlich weniger Ansichten in der Hand.

Indirekt brauchst Du dann aber auch eine sd-(am)-view-equal-p  Funktion, oder eben parameter fuer den listen Diff

beim Hantieren mit 3d Ansichten (ungetestet):

Code:
(nset-difference lst1 lst2 :test #'sd-string= :key #'sd-inq-obj-pathname)

beim Hantieren mit 2d Ansichten (ungetestet):

Code:
(nset-difference lst1 lst2 :test #'sd-string= :key #'view-struc-name-oder-so-aehnlich)

------------------------------------

aber die IKIT variante erspart dir Kopfzergrübeln und die relative position bekommst noch geschenkt.

------------------
Seamonkey Firefox Thunderbird  Seamonkey auf deutsch ● OSD Hilfeseite (de) / help page (en)NotePad++

[Diese Nachricht wurde von der_Wolfgang am 13. Okt. 2008 editiert.]

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

holt
Mitglied
Systembetreuer CAD


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

Beiträge: 713
Registriert: 07.08.2003

Corei7 3770K, Win7-64, 16GB
PNY Quadro 2000K
CoCreate Modeling 18.10
CoCreate Drafting 18.10
CoCreate ModelManager 18.10

erstellt am: 14. Okt. 2008 09:50    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,

Danke euch beiden für die guten Anregungen!

@Wolfgang:

Zitat:
IKIT docu..  (sd-am-create-standard-view ...)

Das verwende ich in meinem Codebeispiel bereits für orthogonale und ISO-Ansichten.
Leider funktioniert der Befehl bei allgemeinen Ansichten nicht, daher in diesem Fall der Weg über (sd-call-cmds (AM_CREATE_STANDARD_VIEWS ...

------------------
Gruß aus dem Salzkammergut

Thomas

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

holt
Mitglied
Systembetreuer CAD


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

Beiträge: 713
Registriert: 07.08.2003

Corei7 3770K, Win7-64, 16GB
PNY Quadro 2000K
CoCreate Modeling 18.10
CoCreate Drafting 18.10
CoCreate ModelManager 18.10

erstellt am: 14. Okt. 2008 14:28    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

Geschafft!

Ich habe die Differenz mit

Code:
(nset-difference view_lst2 view_lst1 :test #'equal :key #'second)
gebildet, da die Liste der Ansichten aus Sublisten mit 3D- und 2D-Ansichten besteht (Ergebnis von SD-AM-VIEW-SET-STRUCT).
Aus dem Rückgabewert habe ich die :VIEW-2D extrahiert.

Nur interessehalber: Es gäbe noch die Möglichkeit, bei :key anstatt second eine lambda-Funktion zu verwenden:

Code:
(lambda (vlst) (getf vlst :view-2d))
Was ist besser?

------------------
Gruß aus dem Salzkammergut

Thomas

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

clausb
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 14. Okt. 2008 17:08    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 holt 10 Unities + Antwort hilfreich

Zunächst: Glückwunsch! 8-)

Zitat:
Original erstellt von holt:
Nur interessehalber: Es gäbe noch die Möglichkeit, bei :key anstatt second eine lambda-Funktion zu verwenden:
Code:
(lambda (vlst) (getf vlst :view-2d))
Was ist besser?

Faustregel: Das, was weniger Code erzeugt 8-)

Kleine Anmerkung noch: nset-difference ist die "destruktive" Variante von set-difference; "destruktiv" ist die Variante, weil sie eventuell ihr erstes Eingabeargument verändert. Wenn Du die erste Liste also hinterher (in ihrem Originalzustand) noch brauchst, bist Du mit (set-difference) besser dran.

Claus

------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/

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: 14. Okt. 2008 22:26    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 holt 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von clausb:
Faustregel: Das, was weniger Code erzeugt 8-)

Ich interveniere!!! 

--> second ist falsch! 

IKIT docu:
SD-AM-VIEW-SET-STRUCT -> views ->  {LIST of key/value lists}

Du bekommst also eine Liste von Property listen.

Also:

Code:
'(
  ( :view-3d sel-item-of-3Dview-A  :view-2d sel-item-of-2Dview-A )
  ( :view-3d sel-item-of-3Dview-C  :view-2d sel-item-of-2Dview-C )
  ( :view-3d sel-item-of-3Dview-V  :view-2d sel-item-of-2Dview-V )
  ....)
Was Du nun mit second machst ist: **blind** das 2. element von  z.b.  ( :view-3d sel-item-of-3Dview-A  :view-2d sel-item-of-2Dview-A ) zu nehmen.

Property listen haben aber keine definierte Reihenfolge der Properties (sonst könnte man sich auch im obigen fall die keywörter sparen und ne schnöde liste mit fester Reihenfolge nehmen)

Vollkommen identisch (im Sinn der property list, und eben auch im Sinne der IKIT docu) ist:

Code:
'(
  ( :view-2d sel-item-of-2Dview-A  :view-3d sel-item-of-3Dview-A )
  ( :view-2d sel-item-of-2Dview-C  :view-3d sel-item-of-3Dview-C )
  ( :view-2d sel-item-of-2Dview-V  :view-3d sel-item-of-3Dview-V )
  ....)
Mit second langst Du dann voll daneben!  Es ist also NICHT der kürzere code, da hat die Faust daneben gelangt! 

lambda + getf !!

------------------
Seamonkey Firefox Thunderbird  Seamonkey auf deutsch ● OSD Hilfeseite (de) / help page (en)NotePad++

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

holt
Mitglied
Systembetreuer CAD


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

Beiträge: 713
Registriert: 07.08.2003

Corei7 3770K, Win7-64, 16GB
PNY Quadro 2000K
CoCreate Modeling 18.10
CoCreate Drafting 18.10
CoCreate ModelManager 18.10

erstellt am: 15. Okt. 2008 06:58    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

Zitat:
Original erstellt von der_Wolfgang:
Property listen haben aber keine definierte Reihenfolge der Properties (sonst könnte man sich auch im obigen fall die keywörter sparen und ne schnöde liste mit fester Reihenfolge nehmen)

Genau darauf wollte ich hinaus! Ich hatte schon das dumpfe Gefühl, dass second nicht ganz sicher ist, darum habe ich die Frage gestellt.

Danke!

------------------
Gruß aus dem Salzkammergut

Thomas

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



Anwendungsingenieur (m/w/d) / Technical Support Specialist
Menschen und Technologien zu verbinden, den Perfect Match für unsere Kunden zu gestalten, immer die richtigen Expert:innen für die jeweilige Herausforderung zu finden - das ist unser Anspruch bei FERCHAU und dafür suchen wir Sie: von einem unserer Kunden, einem der marktführenden Herstellern von Getrieben, Getriebemotoren und Elektromotoren, sind wir exklusiv mit der Besetzung der Stelle der:des Anwendungsingenieur:in bzw....
Anzeige ansehenVertriebsingenieur
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: 15. Okt. 2008 20:55    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 holt 10 Unities + Antwort hilfreich

Property listen haben den entscheidenden Vorteil das sie flexibler sind.  Man kann sie ohne Problem erweitern, und dies gefährdet nicht vorhandene Implementierungen (ja, mit Bedacht kann man das bei anderen Methoden auch vermeiden).

Nett bei einem getf Aufruf is auch der optionale fallback parameter:

Code:
(getf proplist :size 42)
will heissen: wenn :size in der liste vorkommt wird es genommen, wenn nicht, wird 42 genommen.

Ich persönlich ziehe property listen den im IKIT mehr gebräuchlichen Strukturen vor. Naja, die Geschmäcker sind halt verschieden ;-)

------------------
Seamonkey Firefox Thunderbird  Seamonkey auf deutsch ● OSD Hilfeseite (de) / help page (en)NotePad++

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