Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  funktionsaufruf

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:  funktionsaufruf (1018 mal gelesen)
gmk
Mitglied
Dipl.-Ing.(FH) Vermessung


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

Beiträge: 667
Registriert: 23.10.2002

Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM

erstellt am: 08. Mai. 2003 08: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

hi lispler!

komme hier bei einem problem nicht weiter, kann mir aber nicht erklären warum.

habe folgende funktion erstellt

(DEFUN t_2ip (transfpar kleinpunkt
              / o a r0 h0 )
(SETQ o (nth 0 transfpar)
      a (nth 1 transfpar)
      r0 (nth 2 transfpar)
      h0 (nth 3 transfpar) 
      rechtsw (nth 0 kleinpunkt)
      hochwert (nth 1 kleinpunkt)
)
(list (+ r0 (* o hochwert) (* a rechtsw)) (- (+ h0 (* a hochwert)) (* o rechtswert)))
)

beim aufruf von

(t_2ip transpar (CDR(ASSOC 10 as)))

bekomme ich folgende fehlermeldung

; Fehler: Fehlerhafter Argumenttyp: numberp: nil

WARUM?????`

ciao georg

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

gmk
Mitglied
Dipl.-Ing.(FH) Vermessung


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

Beiträge: 667
Registriert: 23.10.2002

Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM

erstellt am: 08. Mai. 2003 08: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

kleiner nachtrag

transpar ist eine liste.
z.B. (-0.00647116 0.249916 4.45335e+006 5.33926e+006 0.25 -0.0258875)

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

tappenbeck
Mitglied
Vermessungsingenieur


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

Beiträge: 1213
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 08. Mai. 2003 09: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 gmk 10 Unities + Antwort hilfreich

das hört sich ja an wie eine kleinpunktberechnung !!!

gruß Jan :-)

------------------
jan :-)

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

gmk
Mitglied
Dipl.-Ing.(FH) Vermessung


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

Beiträge: 667
Registriert: 23.10.2002

Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM

erstellt am: 08. Mai. 2003 09:48    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

bingo!

aber keine angst, möchte plateia nicht neu erfinden.

ciao georg

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: 08. Mai. 2003 10:40    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 gmk 10 Unities + Antwort hilfreich

Tja, Georg,

da musst du wohl mal den Input testen. Wenn der ok ist, dann sollte die Funktion laufen. Entweder stimmt was nicht mit deiner Liste transpar (nicht da oder zu kurz, falsche Datentypen drin), oder es liegt an as - man kann ja nicht sehen, woher das kommt.

'as' ist ein gebräuchlicher Name für einen Auswahlsatz, das geht natürlich nicht! Vielleicht nur ein (entget ...) vergessen? Dann würde der Fehler bei (* o hochwert) auftreten.

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

gmk
Mitglied
Dipl.-Ing.(FH) Vermessung


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

Beiträge: 667
Registriert: 23.10.2002

Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM

erstellt am: 08. Mai. 2003 11: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

@axel
input war schon o.k.

(setq rechtsw (nth 0 kleinpunkt)) war der grund

diese zuweisung ergab nil, aber warum ????? 
hab jetzt "rechtsw" und "hochwert" als lokale variablen definiert; damit läuft's.

abgesehen davon war in der zeile (list (+ r0 (* o hochwert) (* a rechtsw)) (- (+ h0 (* a hochwert)) (* o rechtswert))) auch noch ein fehler drin: rechtsw <--> rechtswert (soll natürlich die gleiche variable sein).

ciao georg

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: 08. Mai. 2003 11: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 gmk 10 Unities + Antwort hilfreich

Georg, das widerspricht sich aber. Wenn (nth 0 kleinpunkt) nil ergab, dann kann das Argument kleinpunkt nicht OK gewesen sein.

Da du jetzt noch von lokalen Variablen anfängst - r0 und h0 sind überflüssige Variablen, sie werden nur an einer einzigen Stelle gebraucht. rechtswert und hochwert sollten natürlich lokal gemacht werden, o und a ebenso. Da diese 4 Werte jeweils zweimal gebraucht werden, ist das ok. Dass die nicht in der FA-Liste waren, habe ich vorhin übersehen, aber es kann nicht die Ursache des Fehlers gewesen sein.

Ich würde auch nicht mit nth zugreifen - das macht eigentlich nur Sinn, wenn die Position in einer Variablen steckt, also (nth i ...)
in einer Schleife.

Mein Vorschlag also:

(defun t_2ip(transfpar kleinpunkt / o a rechtswert hochwert)
  (setq o(car transfpar)
        a(cadr transfpar)
        rechtswert(car kleinpunkt)
        hochwert(cadr kleinpunkt)
  )
  (list
    (+(caddr transfpar)(* o hochwert)(* a rechtswert))
    (-(+(cadddr transfpar)(* a hochwert))(* o rechtswert))
  )
)

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

gmk
Mitglied
Dipl.-Ing.(FH) Vermessung


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

Beiträge: 667
Registriert: 23.10.2002

Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM

erstellt am: 08. Mai. 2003 14:02    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

@axel

habe an "kleinpunkt" nichts verändert !?!?!?

r0 und h0 ist klar. waren noch relikte aus der formel.

würde gerne mal den quellcode von car und cadr sehen. vielleicht werden da die "d" gezählt und dann an nth übergeben ..........

trotzdem danke für die hilfe.

ciao georg

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: 09. Mai. 2003 01:12    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 gmk 10 Unities + Antwort hilfreich

nth/c?r: Das ist keine Frage der Effizienz, sondern der Konventionen.

Warum z.B. gibt es die Funktionen (not) und (null) - intern sind die völlig identisch. Aber man verwendet not, wenn's um die logische Negation geht, und null, wenn man auf leere Listen testet. Und genauso nimmt man für Punkte(XYZ) eben c?r, aber für lange Listen nth. Und Schleifenzähler heissen immer i,j,k oder so - sicher, man kann sie auch ich-moechte-in-urlaub-fahren nennen. Das macht's aber nicht einfacher lesbar;-)

car, cdr und cons sind übrigens die Funktionen, auf die sich der ganze Lisp-Interpreter aufbaut. cadr ist ja nur (car(cdr ...)), das ist eine Randerscheinung.

Frohes Schaffen noch! 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

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