| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Fehlerhafter Argumenttyp (1193 mal gelesen)
|
itrvolk Mitglied Dipl.-Ing.(FH) Vermessungsingenieur
Beiträge: 113 Registriert: 05.06.2001
|
erstellt am: 12. Feb. 2010 17:57 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, bin absoluter Newbe was Lisp angeht. Hab folgenden Code der leider mit der Fehlermeldung abbricht: "; Fehler: Fehlerhafter Argumenttyp: numberp: N1" (defun c:KN1 ( / n1 p1 p2) (setq p1 (getpoint "\nEinfügepunkt: ")) (setq n1 (getreal "\nNeigung 1:n: ")) (setq p2 (mapcar '+ p1 '(n1 1.0 0.0))) (command "klinie" p1 p2) (princ) ) Nur zur Erklärung zum Sinn des Programms ich möchte Konstruktionslinien mit anzugebender Neigung (1:n) zeichnen. Später auch mit Prozent. Kann man sowas auch direkt in Befehlsskript zusammenfassen (also ^C^C_xline ....) Wer kann mir weiterhelfen. Gruss Jörg ------------------ Civil 3D 2010, AIS9, Rhino, B&B MacPro, Mac OS X 10.6, Windows XP Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 12. Feb. 2010 18:10 <-- editieren / zitieren --> Unities abgeben: Nur für itrvolk
Hallo Jörg, du solltest unbedingt herausfinden welche Bedeutung das ' (Quote) hat. Kurze Erklärung: Das ' (Quote) bewirkt, dass der nachfolgende Ausdruck 1:1 übernommen, also nicht evaluiert, wird. Daraus folgt, dass in deiner Liste '(n1 1.0 0.0) auch tatsächlich (n1 1.0 0.0) enthalten ist und nicht, wie du sicher wolltest der Wert von n1. Damit das ganze evaluiert wird, ersetzt du das '( durch (list, denn dann wird der Klammerausdruck zu einer Liste evaluiert: (setq n1 10.0) (list n1 0.0 0.0) =>> (10.0 0.0 0.0) Ohne getestet zu haben ... das dann sollte funktionieren. Für den Anfänger sicher schwer zu erkennen, aber das ist alles das gleiche Thema, was heute bereits in den Threads ssget mit Abfrage des Blocknamens und Variable statt Zahl diskutiert wurde. --> Solltest du also auch durchlesen. Bei Fragen ... Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 12. Feb. 2010 18:11 <-- editieren / zitieren --> Unities abgeben: Nur für itrvolk
Hallo Jörg,probier mal so: Code:
(defun c:KN1 ( / n1 p1 p2) (setq p1 (getpoint "\nEinfügepunkt: ")) (setq n1 (getreal "\nNeigung 1:n: ")) (setq p2 (mapcar '+ p1 (cons n1 '(1.0 0.0)))) (command "klinie" p1 p2 "") (princ) )
1. Das n1 darf nicht in eine gequotete Liste gepackt werden (mit Apostroph vorweg) weil diese nicht ausgewertet wird. Daher habe ich n1 einfach mit CONS dazu gepackt. 2. Den command-Befehl mit einem "" abschließen, andernfalls möchte die Funktion immer noch weitere Punkte haben.[edit] @ Holger: da war ich mal wieder nicht schnell genug, ich glaube ich Schaufel noch ein bißchen Neuschnee und geh dann ins Wochenende [/edit] ------------------ viele Grüße Jörn http://www.bosse-engineering.com [Diese Nachricht wurde von joern bosse am 12. Feb. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
itrvolk Mitglied Dipl.-Ing.(FH) Vermessungsingenieur
Beiträge: 113 Registriert: 05.06.2001
|
erstellt am: 12. Feb. 2010 18:21 <-- editieren / zitieren --> Unities abgeben:
Ups bin erstaunt wie schnell die Antworten kommen, @Holger ich ausprobiert mit list: kommt folgende Fehlermeldung: Fehler: Fehlerhafte Funktion: 1.0 @Jörn yep so funktionierts. vielen dank wird mich sicherlich noch öfters hier melden, bei meinen ersten gehversuchen in lisp. Gruss Jörg ------------------ Civil 3D 2010, AIS9, Rhino, B&B MacPro, Mac OS X 10.6, Windows XP Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 12. Feb. 2010 18:36 <-- editieren / zitieren --> Unities abgeben: Nur für itrvolk
Zitat: Original erstellt von itrvolk: ... @Holgerich ausprobiert mit list: kommt folgende Fehlermeldung: Fehler: Fehlerhafte Funktion: 1.0 ...
Dann hast du wohl das list vergessen?! oder du hast nur das ' gelöscht?! denn irgendwo wird der Audruck zu (1.0 ...) evaluiert. Und das nach der öffnenden Klammer erstmal die Funktion stehen soll, ist wohl klar. Damit du siehst, was ich meine, hab ich's mal in den Code eingebaut: Code:
(defun c:KN1 ( / n1 p1 p2) (setq p1 (getpoint "\nEinfügepunkt: ")) (setq n1 (getreal "\nNeigung 1:n: ")) (setq p2 (mapcar '+ p1 (list n1 1.0 0.0))) (command "klinie" p1 p2) (princ) )
Bei Fragen ... Grüße Holger
------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|