| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Bogen tangential an Linie zeichnen (1378 mal gelesen)
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 05. Aug. 2013 15:52 <-- editieren / zitieren --> Unities abgeben:
Hat jemand von Euch eine Idee, wie ich ermitteln kann, ob ein gewählter Punkt links oder rechts von einer gewählten Linie liegt? Ich brauche diese Angabe, um einen Bogen tagential entweder links oder rechts der Linie zeichnen zu können. ------------------ Gruss Dirk http://cadplayerlounge.blogspot.se 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: 05. Aug. 2013 17:38 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Ich glaube, das hatten wir schon mal - prüft, ob der Punkt #pkt3 links der Geraden #pkt1 - #pkt2 liegt: Code: (defun pktlinks? (#pkt1 #pkt2 #pkt3 / ) (if (> (* (- (car #pkt2) (car #pkt1)) (- (cadr #pkt3) (cadr #pkt1))) (* (- (cadr #pkt2) (cadr #pkt1)) (- (car #pkt3) (car #pkt1))) ) t ;Punkt links nil ;Punkt rechts ) )
------------------ Schöne Grüße Ernst www.geopaint.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 06. Aug. 2013 10:12 <-- editieren / zitieren --> Unities abgeben:
Danke Ernst, ich weiss zwar nicht genau wie du auf die Formel gekommen bist - es funktioniert jedenfalls einwandfrei. Ich habe hier folgenden Code geschrieben, bin aber noch nicht glücklich damit, wie er läuft. Es soll ja der Bogen in die Richtung gezeichnet werden, die vorgegeben wird. Hier passiert nur, das ein Bogen tangential an die Linie gesetzt wird, aber nicht mit der korrekten Richtung. Ich könnte zwar jetzt eine Abfrage machen, die den Bogen spiegelt, finde ich aber nicht optimal. Kennt einer einen Tip Code: ; Funktion zeichnet einen Bogen tagential an eine gewählte Linie (defun c:arct ( / rad obj z werte) (while (not z) (if (not (setq rad (getreal "\nWähle einen Bogenradius "))) (princ " Gib ein Radius ein! ") (progn (setq z 1) rad ) ) ) (setq z nil) (if (= "LINE" (cdr (assoc 0 (setq rec (entget (car (while (not z) (if (not (setq obj (entsel "\nWähle eine Linie aus "))) (princ "\n Nichts gewählt!") (progn (setq z 1) obj ) ) ) ) ) ) ) ) ) (if (and (setq werte (list (cons "rad" rad) (cons "pt1" (cdr (assoc 10 rec))) (cons "pt2" (if (null i) (progn (setq ref (getvar "osmode")) (setvar "osmode" 513) (cdr (assoc 11 rec))))) (cons "pt3" (getpoint "\nWähle einen Linienpunkt, wo der Bogen angetragen werden soll ")) (cons "pt4" (if (null i) (progn (setvar "osmode" ref) (getpoint "\nWähle einen Bogenendpunkt ")))) (cons "ang" (angle (cdr (assoc 10 rec)) (cdr (assoc 11 rec)))) ) ) ) (apply '(lambda (rad p1 p2 p3 p4 ang) ; Kontrollroutine von Ernst alias geos im cad.de forum ; prüft ob der Endpunkt rechts oder links der Linie liegt (if (> (* (- (car p2) (car p1)) (- (cadr p4) (cadr p1))) (* (- (cadr p2) (cadr p1)) (- (car p4) (car p1))) ) ; Punkt liegt links (progn (command "_arc" p3 "_c" (polar p3 (+ (/ pi 2) ang) rad) "_l" (distance p3 p4) ) ) ; Punkt liegt rechts (progn (setvar "ANGDIR" 1) (command "_arc" p3 "_c" (polar p3 (- ang (/ pi 2)) rad) "_l" (distance p3 p4) ) ) ) ) (mapcar 'cdr werte) ) ) (alert "keine Linie gewählt") ) (princ) );|
------------------ Gruss Dirk http://cadplayerlounge.blogspot.se Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 06. Aug. 2013 15:22 <-- editieren / zitieren --> Unities abgeben:
Ich hab das jetzt auf diese Weise gelöst, wenn der Punkt rechts von der Linie liegt. Damit werden alle Bögen in Laufrichtung der gew. Linie gezeichnet. Ist nicht toll, aber ich weiss mir nicht anders zu helfen. Vielleicht hat einer ja Vorschläge. Code: ; Punkt liegt rechts (progn (setq pc (polar p3 (+ (/ pi 2) ang) (- rad))) ; Kreismittelpunkt (setq ang (- (apply '(lambda (c tg be) ; Winkel in pc zw. p3 p4 (- (angle c be) (angle c tg))) (list pc p3 p4) ) ) ) (command "_arc" (polar pc (+ (angle pc p4) (* ang 0.33)) rad) (polar pc (+ (angle pc p4) (* ang 0.66)) rad) p3 ) )
------------------ Gruss Dirk http://cadplayerlounge.blogspot.se 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: 06. Aug. 2013 19:56 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Will jetzt Deine Progs nicht ausprobieren - es ist viel zu heiß - noch immer 30+ ... Aber Du könntest die Linie nochmals (fiktiv) zeichnen (und wieder löschen) und Dir sodann den ARC-Befehl mit Leereingabe (statt P1) zu Nutze machen ...? ------------------ Schöne Grüße Ernst www.geopaint.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 08. Aug. 2013 16:13 <-- editieren / zitieren --> Unities abgeben:
Zitat: Dir sodann den ARC-Befehl mit Leereingabe (statt P1) zu Nutze machen ...
was meinst du genau mit Linie zeichnen, mir geht es doch um den Bogen, den ich durch Auswahl der Linie zeichnen lassen will. Vielleicht hast de ja mal Zeit bei Gelegenheit, meine Schnipsel zu testen ------------------ Gruss Dirk http://cadplayerlounge.blogspot.se 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: 08. Aug. 2013 17:40 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Zitat: Original erstellt von cadplayer: was meinst du genau mit Linie zeichnen, mir geht es doch um den Bogen, den ich durch Auswahl der Linie zeichnen lassen will.
Befehl: l LINIE Ersten Punkt angeben: Nächsten Punkt angeben oder [Zurück]: Nächsten Punkt angeben oder [Zurück]: <ENTER> Befehl: _arc Startpunkt für Bogen angeben oder [Zentrum]: <ENTER> Endpunkt für Bogen angeben: Anstelle von Startpunkt drücke EINGABE und schau, was passiert. Zitat: Vielleicht hast de ja mal Zeit bei Gelegenheit, meine Schnipsel zu testen
Vielleicht am WE, da solls kühler werden - derzeit 38°! ------------------ Schöne Grüße Ernst www.geopaint.at 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: 08. Aug. 2013 17:54 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Servus Dirk! Über die beiden Bogenpunkte kannst doch die Laufrichtung (die zum Rechnen für Deinen speziellen Fall, nicht die tatsächliche) der Linie bestimmen. Dann noch die Differenz der Richtungswinkel der Linie und Bogenendpunkt senkrecht zur Linie berechnen. Ergibt entweder Pi/2 oder -Pi/2 - entspricht links oder rechts. Ciao Georg ------------------ http://www.xxx-tausend.info Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 09. Aug. 2013 13:04 <-- editieren / zitieren --> Unities abgeben:
Gute Idee Ernst, mit einem Anschlussbogen an eine Linie - hatte ich doch früher zum Zeichnen auch so angewandt. Georg: Genau da lag mein Denkfehler, ich kam nicht drauf den Winkel gegen den Urzeigersinn zu rechen, baue ich noch ein, dann müsste es laufen. Vielen Dank für eure Einwürfe, nice WE! ------------------ Gruss Dirk http://cadplayerlounge.blogspot.se Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 09. Aug. 2013 19:38 <-- editieren / zitieren --> Unities abgeben:
Hi! Hier habe ich auf die Schnelle eure Eingaben eingebaut. Läuft, aber kann sicherlich noch nachgebessert werden. Bspw. dass gleich erkannt wird, wo sich der neue Bogenendpunkt befindet, dass quasi die "gespiegelte" variante gar nicht erst abgefragt werden muss. ------------------ Gruss Dirk http://cadplayerlounge.blogspot.se Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| EPLAN Konstrukteur (m/w/d) im Sondermaschinenbau | NORD Engineering ist Ihr zuverlässiger Partner für anspruchsvolle technische Projekte und Herausforderungen in ganz Norddeutschland. Wir verbinden Talente und Profis mit den passenden Unternehmen für langfristige Projekte aus verschiedensten Bereichen wie z.B. Maschinenbau, Elektrotechnik oder Schiffbau. Sie haben Ihr Studium oder Ihre Weiterbildung zum Techniker (m/w/d) abgeschlossen ... | Anzeige ansehen | Konstruktion, Visualisierung |
|
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: 12. Aug. 2013 19:28 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hab ich bis jetzt übersehen (mein letzter Tipp war gedacht für einen beliebigen Radius) aber da Du ja den Bogenradius angibst könntest Du: *) Linie wählen - (der dem Pickpkt. nähere Endpkt ist Bogenanfang !?) *) Radius eingeben *) (temporären) Endpunkt angeben je nach links/rechts (s.o.) Bogenmittelpkt. berechnen (liegt ja im rechten Winkel zur Linie) Vom Mittelpkt. über (tmp.) Endpkt tatsächlichen Endpkt berechnen, somit hast Du alles was Du für den Bogen brauchst. Ergänzung: Gehe davon aus, dass der anzugebende Endpkt. nur mehr für die Seite und die Bogenlänge verwendet wird (sonst Überbestimmung) ------------------ Schöne Grüße Ernst
www.geopaint.at [Diese Nachricht wurde von Geos am 12. Aug. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |