Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Warum funktioniert repeat nicht ?

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 Autodesk Produkte
Autor Thema:  Warum funktioniert repeat nicht ? (422 mal gelesen)
Juergen55
Mitglied
Elektrotechniker


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

Beiträge: 282
Registriert: 08.03.2001

erstellt am: 09. Apr. 2004 19:23    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 bin gerade am testen von einem Lisp und hab das Problem das folgendes nicht funktioniert:

(setq att1 (cdr (assoc 1 (entget (repeat 2 (entnext bl1))))))


Es soll eigentlich das Zweite Attribut der Variablen att1 zugewiesen werden, kann es sein das das entnext auf diese Weise nicht widerholt werden kann ?

Gruß, Jürgen

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

Juergen55
Mitglied
Elektrotechniker


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

Beiträge: 282
Registriert: 08.03.2001

Microstation V8i, TriCAD, AutoCAD2014, EPlan P8 2.2, Core I5, 16GB Arbeitsspeicher

erstellt am: 09. Apr. 2004 20: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

Als Lisp-Einsteiger hat man es nicht einfach !

Was ist hier falsch ? Wie kann ich den neuen Attribut-Inhalt "Blatt" dem Block zuweisen ?

(defun c:T3 ()
(setq bl1 (car (entsel "\nBlock wählen:")))
(setq att1 (cdr (assoc 1 (entget (entnext bl1)))))
(princ att1)
(setq att1 (subst '(1 Blatt)att1))
(entmod att1)
(entupd bl1)
)

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 10. Apr. 2004 02:19    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 Juergen55 10 Unities + Antwort hilfreich

Tja, Jürgen, manche Dinge sind nicht so, wie sie auf den ersten Blick erscheinen.

Zu deinem ersten Problem: Glückwunsch erstmal - ein Grundprinzip von Lisp hast du verstanden, nämlich dass man nicht jede Zwischenstufe einer Variablen zuweisen muss, die dann doch keiner braucht. Aber:

(repeat 1000000 (entnext myEntity)) ermittelt eine Million Mal den Nachfolger von myEntity - das geht also auch, wenn man nur zwei Linien in der Zeichnung hat:-(

(repeat 1000000 (setq myEntity(entnext myEntity))

Das allerdings funktioniert nur so richtig, wenn man auch eine Million Linien hat - mit anderen Worten: Das ist dann ein sequenzielles Durcharbeiten.

Dein zweites Beispiel zeigt, dass du wohl einige Probleme mit subst hast - da sind drei Argumente nötig, z.B.

(subst (cons 1 "Irgendeinname")(assoc 1 daten)daten)

'(1 Blatt) wird zwar in irgendeinem Lisp-Programm irgendwo vielleicht einen Zweck erfüllen - hier aber sicher nicht, weil es a) sehr wahrscheinlich nil ist, b) das cons fehlt und c) wie gesagt subst drei Argumente haben möchte.

Lass dich aber nicht entmutigen!

Gruß, Axel

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

Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze
Meine Überzeugung...

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

Juergen55
Mitglied
Elektrotechniker


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

Beiträge: 282
Registriert: 08.03.2001

erstellt am: 10. Apr. 2004 12: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

Hallo Mapcar,

Danke für die Hilfe, ich bin das Ganze jetzt noch einmal durchgegangen und es funktioniert, da sind halt doch viele Kleinigkeiten zu beachten, aber Deine Erklärugen sind ja immer recht genau.
Meine Lösung sieht dann so aus:


(defun c:T3 ()
(setq bl1 (car(entsel "\nBlock wählen:")))
(setq att1 (entget (repeat 2 (setq bl1(entnext bl1)))))
(setq attt (cdr (assoc 1 att1)))
(princ attt)
(setq aa (subst (cons 1 "Blatt")(assoc 1 att1)att1))
(princ aa)
(entmod aa)
(entupd bl1)
)

Es wird also der Wert des Zweiten Attributs des gewählten Blockes in Blatt getauscht !
Deine Web-Seiten zu AutoLisp haben mir auch schon oft geholfen, es ist wohl die Einzige deutschsprachige Seite dieser Art, wirklich genial, muß auch mal gesagt werden.

Dann wünsch ich Dir noch schöne Ostern.

Gruß, Jürgen

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



Projektingenieur (w/m/d) Versorgungstechnik (HLSK)
Als führendes europäisches Beratungs-, Planungs- und Projektmanagementunternehmen bietet Drees & Sommer Lösungen für erfolgreiche Gebäude, renditestarke Portfolios, leistungsfähige Infrastruktur und lebenswerte Städte. In interdisziplinären Teams unterstützen unsere über 5.100 Mitarbeiterinnen und Mitarbeiter an 59 internationalen Standorten Auftraggeber unterschiedlichster Branchen. Bei uns gestalten Sie Ihren individuellen Karriereweg aktiv mit....
Anzeige ansehenGebäude-, Versorgungs-, Sicherheitstechnik
mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 10. Apr. 2004 22:53    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 Juergen55 10 Unities + Antwort hilfreich

Danke, und es freut mich, dass es geklappt hat!

Gruß, Axel

Apropos Ostern: Fans von Grüner Soße hier?

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

Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze
Meine Überzeugung...

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