| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Frage (Problem) mit Koordinaten Lisp (1347 mal gelesen)
|
geigei Mitglied Bautechniker
Beiträge: 99 Registriert: 25.02.2004 AutoCad 2002, Soficad 15.3, Win2000, 850 Mhz, 512 MB Ram
|
erstellt am: 29. Okt. 2004 09:13 <-- editieren / zitieren --> Unities abgeben:
Morgen, wir haben ein Problem mit dem LISP bei dem die Koordinaten nach anklicken neben einem beliebigen Punkt geschrieben werden. Wir haben in einem Absteckplan (verschiebbaren Modelbereich) den Befehl genützt um die Koordinaten festzulegen. Dabei wurden in einem Punkt die richtigen Werte ausgegeben, und in einem der ein paar Meter daneben lag die Falschen. Im Modellbereich gabs keine Probleme; woran kann das liegen, dass im verschiebaren Bereich falsche Werte entstehen? ------------------ Netter Gruss aus Bayern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
geigei Mitglied Bautechniker
Beiträge: 99 Registriert: 25.02.2004 AutoCad 2002, Soficad 15.3, Win2000, 850 Mhz, 512 MB Ram
|
erstellt am: 29. Okt. 2004 10:24 <-- editieren / zitieren --> Unities abgeben:
|
AsSchu Ehrenmitglied Konstrukteur
Beiträge: 1632 Registriert: 27.06.2003 ACAD 2012
|
erstellt am: 29. Okt. 2004 10:28 <-- editieren / zitieren --> Unities abgeben: Nur für geigei
|
geigei Mitglied Bautechniker
Beiträge: 99 Registriert: 25.02.2004 AutoCad 2002, Soficad 15.3, Win2000, 850 Mhz, 512 MB Ram
|
erstellt am: 29. Okt. 2004 10:49 <-- editieren / zitieren --> Unities abgeben:
Tschuldige, hier das Lisp: ;;;=================================================================== ;;;beschriftet die gewählten Punkte mit deren 2D- bzw. 3D-Koordinaten. ;;;=================================================================== ;;;CADchup@cad.de ;;; ;;;Updated: Sep. 2003 ;;; (princ "\nStart mit Eingabe von K2D oder K3D.") (princ) ;;; ;;; (defun C:K2D (/ tsize newtsize k-point k-xoutput k-youtput) (setq snap (getvar "OSMODE") echo (getvar "CMDECHO") ) (setvar "OSMODE" 47) (setvar "CMDECHO" 0) (setq tsize (cdr (assoc 40 (tblsearch "STYLE" (getvar "TEXTSTYLE"))) ) ) (if (= 0.0 tsize) (setq newtsize (rtos (getreal "\nGib Texthoehe: " ) 2 3 ) ) ) ; if (while (setq k-point (getpoint "\nKoordinatenpunkt waehlen oder <RETURN> zum Beenden:" ) ) (if (= (type k-point) 'list) (progn (setq k-xoutput (rtos (car k-point) 2 3) k-youtput (rtos (cadr k-point) 2 3) ) ; setq (if (= 0.0 tsize) (progn (command "_.text" "_bl" k-point newtsize "0" k-xoutput) (command "_.text" "_tl" k-point newtsize "0" k-youtput) ) ; progn (progn (command "_.text" "_bl" k-point "0" k-xoutput) (command "_.text" "_tl" k-point "0" k-youtput) ) ; progn ) ; if ) ; progn ) ; if ) ; while (setvar "OSMODE" snap) (setvar "CMDECHO" echo) (princ) ) ; defun ; ; (defun C:K3D (/ tsize newtsize k-point k-xoutput k-youtput k-zoutput) (setq snap (getvar "OSMODE") echo (getvar "CMDECHO") ) (setvar "OSMODE" 47) (setvar "CMDECHO" 0) (setq tsize (cdr (assoc 40 (tblsearch "STYLE" (getvar "TEXTSTYLE"))) ) ) (if (= 0.0 tsize) (setq newtsize (rtos (getreal "\nGib Texthoehe: " ) 2 3 ) ) ) ; if (while (setq k-point (getpoint "\nKoordinatenpunkt waehlen oder <RETURN> zum Beenden:" ) ) (if (= (type k-point) 'list) (progn (setq k-xyzoutput (strcat (rtos (car k-point) 2 3) ", " (rtos (cadr k-point) 2 3) ", " (rtos (caddr k-point) 2 3) ) ) ; setq (if (= 0.0 tsize) (progn (command "_.text" "_bl" k-point newtsize "0" k-xyzoutput) ) ; progn (progn (command "_.text" "_bl" k-point "0" k-xyzoutput) ) ; progn ) ; if ) ; progn ) ; if ) ; while (setvar "OSMODE" snap) (setvar "CMDECHO" echo) (princ) ) ; defun ------------------ Netter Gruss aus Bayern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 29. Okt. 2004 10:53 <-- editieren / zitieren --> Unities abgeben: Nur für geigei
Ohne auf dein eigentliches Problem einzugehen muß ich dennoch etwas von mir geben da sich diese Anfragen hier häufen: Frage: WARUM FRAGST DU NICHT DEN PROGRAMMIERER ? wäre nur fair, denn wenn das Programm zB einen Fehler hat, so möchte er das auch wissen um ihn zu beseitigen - das hilft dir wiederum. Wenn es nicht am Programm liegt (sondern so "sein soll"), dann sagt er dir das auch. # E-Mail ist angegeben und sein Nick auf CAD.de lautet CADchup # sehe gerade das wir das Thema bereits hatten !? : http://ww3.cad.de/foren/ubb/Forum145/HTML/000532.shtml Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 29. Okt. 2004 11:01 <-- editieren / zitieren --> Unities abgeben: Nur für geigei
getpoint liefert einen "A 2D or 3D base point in the current UCS" .. da fallen mir in Hinblick auf Ansichtsfenster alle möglichen Systemvariablem mit "UCS.." ein .. ein wegen Zeitmangels ungetester Schuß ins "Blaue".. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
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: 29. Okt. 2004 14:35 <-- editieren / zitieren --> Unities abgeben: Nur für geigei
;************koordinaten anschreiben********** ;punkt klicken und 3d-koordinate anschreiben ;start mit gmk_kobe.de ;gmk@cad.de ;********************************************* (DEFUN C:gmk_kobe (/ p) (IF (SETQ p (TRANS (GETPOINT "Punkt klicken ...") 1 0)) (PROGN (SETVAR "DIMZIN" 0) (ENTMAKE (LIST '(0 . "TEXT") '(100 . "AcDbEntity") '(100 . "AcDbText") (CONS 10 (mapcar '(lambda (x) (+ x 0.5)) p)) '(40 . 1) (CONS 1 (STRCAT (RTOS (CAR p) 2 3) " " (RTOS (CADR p) 2 3) " " (RTOS (CADDR p) 2 3) ) ;_ STRCAT ) ;_ CONS '(50 . 0) '(41 . 0.8) '(51 . 0) '(7 . "Standard") ) ;_ LIST ) ;_ ENTMAKE (ENTMAKE (LIST '(0 . "CIRCLE") '(100 . "AcDbEntity") '(100 . "AcDbCircle") (CONS 10 p) '(40 . 0.5) ) ;_ LIST ) ;_ ENTMAKE ) ;_ PROGN ) ;_ IF ) ;_ DEFUN ciao georg
[edit] hi moderator, gib mir sofort meine formatierung zurück! [edit] [Diese Nachricht wurde von gmk am 29. Okt. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3329 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 29. Okt. 2004 21:36 <-- editieren / zitieren --> Unities abgeben: Nur für geigei
Hi, jaja, ich weiß schon. Mein Code ist irgendwie nicht zeitgemäß... Wie cadffm schon geschrieben hat: Wendet Euch bei solchen Problemen immer zuerst an die Leute, die den Code verbrochen haben! Das sind doch die, die es angehen sollten! So. Und jetzt mein neues Koords.lsp:
Code:
;| ___________________________________________________________________ K2d und K3dBeschriftet die gewählten Punkte mit ihren 2D- bzw. 3D-Koordinaten. Oct., 2004 www.cadditions.de ___________________________________________________________________ |; ;| 2d-Koordinaten |; (defun c:K2d () (X:Koords 0) )
;| 3d-Koordinaten |; (defun c:K3d () (X:Koords 1) ) ;| Hauptfunktion |; (defun X:Koords (mode / p actdoc space mtextobj) (vl-load-com) (while (= 'variant (type (setq p (vl-catch-all-apply '(lambda () (vlax-invoke-method (vlax-get-property (setq actdoc (vlax-get-property (vlax-get-acad-object) 'ActiveDocument ) ) 'Utility ) 'Getpoint nil "\nKoordinatenpunkt waehlen oder <RETURN> zum Beenden:" ) ) ) ) ) ) (setq space (vlax-get-property actdoc (if (or (= 1 (vlax-get-property actdoc 'ActiveSpace)) (= :vlax-true (vlax-get-property actdoc 'Mspace)) ) 'ModelSpace 'PaperSpace ) ) ) (vlax-invoke-method space 'AddPoint p) (setq mtextobj (vlax-invoke-method space 'AddMText p 0.0 (strcat (rtos (car (setq pt (vlax-safearray->list (variant-value p))) ) 2 ) "\n" (rtos (cadr (setq pt (vlax-safearray->list (variant-value p))) ) 2 ) (if (= 1 mode) (strcat "\n" (rtos (caddr (setq pt (vlax-safearray->list (variant-value p)) ) ) 2 ) ) "" ) ) ) ) (vlax-put-property mtextobj 'AttachmentPoint acAttachmentPointMiddleLeft ) (vlax-put-property mtextobj 'InsertionPoint p) ) ) (princ "\nKoords geladen. Start mit \"K2D\" bzw. \"K3D\".") (princ)
@gmk Jaja, mit der Formatierung kämpfe ich auch immer wieder... Gruß CADchup ------------------ www.cadditions.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |