Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Elements/Programmierung
  Lisp Schleife

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:  Lisp Schleife (2493 mal gelesen)
noxx
Mitglied
Steuerzahler


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

Beiträge: 801
Registriert: 13.12.2004

OS: Win 7 Ultimate 64 bit SP1
Speicher: 30 GB RAM
Grafik: nVidia Quadro 4000
Creo Modelling v17.0

erstellt am: 31. Aug. 2011 14:34    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,

versuche gerade ein Makro anzupassen, komme aber
nicht mit den Schleifen zurecht. Hatte es mit eine
While Schleife probiert, das geht aber im Modelling
wohl nicht.

Evtl kann mir da einer helfen

Dieser Befehl soll 20x durchlaufen werden, die Zahl
nach dem Unterstrich (hier die _1) jeweils um 1 erhöht werden:

(setf ubogen_1 (* 0.5 Winkel_1 DM_Unten ))

Danke schonmal

Gruss

------------------
Modelling 17.x
WinXP SP3
-------------------------------
Mathcad kostenlos: SMath Studio

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: 31. Aug. 2011 17: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 noxx 10 Unities + Antwort hilfreich

In Common Lisp gibt es kein "while" (egal ob in CoCreate Modeling oder anderswo). Stattdessen zum Beispiel:

Code:

  (loop for i from 1 to 20 do (print i))

Das Zuweisen auf zwanzig verschiedene Variablen, wie Du es vorhast, sieht nach der falschen Strategie aus. Stattdessen verwendet man besser ein Feld.

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

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

noxx
Mitglied
Steuerzahler


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

Beiträge: 801
Registriert: 13.12.2004

OS: Win 7 Ultimate 64 bit SP1
Speicher: 30 GB RAM
Grafik: nVidia Quadro 4000
Creo Modelling v17.0

erstellt am: 01. Sep. 2011 08:29    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

danke, und wie geht das mit dem feld?

gruss

------------------
Modelling 17.x
WinXP SP3
-------------------------------
Mathcad kostenlos: SMath Studio

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: 01. Sep. 2011 16:32    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 noxx 10 Unities + Antwort hilfreich

Einfaches Beispiel:

Code:

(let ((feld (make-array 20)))
  (loop for i from 0 to 19 do
    (setf (aref feld i) (* 2 i))))

------------------
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: 01. Sep. 2011 19:36    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 noxx 10 Unities + Antwort hilfreich

Die Verwendung einer Liste, waere aber vermutlich auch naheliegend. Dabei brauchst Du dann den index im Normalfall nicht selbst zu handhaben.  Ob ne Liste einfacher/praktische waere, kann man mangels Information allerdings so nicht sagen.

------------------
Seamonkey FirefoxJava Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en)NotePad++

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: 01. Sep. 2011 20:38    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 noxx 10 Unities + Antwort hilfreich

Richtig, ob das Feld oder aber das Zuweisen an zwanzig verschiedene Variablen oder etwas ganz anderes der richtige Ansatz ist, kann man erst entscheiden, wenn man weiss, wo und wie das eingesetzt werden soll.

Aus dem Bauch heraus würde ich aber sagen, dass der Versuch, den Inhalt von zwanzig verschiedenen Variablen (Winkel_X) auf zwanzig andere Variablen (ubogen_X) zuzuweisen, schon mal nach der falschen Grundidee aussieht.

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

[Diese Nachricht wurde von clausb am 02. Sep. 2011 editiert.]

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

noxx
Mitglied
Steuerzahler


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

Beiträge: 801
Registriert: 13.12.2004

OS: Win 7 Ultimate 64 bit SP1
Speicher: 30 GB RAM
Grafik: nVidia Quadro 4000
Creo Modelling v17.0

erstellt am: 05. Sep. 2011 12:15    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

ich habe leider zu selten den kontakt mit lisp, liegt mir auch irgendwie nicht. komme mit VB besser klar, aber das wohl nur am Rande.

Sind den andere Funktionen möglich, zb DO ?

Hatte hier was probiert, geht aber nicht:

Code:
(do ((i 1 (1+ i))(> i 20)) (setf ubogen_"~a"(i) (* 0.5 Winkel_"~a"(i) DM_Unten )))

Gruss

------------------
Modelling 17.x
WinXP SP3
-------------------------------
Mathcad kostenlos: SMath Studio

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: 05. Sep. 2011 13:44    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 noxx 10 Unities + Antwort hilfreich

(do) gibt es auch in Common Lisp, siehe http://www.lispworks.com/documentation/HyperSpec/Body/m_do_do.htm . Allerdings ist (loop for...) VIEL einfacher zu benutzen. Wieso verwendest Du das nicht einfach?

Ausserdem ist die Form der Schleife aber gar nicht Dein Problem, sondern der (in jeder Sprache!) etwas eigenartige Versuch, zur Laufzeit von zwanzig verschiedenen Eingangsvariablen aus zwanzig neue zu erzeugen.


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

[Diese Nachricht wurde von clausb am 05. Sep. 2011 editiert.]

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

noxx
Mitglied
Steuerzahler


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

Beiträge: 801
Registriert: 13.12.2004

OS: Win 7 Ultimate 64 bit SP1
Speicher: 30 GB RAM
Grafik: nVidia Quadro 4000
Creo Modelling v17.0

erstellt am: 05. Sep. 2011 13:49    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

danke, auch mit Loop habe ich meine Schwierigkeit:

Code:
(loop for x from 1 to 20 do
    (setf (ubogen_"~A" x) (* 0.5 (Winkel_"~A" x) DM_Unten ))
    )

Bekomme immer einen Fehler.....grr

Gruss

------------------
Modelling 17.x
WinXP SP3
-------------------------------
Mathcad kostenlos: SMath Studio

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: 05. Sep. 2011 13:51    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 noxx 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von noxx:
Bekomme immer einen Fehler.....grr

*raeusper* Du magst uns nicht zufällig sagen, was das für ein Fehler ist?

Wirst schon ein wenig mitarbeiten müssen.

Na gut, in diesem Fall ist das trivial: Dein Code behauptet, dass es Funktion namens "winkel_" und "ubogen_" gebe. Die hast Du aber vermutlich nie definiert.

Nochmal: Dein Problem ist NICHT die Schleife, sondern der Versuch, zur Laufzeit Variablen zu erzeugen. Lisp ist eine der wenigen Sprachen, in denen das überhaupt möglich ist, wenn auch nicht so, wie Du das gerade probierst. Ich bezweifle aber, dass das in diesem Fall nötig ist. Erklär uns doch mal den Hintergrund und warum Du es so probierst.

  Claus

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

[Diese Nachricht wurde von clausb am 05. Sep. 2011 editiert.]

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

noxx
Mitglied
Steuerzahler


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

Beiträge: 801
Registriert: 13.12.2004

OS: Win 7 Ultimate 64 bit SP1
Speicher: 30 GB RAM
Grafik: nVidia Quadro 4000
Creo Modelling v17.0

erstellt am: 05. Sep. 2011 13:54    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

sorry...

Code:

LISP-Fehler:
Cannot expand the SETF form (CUSTOM::UBOGEN_"~A" X).


EDIT:

Hintergrund:
Ich will ein Makro wo man 20 Werte eingeben kann.
Diese werden dann in der Schleife umgerechnet und
wieder ausgegeben. Das ganze dann in Annotation
auf dem Zeichnungsblatt.

------------------
Modelling 17.x
WinXP SP3
-------------------------------
Mathcad kostenlos: SMath Studio

[Diese Nachricht wurde von noxx am 05. Sep. 2011 editiert.]

[Diese Nachricht wurde von noxx am 05. Sep. 2011 editiert.]

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: 05. Sep. 2011 14:43    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 noxx 10 Unities + Antwort hilfreich

Zur weiteren Klärung: Was genau meinst Du mit "Makro"? Einen Dialog?

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

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

noxx
Mitglied
Steuerzahler


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

Beiträge: 801
Registriert: 13.12.2004

OS: Win 7 Ultimate 64 bit SP1
Speicher: 30 GB RAM
Grafik: nVidia Quadro 4000
Creo Modelling v17.0

erstellt am: 05. Sep. 2011 14:44    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

Im Moment habe ich das so gemacht, das jede Variable einzeln
definiert wird, aber wird mit allem Kram zu lang.

BSP:

Code:

(setf ubogen_1 (* 0.5 Winkel_1 DM_Unten ))
(setf ubogen_2 (* 0.5 Winkel_2 DM_Unten ))
(setf ubogen_3 (* 0.5 Winkel_3 DM_Unten ))
(setf ubogen_4 (* 0.5 Winkel_4 DM_Unten ))
(setf ubogen_5 (* 0.5 Winkel_5 DM_Unten ))
(setf ubogen_6 (* 0.5 Winkel_6 DM_Unten ))
(setf ubogen_7 (* 0.5 Winkel_7 DM_Unten ))
(setf ubogen_8 (* 0.5 Winkel_8 DM_Unten ))
(setf ubogen_9 (* 0.5 Winkel_9 DM_Unten ))
(setf ubogen_10 (* 0.5 Winkel_10 DM_Unten ))
(setf ubogen_11 (* 0.5 Winkel_11 DM_Unten ))
(setf ubogen_12 (* 0.5 Winkel_12 DM_Unten ))
(setf ubogen_13 (* 0.5 Winkel_13 DM_Unten ))
(setf ubogen_14 (* 0.5 Winkel_14 DM_Unten ))
(setf ubogen_15 (* 0.5 Winkel_15 DM_Unten ))
(setf ubogen_16 (* 0.5 Winkel_16 DM_Unten ))
(setf ubogen_17 (* 0.5 Winkel_17 DM_Unten ))
(setf ubogen_18 (* 0.5 Winkel_18 DM_Unten ))
(setf ubogen_19 (* 0.5 Winkel_19 DM_Unten ))
(setf ubogen_20 (* 0.5 Winkel_20 DM_Unten ))

Es muss doch eine leichte Möglichkeit gegen, daraus einen Dreizeiler zu machen...

Gruss

------------------
Modelling 17.x
WinXP SP3
-------------------------------
Mathcad kostenlos: SMath Studio

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

noxx
Mitglied
Steuerzahler


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

Beiträge: 801
Registriert: 13.12.2004

OS: Win 7 Ultimate 64 bit SP1
Speicher: 30 GB RAM
Grafik: nVidia Quadro 4000
Creo Modelling v17.0

erstellt am: 05. Sep. 2011 14:49    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


2011-09-05_144650.jpg

 
Zitat:
Original erstellt von clausb:
Zur weiteren Klärung: Was genau meinst Du mit "Makro"? Einen Dialog?


Ja, so ne kleine GUI.....

Auch die Eingabe ist Ellenlang, da ich jede Wert Einzeln abfrage. Vermutlich
viel zu komplex..

Code:

("Winkel in Grad")
  (Winkel_1 :value-type :angle
    :title "Winkel 1"
    rompt-text "1. Winkel angeben."
    :initial-value 0)
  (Winkel_2 :value-type :angle
    :title "Winkel 2"
    rompt-text "2. Winkel angeben."
    :initial-value 0)
  (Winkel_3 :value-type :angle
    :title "Winkel 3"
    rompt-text "3. Winkel angeben."
    :initial-value 0)

usw usw


------------------
Modelling 17.x
WinXP SP3
-------------------------------
Mathcad kostenlos: SMath Studio

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: 05. Sep. 2011 16:59    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 noxx 10 Unities + Antwort hilfreich

OK, jetzt wird die Sache klarer, danke!

Ja, in Lisp könnte man (anders als in vielen anderen Sprachen) sowas in wenigen Zeilen cleveren Code hinschreiben. Kann aber sein, dass ihn hinterher nur Experten verstehen, In diesem konkreten Fall würde ich also die zwanzig Zeilen einfach hinschreiben. Solange Du darauf achtest, dass die Variablen lokal sind, ist damit wenig Schaden angerichtet.

Ach ja, was passiert eigentlich mit den umgerechneten Werten, nachdem sie auf ubogen_x zugewiesen wurden?

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

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

noxx
Mitglied
Steuerzahler


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

Beiträge: 801
Registriert: 13.12.2004

OS: Win 7 Ultimate 64 bit SP1
Speicher: 30 GB RAM
Grafik: nVidia Quadro 4000
Creo Modelling v17.0

erstellt am: 05. Sep. 2011 17: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

Zitat:
Original erstellt von clausb:

Ach ja, was passiert eigentlich mit den umgerechneten Werten, nachdem sie auf ubogen_x zugewiesen wurden?

[/B]


Werden als Text aufs Zeichnungsblatt gepackt. Mich würde aber dennoch interessieren,
warum das bei mir mit der Lopp-Do nicht klappt, bzw wie ich den Fehler wegbekomme.

Gruss und danke

------------------
Modelling 17.x
WinXP SP3
-------------------------------
Mathcad kostenlos: SMath Studio

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: 05. Sep. 2011 21:39    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 noxx 10 Unities + Antwort hilfreich

  
Zitat:
Original erstellt von noxx:
Werden als Text aufs Zeichnungsblatt gepackt.

Dann brauchst Du das doch gar nicht mehr in Variablen zwischenspeichern, sondern kannst es sofort als Text-Kommando wegschicken, oder? (Welches Text-Kommando wolltest Du denn verwenden?)

  

Zitat:

Mich würde aber dennoch interessieren,
warum das bei mir mit der Lopp-Do nicht klappt, bzw wie ich den Fehler wegbekomme.

Wie gesagt, mit der Schleife hat das NICHTS zu tun. Nimm mal die Anweisung aus Deiner Schleife heraus und versuche sie einzeln auszuführen. Du wirst feststellen, dass das genausowenig geht:

Code:

(setf DM_Unten 1)   ;; nur zur Demo
(setf x 1)          ;; nur zur Demo
(setf (ubogen_"~A" x) (* 0.5 (Winkel_"~A" x) DM_Unten ))

Das ist gaaaaanz weit weg von einem gültigen Ausdruck in Lisp. Ich fange mal an, ein paar Probleme aufzulisten:

Problem Nummer 1: Die Stringkonkatenation geht so in Lisp einfach nicht. Strings konkatentiert man mit (concatenate 'string ...), eventuell auch mit (format).

Problem Nummer 2: Du verwendest im literalen String "~A" eine Syntax, wie sie nur innerhalb von (format) verstanden wird. Von einem (format) ist aber weit und breit nichts zu sehen.

Problem Nummer 3: Das erste Element einer unqoutierten Liste in Lisp ist immer ein Symbol, das für eine Funktion steht. Weder "ubogen_" noch "winkel_" noch die Versionen mit hinten angehängtem "~A" bezeichnen aber Funktionen (es sei denn, Du würdest welche mit solchen Namen definieren).

Problem Nummer 4: Selbst wenn "ubogen_" eine gültige Funktion bezeichnete, müsste diese Funktion etwas zurückliefern, was man in Lisp ein "place" nennt (siehe http://www.lispworks.com/documentation/HyperSpec/Body/m_setf_.htm  ).


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

[Diese Nachricht wurde von clausb am 05. Sep. 2011 editiert.]

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: 05. Sep. 2011 22: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 Nur für noxx 10 Unities + Antwort hilfreich

Und zur endgültigen Abschreckung jetzt die Schleife samt funktionierender Übersetzung des Zuweisungsversuches:

Code:

(setf winkel_1 1)
(setf winkel_2 2)
(setf winkel_3 3)
(setf winkel_4 4)
(setf winkel_5 5)
(setf winkel_6 6)

(setf DM_Unten 42)

(loop for i from 1 to 6 do
  (let ((new-symbol (make-symbol (format nil "UBOGEN_~D" i))))
    (setf (symbol-value new-symbol)
      (* 0.5 (symbol-value (find-symbol (format nil "WINKEL_~D" i))) DM_Unten))
  ))


Diese Variante hat aber mehrere Nachteile. Erstens verstehen sie wohl nur wenige. Zweitens sind die Symbole UBOGEN_x nicht lexikal gebunden, sind also auch ausserhalb von (let) noch zugänglich. Drittens ist der Code vor allem wegen (find-symbol) recht langsam.

Alternative Implementierung auf Basis von (eval):

Code:

(setf winkel_1 1)
(setf winkel_2 2)
(setf winkel_3 3)
(setf winkel_4 4)
(setf winkel_5 5)
(setf winkel_6 6)

(setf DM_Unten 42)

(loop for i from 1 to 6 do
  (eval (read-from-string
    (format nil "(setf UBOGEN_~D (* 0.5 DM_Unten WINKEL_~D))" i i))))


Auch auf diese Variante treffen die oben erwähnten Nachteile zu.

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

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

noxx
Mitglied
Steuerzahler


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

Beiträge: 801
Registriert: 13.12.2004

OS: Win 7 Ultimate 64 bit SP1
Speicher: 30 GB RAM
Grafik: nVidia Quadro 4000
Creo Modelling v17.0

erstellt am: 06. Sep. 2011 09: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

danke.....ich brauche wohl noch einen kaffee und muss das ganze nochmal lesen um es zu verstehen 

gruss

------------------
Modelling 17.x
WinXP SP3
-------------------------------
Mathcad kostenlos: SMath Studio

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

noxx
Mitglied
Steuerzahler


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

Beiträge: 801
Registriert: 13.12.2004

OS: Win 7 Ultimate 64 bit SP1
Speicher: 30 GB RAM
Grafik: nVidia Quadro 4000
Creo Modelling v17.0

erstellt am: 06. Sep. 2011 11: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

hmm, habs mehrmals gelesen, verstanden habe ich es aber immer noch nicht. ist auch nicht schlimm, solange es läuft 

aber: beide codes funktionieren irgendwie nicht.

beim ersten code kommt:
die variable Winkel_1 ist nicht gebunden. Dies kann folgende Ursachen haben.....

beim zweiten code kommt:
die variable DM_UNTEN ist nicht gebunden. Dies kann folgende Ursachen haben.....

Gruss

------------------
Modelling 17.x
WinXP SP3
-------------------------------
Mathcad kostenlos: SMath Studio

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: 06. Sep. 2011 13:13    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 noxx 10 Unities + Antwort hilfreich

Ich habe gerade beide Beispiele nochmal in CoCreate Modeling geladen. Keinerlei Fehler. Hab's auch ohne Probleme in zwei alternativen Lisp-Implementierungen ausprobiert (SBCL, CLISP).

Vielleicht mag's ja jemand zur Verifikation mal in seinem Modeling ausprobieren (Codebeispiele als Lispdatei abspeichern, reinladen - wenn kein Fehler angezeigt wird, hat es funktioniert).

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

[Diese Nachricht wurde von clausb am 07. Sep. 2011 editiert.]

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