| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: dynamische Anzeige am Fadenkreuz (3507 mal gelesen)
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 14. Mrz. 2012 14:07 <-- editieren / zitieren --> Unities abgeben:
Hi! Ich möchte gern Höhen von einem Bezugstext aus setzen. Mich würde interessieren, ob es in Lisp eine Möglichkeit gibt: bevor der neue Text gesetzt wird, anzuzeigen welchen berechneten Wert der Text ergibt. Mir also gleich am Fadenkreuz angezeigt wird, welche neue Höhe kommt nach Position des Fadenkreuzes. Code:
(defun c:znh () (setq obj (entget (car (entsel "\nWähle Textobjekt ! "))) p1 (cdr (assoc 10 obj)) ha (atof (cdr (assoc 1 obj))) pro (getreal "\nProzent ! ") ) (while (setq p2 (getpoint "\nZielpunkt ! ") pc (mapcar (function (lambda(a b)(/ (+ a b) 2))) p1 p2) di (distance p1 p2) he (rtos (+ (/ (* di pro) 100) ha) 2 2) ) (entmake (list (cons 0 "TEXT") (cons 1 he) (cons 8 (getvar "clayer")) (cons 10 p2) (cons 40 0.15) (cons 50 0) (cons 7 "standard") ) ) (entmake (list (cons 0 "DIMENSION") (cons 100 "AcDbEntity") (cons 67 0) (cons 410 "Model") (cons 8 (getvar "clayer")) (cons 100 "AcDbDimension") (cons 10 (trans (list (car p2)(cadr p2) 0.0) 1 0)) (cons 11 (trans (list (car pc)(cadr pc) 0.0) 1 0)) (cons 12 (list 0. 0. 0.)) (cons 6 "Continuous") (cons 62 2) (cons 70 33) (cons 1 (strcat (rtos pro 2 1) "%")) (cons 71 5) (cons 72 1) (cons 41 1.0) (cons 42 di) (cons 52 0) (cons 53 0) (cons 54 0) (cons 3 "standard") (cons 100 "AcDbAlignedDimension") (cons 13 (trans (list (car p1)(cadr p1) 0.0) 1 0)) (cons 14 (trans (list (car p2)(cadr p2) 0.0) 1 0)) (cons 15 (list 0. 0. 0.)) (cons 16 (list 0. 0. 0.)) ) ) ) (princ) )
------------------ Gruss Dirk [Diese Nachricht wurde von cadplayer am 14. Mrz. 2012 editiert.] 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: 14. Mrz. 2012 14:34 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 14. Mrz. 2012 14:40 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 14. Mrz. 2012 14:51 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 14. Mrz. 2012 15:24 <-- editieren / zitieren --> Unities abgeben:
|
Mailüfterl Mitglied Abgewandter Ingenieur und Softwarebastler
Beiträge: 15 Registriert: 12.08.2010
|
erstellt am: 14. Mrz. 2012 15:25 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hallo Dirk, mit Visual LISP kann man keine Werte am Fadenkreuz anzeigen lassen. Du könntest aber den neuen Wert dynamisch in der Zeichnung anzeigen lassen. Die Umsetzung ist allerdings nicht ganz trivial: 1. Du lässt den User den Text picken. Dein Programm speichert die gepickte Position und liest den Wert aus dem Text 2. Du fügst an der Curserposition einen neuen Text ein und liest fortan die Cursorposition mit grread 3. Deine Funktion errechnet fortan in einer Schleife den neuen Wert für den Text und weist ihn dem Text via active-X zu. Dasselbe gilt für die Position des Textes (vla-move) 4. Die Schleife wird mit der Eingabe von Return beendet. Der Text behält damit seinen letzten Wert und seine letzten Position Ich habe einmal eine ähnliche Funktionalität entwickelt, bei der eine 3D-Konstruktion in Abhängigkeit der Position des Cursors verändert wird. Die Umsetzung ist aber, wie gesagt, nicht ganz trivial. Eine langjährige Erfahrung im Umgang mit Visual LISP auch unter der Nutzung von Active X wäre vorteilhaft. Gruß, Mailüfterl 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: 14. Mrz. 2012 15:45 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hallo Dirk, ich nutze das VisualStudio von Microsoft - kenne mich also mit der von dir verwendeten Freeware nicht aus. Einfach Laden und Starten geht in den meisten Fällen ohnehin nicht. Du kannst aber sicher einstellen, für welches Zielsystem compiliert werden soll. Außerdem musst du schauen, dass die AcBibos sauber eingebunden sind, und diese beim Kompilieren nicht in das Ausgabeverzeichnis kopiert werden. Debuggen unter 64bit funktioniert nur insoweit, dass man den Programmablauf verfolgen kann - Änderungen am Code sind nicht möglich. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
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: 14. Mrz. 2012 15:46 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
Mailüfterl Mitglied Abgewandter Ingenieur und Softwarebastler
Beiträge: 15 Registriert: 12.08.2010
|
erstellt am: 14. Mrz. 2012 16:04 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 15. Mrz. 2012 06:54 <-- editieren / zitieren --> Unities abgeben:
Es würde mich schon reizen, mich mit C# zu beschäftigen. Vllt sollte ich mich aber ersteinmal mit grread beschäftigen, die Möglichkeit habe ich noch nicht in Erwägung gezogen. Danke bis hierhin für die Vorschläge (den Buchtips werde ich nachgehen). ------------------ Gruss Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dober Heinz Mitglied Technischer Zeichner
Beiträge: 1146 Registriert: 20.12.2002
|
erstellt am: 15. Mrz. 2012 09:41 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 15. Mrz. 2012 09:54 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 15. Mrz. 2012 11:38 <-- editieren / zitieren --> Unities abgeben:
Ich hänge gerade mal an der while- Schleife fest, wie kann ich da rauskommen, wenn ich ein Text greife kommt wieder "wähle Text" Code:
(while (if (not (and (while (setq obj (car (entsel "\nWähle Textobjekt ! "))) (if (= (cdr (assoc 0 (entget obj))) "TEXT") (setq obj (entget obj) p1 (cdr (assoc 10 obj)) ha (atof (cdr (assoc 1 obj))) pro (getreal "\nProzent ! ") ) ) (princ "\nkein Text gewählt") ) ) ) (princ "\nnichts gewählt") ) )
------------------ Gruss Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 15. Mrz. 2012 11:49 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 16. Mrz. 2012 08:59 <-- editieren / zitieren --> Unities abgeben:
@cadmium Ich wollte mal eine Schleife versuchen (zwar idiotensicher - wenig nützlich), die einmal sagt -wähle solang, bis etwas gewählt wird => "nichts gewählt" -verifiziere ob ein Textobjekt gewählt wurde => "kein Text gewählt" Es funktioniert zwar so einigermassen, mit dem Manko, wenn man ein anderes Objekt als einen Text wählt kommt => "kein Text gewählt nichts gewählt" Code:
(while (not (and (setq obj (car (entsel "\nWähle Textobjekt !"))) (not (if (/= (cdr(assoc 0 (entget OBJ))) "TEXT") (princ "\nkein Text gewählt") ) ) ) ) (princ "\nnichts gewählt") )
@wronzky Bei dem Beispiel von Lee-mac kratze ich mir die Haare raus. Was soll denn die var v? Code:
(setq v '( (" ") ("." 45 46 55 56) ("0" 44 47 134 137 53 123 58 128) ("1" 44 48 124 125 56 136) ("2" 43 48 53 53 64 64 75 75 86 86 97 97 108 128 134 137 123 123) ("3" 53 53 44 47 58 88 95 97 108 128 134 137 123 123) ("4" 46 48 57 137 78 78 73 76 83 83 94 94 105 115 126 126) ("5" 53 53 44 47 58 88 94 97 93 133 134 138) ("6" 44 47 58 88 95 97 84 84 53 113 124 124 135 137)
Die Angaben zu grread sind auf den ersten Blick vielseitig (grread [Spur] [Alle_Tasten [Cur_Typ]]) Spurr...? Alle Tasten...? Curtyp...? Wenn ich beispielsweise nur grread eingebe, die Maus an einen Punkt bewege und enter gebe, wirft er mir schon einen code mit koordinaten aus. Zu was also dann die ganzen Parameter? ------------------ Gruss Dirk 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: 16. Mrz. 2012 10:06 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hallo Dirk, ich bin zwar nicht CADmium, aber bei Deiner WHILE-Schleife habe ich mal ein bißchen aufgeräumt, so würde ich das in etwa machen: Code:
(defun c:test ( / obj) (while(setq obj (car (entsel "\nWähle Textobjekt (ENTER = Ende):"))) (if(/=(cdr(assoc 0 (entget obj))) "TEXT") (alert "Das war kein Text") (alert (strcat "Folgender Text wurde ausgewählt:\n\"" (cdr(assoc 1 (entget obj)))"\""))) ) (princ "\nEnde") )
------------------ viele Grüße Jörn http://www.bosse-engineering.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 16. Mrz. 2012 10:16 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 16. Mrz. 2012 10:19 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hallo Dirk, Zitat: ...Was soll denn die var v?...
Das ist die Variable, die die Darstellung aller Buchstaben im Vektorformat enthält, die mit grvecs am Bildschirm gezeichnet werden. Grüsse, Henning ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de 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: 16. Mrz. 2012 10:45 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hallo Dirk, ich nochmal, anbei ein Beispiel, wie man ohne die Vektordarstellung auskommt. Einfach Texte für X und Y erzeugen und während der Grread-Schleife die Werte und Positionen aktualisieren. Code:
(defun c:TextXY ( / OBJX OBJY PKT) (vl-load-com) (if(setq pkt (getpoint "\nStartPunkt angeben:")) (progn (setq objX(JB_TextXY:Text pkt) objY (cadr objX) objX (car objX)) (JB_TextXY:Grread pkt objX objY)) ) ) ;;;Text erzeugen mit XY-Koordinaten (defun JB_TextXY:Text (pkt / OBJX OBJY) (entmake (list '(0 . "TEXT") (cons 10 (mapcar '+ pkt '(2.5 0.0))) '(40 . 2.5) (cons 1 (strcat "X=" (rtos (car pkt)2 3)))'(50 . 0.0) '(71 . 0) '(72 . 0) '(11 0.0 0.0 0.0) '(210 0.0 0.0 1.0) '(73 . 0))) (setq objX (entlast))
(entmake (list '(0 . "TEXT") (cons 10 (mapcar '+ pkt '(2.5 -4.0))) '(40 . 2.5) (cons 1 (strcat "Y=" (rtos (cadr pkt)2 3)))'(50 . 0.0) '(71 . 0) '(72 . 0) '(11 0.0 0.0 0.0) '(210 0.0 0.0 1.0) '(73 . 0))) (setq objy (entlast)) (list objX objY)) ;;;Grread Funktion und Texte aktualisieren (defun JB_TextXY:Grread (pkt objX objY / PKTGR) (while (member(car (setq pktgr (grread 't 5 0)))'(5 12));25 2)) ;;;X schieben (vla-move (vlax-ename->vla-object objX) (vlax-3d-Point pkt) (vlax-3d-Point(cadr pktgr))) ;;;X aktualisieren (vla-put-TextString (vlax-ename->vla-object objX) (strcat "X="(rtos (car(cadr pktgr))2 3))) ;;;Y schieben (vla-move (vlax-ename->vla-object objY)(vlax-3d-Point pkt) (vlax-3d-Point(cadr pktgr))) ;;;Y aktualisieren (vla-put-TextString (vlax-ename->vla-object objY) (strcat "Y="(rtos (car(cadr pktgr))2 3))) (setq pkt (cadr pktgr))))
------------------ viele Grüße Jörn http://www.bosse-engineering.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 16. Mrz. 2012 11:13 <-- editieren / zitieren --> Unities abgeben:
Vektorendarstellung von Buchstaben und Zahlen Werden die "Zeichen" da erst neu definiert... @Jörn: Echt grosszügig mir mit deiner Funktion einen kompletten Einblick von grread zu bekommen. Da wird also "doppelt" die Koordinate ermittelt. Einmal mit grread zur Anzeige am Mauszeiger und einmal mit getpoint, wenn der Punkt gesetzt wird. Super - tausend pluspunkte ------------------ Gruss Dirk 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: 16. Mrz. 2012 11:24 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 20. Mrz. 2012 09:33 <-- editieren / zitieren --> Unities abgeben:
Jetzt habe ich nochmal einen anderen Weg probiert und stehe vor dem Problem, dass mir der Text entweder nur einmal angezeigt und erzeugt wird oder wenn ich das Textobjekt in der while-schleife lasse überall nach der Bewegung des Mauscursor erzeugt wird Wie schaffe ich es, dass der Text zwar angezeigt aber erst erzeugt wird wenn ich einen punkt anklicke Code:
(while (not (and (setq obj (car (entsel "\nWähle Textobjekt !"))) (not (if (/= (cdr(assoc 0 (entget OBJ))) "TEXT") (princ "\nkein Text gewählt") ) ) ) ) (princ "\nnichts gewählt") ) (setq obj (entget obj) pt (cdr (assoc 10 obj)) ha (atof (cdr (assoc 1 obj))) pro (getreal "\nProzent ! ") ) ;-------------------------------------------------------------------------------- ; uses grread function (if pt (while (member (car (setq ptgr (grread 't 5 0))) '(5 2)) (setq di (distance pt (cadr ptgr))) (setq he (rtos (+ (/ (* di pro) 100) ha) 2 2)) (setq pc (mapcar (function (lambda(a b)(/ (+ a b) 2))) pt (cadr ptgr))) ) ; Klammern weglasse ) ; wird text entlang der Maus erzeugt ;-------------------------------------------------------------------------------- ; entmake textobjekt (entmakex (list '(0 . "TEXT") (cons 10 (cadr ptgr)) '(40 . 0.15) (cons 1 he) '(50 . 0.0) '(11 0.0 0.0 0.0) '(210 0.0 0.0 1.0) '(71 . 0)'(72 . 0)'(73 . 0) ) ) (setq obj (vlax-ename->vla-object (entlast)))
------------------ Gruss Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 20. Mrz. 2012 09:42 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 20. Mrz. 2012 11:34 <-- editieren / zitieren --> Unities abgeben:
Ich möchte eigentlich, dass der Text bis zum klicken am Bildschirm angezeigt wird. Eine if-schleife würde das ja vermeiden bzw. ich klicke Punkte an und es wird dann immer ein neuer Text erzeugt. ------------------ Gruss Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 20. Mrz. 2012 12:49 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 20. Mrz. 2012 13:36 <-- editieren / zitieren --> Unities abgeben:
Ah da liegt mein Denkfehler - mir ist klar das die Funktion TXTMAKE wie getpoint arbeitet. Aber was macht sie genau 1) sie erzeugt ein Textentity 2) da bin ich unsicher mit "defun ...(PKT)" was muss PKT sein (finde ich nirgens definiert) 3) Am Ende steht da nochmal entlast muss irgendwie in Verbindung mit PKT stehen ? Sonst ist alles klar - also mir Unqualifizierten unklar ------------------ Gruss Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 20. Mrz. 2012 13:54 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 20. Mrz. 2012 14:49 <-- editieren / zitieren --> Unities abgeben:
@ cadmium: Danke für deine Mühe, ich versteh´s nicht ganz (brauch da noch ein wenig Zeit) @alle: Danke für eure Tips, ich habe nun einige Werkzeuge mit grread umzugehen (muss da noch en bissel spielen) ------------------ Gruss Dirk 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: 21. Mrz. 2012 06:19 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hallo Dirk, ich habe Dir CADmiums Beispiel nochmal mit Kommentaren versehen und habe die Funktiondefinition für TXTMAKE separat nach der Funktion COORDCURSER definiert (vielleicht hat es Dich verwirrt, daß die Definition innerhalb der Funktion COORDCURSER vorhanden war). Code:
(defun C:COORDCURSOR (/ P TXTOBJ TXTMAKE) (while (= 5 (car (setq P (grread 't 5 0)))) ;;;(cadr P) ist die Rückgabe von GRREAD (Curserkoordinate) (setq PKT (cadr P)) ;;;wenn TextObjekt vorhanden, dann löschen (if TXTOBJ (entdel TXTOBJ)) ;;;neuen Text erzeugen, übergeben wird die Variable PKT (setq TXTOBJ (TXTMAKE PKT)) ;;;der Rückgabewert der Funktion TXTMAKE wir der Variablen ;;;TXTOBJ zugewiesen, das ist das TextObjekt (entlast) ) )(defun TXTMAKE (PKT / ) ;;;neuen Text erzeugen mit Curserkoordinate PKT (entmake (LIST '(0 . "TEXT") '(8 . "0") (CONS 10 PKT) (cons 40 (getvar "TEXTSIZE")) (cons 50 (getvar "ANGDIR")) (CONS 1 (vl-princ-to-string PKT)) ) ) ;;;eine Funktion hat grundsätzlich einen Rückgabewert ;;;in diesem Fall das zuletzt erstellte TextObjekt (entlast) )
------------------ viele Grüße Jörn http://www.bosse-engineering.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 21. Mrz. 2012 08:22 <-- editieren / zitieren --> Unities abgeben:
(setq PKT (cadr P)) hat zusätzlich noch einen Vorteil gegenüber cadmiums Lösung gebracht. Darauf bin ich nicht gekommen - nach deiner Beschreibung ist es mir jetzt einleuchtend. Ich habe einfach noch nicht die Sprache von Autolisp intus. Mir kommen manche Dinge unendlich kompliziert vor, obwohl ich alle Funktionen verstehe, aber die Verbindung halt nicht. Das ist wie als wenn einer mit dir spricht, du alle Wörter verstehst, aber halt nicht den Gedanke. Ich rätsle mich manchmal durch, stosse auf ein Problem - was ich nicht verstehe - dann schau ich nach und komme wieder auf ein neues Problem, das eiert sich so weiter, bis ich eigentlich nix weiss. Danke Euch komme ich schneller auf die Sprünge - echt super, ich schätze sehr eure Mühe - Danke!
------------------ Gruss Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 21. Mrz. 2012 08:41 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 21. Mrz. 2012 09:02 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 21. Mrz. 2012 09:11 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 21. Mrz. 2012 09:40 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 21. Mrz. 2012 09:59 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
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: 21. Mrz. 2012 10:06 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hallo Dirk, vielleicht noch ein kleine Anmerkung: (setq PKT (cadr P)) Ich habe diese Variablenzuweisung nur gemacht, damit es ein bißchen deutlicher wird, was passiert. Technisch gesehen ist sie völlig unnötig, im Gegenteil, wirst Du zwar bei dem kleinen Beispiel nicht merken, aber jede Zuweisung kostet Zeit. Weil in meinem Falle der Wert der Variablen PKT und der Wert von (cadr P) identisch sind kannst Du entweder PKT oder (cadr P) an die Funktion TXTMAKE übergeben. Der Funktion ist es egal, denn dort wird der übergebene Wert als PKT deklariert, aber nur innerhalb der Funktion. Wenn ich Dich noch mehr verwirrt habe tut es mir leid, aber besser erklären kann ich es nicht. ------------------ viele Grüße Jörn http://www.bosse-engineering.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 29. Mrz. 2012 09:38 <-- editieren / zitieren --> Unities abgeben:
Jetzt bin ich mal den Buchtips nachgegangen und habe mir das Einstiegsbuch in Visual C# zugelegt, was mir beim Durchblättern auffällt, dass überhaupt nicht auf die Schnittstelle Autocad eingegangen wird. Sondern erstmal ganz allgemein erklärt wird wie die Sprache funktioniert. Gibt es ähnlich wie bei VBA ein Handbuch was gleich auf die Kombination Autocad mit Visual C# eingeht. Ich habe ja nicht vor, erst Windowsprogramme zu schreiben, um dann zu Autocad überzugehen. ------------------ Gruss Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 29. Mrz. 2012 09:44 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 29. Mrz. 2012 09:56 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Zitat: Original erstellt von cadplayer: ... Ich habe ja nicht vor, erst Windowsprogramme zu schreiben, um dann zu Autocad überzugehen. ...
ähm sorry, das ist wohl aber der sinnvolle Weg. Also ich habe schon häufig die Erfahrung gemacht, dass es absolut sinnvoll ist, die Basics zu verinnerlichen. Dieses Wissen ist unerläßlich und erlaubt einem das Adaptieren auf komplexe Aufgabe. Und sorry, bei C#.Net bist du mehr in der Windowswelt unterwegs, als in AutoCAD. Du hast es beim C#.Net mit einer gänzlich objektorientierten Programmiersprache zu tun. Wenn du dazu die Basics nicht weißt, kannst du weder das AutoCAD-ObjectModell verstehen noch anwenden. Die Basics sind mühsam, womöglich langweilig aber ganz sicher nicht unnötig. Fang am Anfang an und nicht mittendrinn! Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 29. Mrz. 2012 10:02 <-- editieren / zitieren --> Unities abgeben:
|
Mailüfterl Mitglied Abgewandter Ingenieur und Softwarebastler
Beiträge: 15 Registriert: 12.08.2010
|
erstellt am: 29. Mrz. 2012 12:18 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hallo Dirk, ja das trifft zu. Auf die AutoCAD-Programmierung wird in den empfohlenen Büchern nicht eingegangen. Mir ist auch kein Buch bekannt, in dem das geschieht. Möglicherweise existiert auch keines. Das schadet am Anfang jedoch nicht, da man sich durchaus zunächst Grundkenntnisse der C#-Programmierung aneignen sollte, bevor man versucht sie auf die AutoCAD-Objekte anzuwenden. Auf den ADN-Seiten von Autodesk gibt es ein wenig Material zur Programmierung von AutoCAD mit C#. Dieser Hinweis dürfte Dir allerdings wenig nützlich sein, wenn Du keinen Zugang dazu hast. Ich würde an Deiner Stelle C# erst einmal verschieben, zumal es wesentlich anspruchsvoller ist, weshalb Du weniger schnell zu brauchbaren Ergebnissen kommst, als mit VLISP. Darüber hinaus nützt Dir die Kenntnis der C#-Programmierung wenig, wenn Du die AutoCAD-Objekte nicht kennst - und für Deine dynamische Anzeige gibt es ja eine Lösung, wenn sie auch anders ist, als ursprünglich von Dir erdacht, so ist sie doch nicht weniger elegant. Gruß, Mailüfterl [Diese Nachricht wurde von Mailüfterl am 29. Mrz. 2012 editiert.] [Diese Nachricht wurde von Mailüfterl am 29. Mrz. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 30. Mrz. 2012 08:02 <-- editieren / zitieren --> Unities abgeben:
Ja Mailüfterl, ich hatte vielleicht eine völlig andere Vorstellung von C# - interessant finde ich jedoch, dass es hier die Möglichkeit gibt extern auf die Zeichnungsdatenbank einzugreifen und Projektübergreifend verschiedene Applikationen anzusprechen. Das es wesentlich anspruchsvoller gegenüber Auto- und Visual Lisp ist, war mir klar. Ich gehe davon aus, mich längerfristig in die Materie einzuarbeiten und einige Foren gibt es auch, die Beispiele liefern. Was meinst du jedoch mit ADN-Seiten von Autodesk, mit Zugang ist wahrscheinlich nicht das gewöhnliche account des SubscribtionCenter gemeint oder? ------------------ Gruss Dirk [Diese Nachricht wurde von cadplayer am 30. Mrz. 2012 editiert.] 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: 30. Mrz. 2012 08:20 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
ADN-Autodesk-Developer-Network .. ist ein spezieller Bereich, in dem die Entwickler (1) Zugriff auf die verschiedensten Autodesk-Produkte haben .. (2) Support-Anfragen stellen können .. (3) Support-Lösungen veröffentlicht sind. Für Firmen, die Applikationen professionell entwickeln, ist besonders der Punkt(1) wichtig, da man ja nicht alle Programmversionen kaufen kann. Der Support ist ok, manchmal recht langsam. Bei meinen Fragen habe ich aber meist nur die Anerkennung als Bug bekommen, der dann in die Liste der Bug's aufgenommen wird. Was dann allerdings die gleiche Wirkung hat, wie die Bug-Reports der normalen Anwender. Für den Normalanwender, der nur für sich Programme schreibt ist der ADN-Zugang nicht wirklich wichtig. Die verschiedenen Foren geben auch eine gute Hilfestellung bei Problemen - der direkte ADN-Support-Zugang ist also nicht wirklich erforderlich. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 30. Mrz. 2012 08:57 <-- editieren / zitieren --> Unities abgeben:
|
Mailüfterl Mitglied Abgewandter Ingenieur und Softwarebastler
Beiträge: 15 Registriert: 12.08.2010
|
erstellt am: 30. Mrz. 2012 11:41 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Zitat: Original erstellt von cadplayer: ... interessant finde ich jedoch, dass es hier die Möglichkeit gibt extern auf die Zeichnungsdatenbank einzugreifen ..
Hallo, das macht Du auch jetzt schon innerhalb von VLISP mit ActiveX. Eine externe Windows-Applikation kann auf dieselbe Weise auf die AutoCAD-Zeichnungsdatenbank zugreifen. Ebenso kannst Du umgekehrt mit ActiveX in VLISP nicht nur auf AutoCAD zugreifen sondern auf andere Windows-Applikationen, die auf dem Arbeitsplatz verfügbar sind.Du könntest so z.B. die Koordinatenpunkte, die Deine Funktion hier errechnet und konstruiert hat, nach Excel oder nach Access schreiben. Gruß, Mailüfterl Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |