| |
| 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: LINIE in eine Richtung (1775 mal gelesen)
|
m-troeger Mitglied gel. Bauzeichner; Vermessungszeichner, Vermesser im Außendienst, GIS-Erfassung in PARIS
Beiträge: 295 Registriert: .. ACAD14 und 2005; MAP4; GeoCAD; PARIS; ( Vermessung )
|
erstellt am: 21. Sep. 2004 20:26 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, es ist doch möglich bein zeichnen einer Linie nach der Startpunk eine Richtung zu definieren ( <45.00g ) Befehl: linie Ersten Punkt angeben: Nächsten Punkt angeben oder [Zurück]: <45.00g Winkel überschreiben: 41 Nächsten Punkt angeben oder [Zurück]: LISP schluckt folgendes aber nicht! (command "_LINE" '(10 10) "<45.00g" pause) Habt Ihr eine Idee wie sowas hinbekomme?
------------------ Servus, Mario www.the-skier.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 22. Sep. 2004 01:53 <-- editieren / zitieren --> Unities abgeben: Nur für m-troeger
|
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 22. Sep. 2004 08:01 <-- editieren / zitieren --> Unities abgeben: Nur für m-troeger
So könnte man es machen - aber wozu das gut sein soll? Code:
; auf einen anständigen *error*-Handler habe ich hier verzichtet, sollte aber ; normalerweise nicht fehlen (DEFUN C:L45D () (SETQ omode (GETVAR "ORTHOMODE") snapa (GETVAR "SNAPANG") ) (SETVAR "ORTHOMODE" 1) (SETVAR "SNAPANG" (ANGTOF "45d")) (SETQ startpkt '(10.0 10.0 0.0)) (SETQ endpkt (GETPOINT startpkt "\nEndpunkt der Linie angeben:")) (IF endpkt (COMMAND "_LINE" Startpkt endpkt "") ) (SETVAR "ORTHOMODE" omode) (SETVAR "SNAPANG" snapa) (PRIN1) )
Mit freundlichem Gruß Udo Hübner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 22. Sep. 2004 08:19 <-- editieren / zitieren --> Unities abgeben: Nur für m-troeger
Hi Mario Man könnte den Vorschlag von Udo noch "erweitern" und mit (polar) den nächsten Punkt rechnen (dann gehts nicht nur mit 45 Grad): winkkorr = Winkel eingeben winkel = (+ (angle startpkt endpkt) winkkorr) strecke = (getdist) neupunkt = (polar endpkt winkel strecke) (command "_line" endpkt neupkt "") Nur ein Denkanstoss, da ich nicht weiß, welche (Winkel)Einheiten Du verwendest. ------------------ Gruß, Ernst Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
m-troeger Mitglied gel. Bauzeichner; Vermessungszeichner, Vermesser im Außendienst, GIS-Erfassung in PARIS
Beiträge: 295 Registriert: .. ACAD14 und 2005; MAP4; GeoCAD; PARIS; ( Vermessung )
|
erstellt am: 22. Sep. 2004 18:14 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank erstmal, auch wenn es keine rechte Lösung gibt. Das ganze benötige ich für ein Prog für eine Othogonale Bemaßung. Das Prog soll aber nicht nur bemaßen können, sondern Maße auch oth. absetzen können. Der Effekt beim Linie Befehl ist, das ich einen Winkel angeben kann, wobei ich aber ebenfalls in die entgegengesetzte Richtung zeichnen kann, je nachdem wie ich mit der Maus picke. d.h. Bemaßung aus einer Gebäudekante -> Picken 1.Ecke, 2.Ecke, daraus ergiebt sich die Richtung, nun möchte ich auf der Abzisse(Gebäudekante) z.B. eine Länge von 3.0 abtragen und die Richtung manuell per Maus wählen -> also Richtung von 1.Ecke zu 2.Ecke (grün) oder eben von 2.Ecke zur 1.Ecke (gelb), wobei immer von der 1.Ecke aus die Maße abgetragen werden sollen.( Also über die Gebäudekante hinaus verlängern [gelb], oder auf der Gebäudekande abtragen [grün])Selbiges soll dann mit den Ordinaten geschen, wo die Richtung jeweils +/-50gon der Abszisse beträgt (ausgezogen/gestrichelt). ------------------ Servus, Mario
www.the-skier.de [Diese Nachricht wurde von m-troeger am 22. Sep. 2004 editiert.] [Diese Nachricht wurde von m-troeger am 22. Sep. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Björn Möller Mitglied
Beiträge: 96 Registriert: 22.03.2004 AutoCad Map 2012,Topobase 2,Rasterdesign
|
erstellt am: 23. Sep. 2004 10:45 <-- editieren / zitieren --> Unities abgeben: Nur für m-troeger
Hi Mario, vielleicht hilft Dir das (DEFUN C:KLEINPKT (/ BJ:P1X BJ:P1 BJ:P2X BJ:P2 BJ:ABSIZZE BJ RDINATE BJ:P3 BJ:P4) (SETVAR "cmdecho" 0) (SETQ BJ:P1X (getpoint "\n Startpunkt:")) (SETQ BJ:P1 (LIST (CAR BJ:P1X) (CADR BJ:P1X) 0.0)) (SETQ BJ:P2X (getpoint BJ:P1 "\n Ausrichtung:")) (SETQ BJ:P2 (LIST (CAR BJ:P2X) (CADR BJ:P2X) 0.0)) (SETQ BJ:ABSIZZE (* (GETDIST "\nGeben Sie die Abzizze ein: ") -1)) (SETQ BJ RDINATE (GETDIST "\nGeben Sie die Ordinate ein (links minus): ")) (COMMAND "BKS" "NEU" "3P" BJ:P1 BJ:P2 "") (SETQ BJ:P3 (TRANS (List BJ:ABSIZZE 0.0 0.0) 1 0)) (SETQ BJ:P4 (TRANS (List BJ:ABSIZZE BJ RDINATE 0.0) 1 0)) (COMMAND "BKS" "WELT") (COMMAND "_dimaligned" BJ:P1 BJ:P3 BJ:P3) (COMMAND "_dimaligned" BJ:P3 BJ:P4 BJ:P4) (COMMAND "_point" BJ:P4) ) Björn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 23. Sep. 2004 15:03 <-- editieren / zitieren --> Unities abgeben: Nur für m-troeger
Uhhhhh! Herzlich Willkommen Herr Möller im Lisp-Forum :grins. Hat ja lang gedauert, bis Du das mal gefunden hast... Und dann gleich hier mit echtem Code prahlen :lol. Edit: Ach ja Du mußt beim posten von code am besten die UBB Steuerzeichen für code drumrumbasteln und manchmal auch die smilies deaktivieren, sonnst bekommst Du immer so 'n "müden" Code angezeigt... Ubb-Code:
Code:
"[code ]Dein Code[ /code]"
------------------ Ciao, Marc [Diese Nachricht wurde von marc.scherer am 23. Sep. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
m-troeger Mitglied gel. Bauzeichner; Vermessungszeichner, Vermesser im Außendienst, GIS-Erfassung in PARIS
Beiträge: 295 Registriert: .. ACAD14 und 2005; MAP4; GeoCAD; PARIS; ( Vermessung )
|
erstellt am: 23. Sep. 2004 21:29 <-- editieren / zitieren --> Unities abgeben:
Danke Euch für eure Bemühungen. Es wird mir wohl nichts anderes übrig bleiben wie mit snapang zu arbeiten (Der Winkel ist entsprechend der Richtung vom 1. zum 2.Eckpunkt). Es wäre halt genial wenn nach Eingabe einer Länge zB. die Abszissenlinie in dieser Länge vom Eckpunkt1 aus vorangezeigt würde und man nit der Maus die endgültige Richtung festlegt. Also muß ich wohl den Weg über die Fangfunktionen mit dem Polarer Abstand und snapang gehen. Und mit diesem inaktiven Modus ist echt nichts zu machen ??? Schade, da könnte man einiges damit machen. Danke Euch nochmal. ------------------ Servus, Mario www.the-skier.de mich hat einfach die Orthogonalbemaßung von MS + PARIS-Aufsatz auf solche wirren Ideen gebracht [Diese Nachricht wurde von m-troeger am 23. Sep. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dabrunz Mitglied
Beiträge: 127 Registriert: 28.05.2003
|
erstellt am: 28. Sep. 2004 15:17 <-- editieren / zitieren --> Unities abgeben: Nur für m-troeger
Zitat: [..] Und mit diesem inaktiven Modus ist echt nichts zu machen ??? Schade, da könnte man einiges damit machen.
Doch, da geht noch was - ist aber 'ne Menge Arbeit und recht unlecker in der Programmierung. Schon mal was von grread und grdraw gehört? Ich bastle mal eine Beispiel-Funktion :getpoint-mouseVerfolgung, mit der nicht nur ein vom User gewählter Punkt zurück gegeben wird, sondern die auch eine übergebene Funktion mit der aktuellen Mauszeiger-Position ausführt, wenn die sich verändert. Code:
(defun :getpoint-mouseVerfolgung (#tracking-procedure / input inputType) ;**** Initialisierung - <Tracking-Procedure> **** (setq #tracking-procedure(eval #tracking-procedure)) ;**** Initialisierung - Werte **** (setq input (grread'tracking-on 1) inputType'initialisierung ) ;**** Mouse-Move-Loop **** (while (/= 3 inputType) (setq input (grread'tracking-on 1) inputType(car input) ) ;**** nur Bewegung -> <Tracking-Procedure> auf letzten Punkt anwenden (if(= 5 inputType)(#tracking-procedure (cadr input))) ) ;**** Punkt 'gepickt' -> Rückgabe **** (if (= 3 inputType) (cadr input)) )
Was hier passiert kann frau sich mal vergegenwärtigen, wenn sie exemplarisch diesen Aufruf ausprobiert: Code: (:getpoint-mouseVerfolgung'print)
Das intern verwendete grread ist viel mächtiger, aber ich denke für unsere Zwecke sollte die von mir gewählte Vereinfachung erstmal genügen. Aber ACHTUNG: grread kennt keinen OFang! Wer den braucht, muss ihn sich selber basteln - gibt ja immerhin die Funktion osnap. Hatte ich übrigens erwähnt, dass es keine besonders komfortable Lösung ist .. So, das ist die halbe Miete. Was fehlt ist nun noch eine Möglichkeit schicke Gummibänder zu malen (besser: malen zu lassen) und das soll grdraw für uns erledigen. Um zu zeigen, wie das geht auch hierzu eine kleine Beispiel-Funktion: Code:
(defun :getpoint-fueArme (#anfang / ) (:getpoint-mouseVerfolgung (function(lambda(track-point) (redraw);** Holzhammer, aber räumt den grdraw-Kram gründlich ab (grdraw #anfang track-point 1 0);** Farbe 1 <-> rot, 0 <-> kein HighLighting )); end LAMBDA ) )
Hier kann ein Aufruf so aussehen:
Code: (:getpoint-fuerArme'(0 0 0))
Wer ein wenig mit der Funktion herum experimentiert, wird feststellen, dass die letzte Gummiband-Linie nicht verschwindet. Das lässt sich entweder innerhalb der Funktion beheben oder es wird noch einmal ein (redraw) hinterher geschickt. Ich ändere mal die Funktions-Definition, brauche dann aber eine interne Variable extra: Code:
(defun :getpoint-fueArme (#anfang / rueckgabe) (setq rueckgabe (:getpoint-mouseVerfolgung (function(lambda(track-point) (redraw) (grdraw #anfang track-point 1 0) )) ) ) (redraw) rueckgabe )
Aber ACHTUNG: Transparente Menüaufrufe funktionieren hier nicht! Allerdings ist wie bereits erwähnt grread viel mächtiger und auch solche Aufrufe lassen sich verarbeiten, sie müssen nur en detail auseinander gepuzzlet werden. Hatte ich eigendlich darauf hingewiesen, dass der Lösungs-Ansatz ein wenig unbequem zu programmieren ist? Ich denke mal, diese Vorschläge dürften für den einen oder anderen Denkanstoss sorgen - bin mal gespannt, wie's weiter geht. Achim Dabrunz ------------------ [Diese Nachricht wurde von Dabrunz am 28. Sep. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 28. Sep. 2004 16:27 <-- editieren / zitieren --> Unities abgeben: Nur für m-troeger
|