Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Elements/Programmierung
  Variable in dolist

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 PTC CREO
Autor Thema:  Variable in dolist (655 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: 27. Sep. 2022 12:06    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 möchte Lisps von mir entschlacken! In diesen habe ich ganze Batterien von '(sd-set-variable-status 'XY :value YX)'.
Muss halt X-Variablen einen Wert geben oder auf visible umstellen oder ... .
Da dachte ich mach mal eben eine Liste der Variablen und lasse diese dann mittels dolist durchlaufen.

Mit folgendem Code bin ich derzeitig am Proben:

Die Local-Functions:
- ko_setzen -> wie in X-Lsip bei mir
- ko_setzen_dolist -> wie ich es vereinfachen möchte

Code:
(in-package :custom)
(use-package  li)

(sd-defdialog 'dolist_var
:Dialog-title "dolist_var"
:toolbox-button t
:after-initialization '(progn (ko_setzen) (ko_setzen_dolist))
:variables '(
(ko_430)
(ko_440)
(ko_450)
(ko_790)
) ;end variables
k-action '(progn ())

:local-functions
'(
(ko_setzen ()
(let (nummer)
  (setf nummer 1)
  (sd-set-variable-status 'ko_430 :value nummer)
  (sd-set-variable-status 'ko_440 :value nummer)
  (sd-set-variable-status 'ko_450 :value nummer)
  ; ....
  (sd-set-variable-status 'ko_790 :value nummer)
  (pprint (format nil "ohne dolist: ~a ~a ~a ~a" ko_430 ko_440 ko_450 ko_790))
)
)
(ko_setzen_dolist ()
(let (nummer ko_liste)
  (setf nummer 2)
  (setq ko_liste '(ko_430 ko_440 ko_450 ko_790))
  (dolist (ko_variable ko_liste)
    (sd-set-variable-status 'ko_variable :value nummer)
  )
  (pprint (format nil "mit dolist: ~a ~a ~a ~a" ko_430 ko_440 ko_450 ko_790))
)
)
) ;end local-functions
) ;end sd-defdialog



Eigentlcih sollte in der Konsole einmal vier 1 stehen und dann vier 2 aber das funzt nicht!
Ich find keine Lösung oder geht das garnicht?

Gruß Michael

[Diese Nachricht wurde von MiBr am 27. Sep. 2022 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: 28. Sep. 2022 19:01    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

Hallo Michael,

nicht ganz einfach ... nicht ganz einfach ...

zuerst mal:

Code:
(sd-set-variable-status 'ko_790 :value nummer)

Was ist 'ko_790 ?  ...    ein Wert?  Eine Variable? Ein Symbol?

Es ist ein <ikit>variable {SYMBOL}</ikit>  mit Deiner originale Liste hand habst du aber keine Symbole.

Code:
(setq ko_liste '(ko_430 ko_440 ko_450 ko_790))
Dein Original
Code:
(setq ko_liste (list ko_430 ko_440 ko_450 ko_790))
Wäre die Liste der Variablen WERTE dieser Variablen..

Passt auch nicht

Mein erster Gedanke war ... wir brauchen eine LISTe der SYMBOLE der Variablen!

Code:
(setq ko_liste '('ko_430 'ko_440 'ko_450 'ko_790))

Damit funktioniert es aber auch nicht.

Code:
(setq ko_variable :value nummer)
in der Dolist um den Wert direkt zuzuweisen (also ohne die Ausfürhung von :after-input)  hat mich auch nicht weiter gebracht.

Also nnnnnneeeeeeeeeeeeeeeeeee

Schluss endlich habe ich mich dann zurückversetzt (back to the basics) und dachte. so .  . ..  wenn jemand einen Dialog mit 25..  30 .. 142 dialog variablen vollballert.. ..  dann läuft eh was falsch:    Konzeptionelles Problem

Und dann habe ich mich an einen meiner Dialog aus dem Annotation erinnert.

define Symbol ..     

damit kann man eine z.B. Sketch auswählen und 1... n Texte als variable Text Parameter definieren
.

Beim NEU erzeugen eines solchen MI file basierten Symbols hat man dann ZuGriff auf 1..N  Parametern..    ABER: es werden immer nur 5 dargestellt und man 'blättert'  durch .. 

Programmatisch ist das dadurch gelöst das man einen (praktisch) unendlich lange Liste von (text)Paramtern hat und dies 'stückchenweise'  (bei uns sind es fünf) ins UI einblendet. Diese kann man dann ändern und wenn man andere braucht muss man 'blättern'.

programmatisch arbeit man dann für die 1..N Parameter mit einer LISTe ..  bzw einer LIST-of-LISTs .  oder mit einem 1 , reps. 2 dimensionalem Array im Hintergrund.  UI technisch stellt man immer nur einen Bruchteil dar, und die Änderungen in diesem Bruchteil werden übernommen und dan blättert man weiter.

------------------
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

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: 28. Sep. 2022 19:14    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

Noch ein Hinweis:

sd-defdialog ist ein LISP MACRO .  .. also der erzeugt/gereniert MEHR LISP Code (ziemlich viel  in diesem Fall)

sd-set-variable ist (AFAIR) ebenso ein LISP MACRO .  .. also der erzeugt/gereniert MEHR LIST Code

Das beides verschachtelt.. 

Wer will möge sich mit MACRO EXPAND (o.ä) auseinander setzen ..

Ja ..  habe ich dann und wann in der Vergangenheit ..  auch genutzt---    Aber MiVi war ein toller, hilfsbereiter und KOMPETENTER Kollege..    der hat's damals bei CoCreate gewuppt! - MiVi war der defdialog Guru!!

------------------
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

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: 28. Sep. 2022 19:22    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

===>>> sd-am-create-symbol-dialog ist ebenfalls ein LISP MACRO  (diesmal aus meiner Feder).. der erweiterten  LISP code generiert,  jener ruft aber auch *nur* den LISP Macro sd-defdialog auf ..  ...  der wiederum LISP code generiert..  welcher..  .. usw..

Aus 42 Zeilen LISP code können also schnell 1042 Zeilen expandierter LISP code werden, der beim Compilieren locker 42.000 Zeilen C++ Code ergibt.. um dann eine DLL zu erzeugen.

<nähkästchen/>  (ZU)

------------------
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

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: 29. Sep. 2022 11:45    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,

Zitat:
nicht ganz einfach ... nicht ganz einfach ...

Gott seid dank! Dachte schon ich seh die Lösung trotz lauter Klammern nicht!

Danke für deine ausführliche Antwort und auch wenn´s nicht wirklich geht habe ich
wieder was gelernt!

BESTEN DANK!

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: 30. Sep. 2022 17:00    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


am_create_fbased_symbol.png

 
Zitat:
Original erstellt von MiBr:
BESTEN DANK!
Michael

Gerne.

Guck dir mal das UI von dem dialog mit Datei Basierten Symbolen an. Da kann man 1  bis N 'variablen' definieren, die man dann beim platzieren mit eigenen Werten befüttern kann.

Dargestellt werden hier immer nur 5. Programmtechnisch mappt man aus einer (un)endlichen Liste immer nur 5 Stück ins UI. a) den Title und b) den Wert. Beim 'blättern' springt man dann 5 weiter vor oder eben zurück.

im Dialog selbst sind es nur 5 FIXE Variablen werte. :P00 :P01  :P02  :P03  :P04

Wenn Du deine ganzen OK Variablen also nur in eine Liste fütterste..  und dann blätterst?  Beim Blättern wird der Offset als Pointer in die Liste verändert.

der After input von p01 sieht dann etwas so aus:

Code:
  (P01 :value-type :string
        :title " "
        :initial-optional t
        :after-input (progn
                      (setq index (+ 01 offset))  ;; der vom Blättern!
                      (setf (nth index par-list all-params) p01)
                      .....
                      )

Beim öffnen des Dialogs und beim Blättern musst du dann jeweils bei den 5 Variablen den title und den value setzen.. .. 

Vielleicht bekommst du so deine ko_ variablen besser in den Griff.    und gehst dabei nicht selber KO ;-)

Und eine weitere KO_942 Variable hätte NULL Auswirkung auf den dialog selbst.
Wenn's eine einfache Liste ist würde ich die Definition sogar in eine CSL Datei auslagern. Genaugenommen ist es eine Liste von Listen, letztere bestehen aus :title :value und :ismodified. Das Modified flag verhindert das man in der OK-action immer alle 142 Variablen behandelt.

-------
Aufgrund der gewachsenen Bildschirmgräßen würde ich heute übrigens 10 Variablen in einem Schwung anzeigen.

------------------
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