| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Dreiecke mit 3 bekannten Seiten (8775 mal gelesen)
|
Philipp-M Mitglied Bauzeichner
Beiträge: 157 Registriert: 15.06.2004 AutoCAD LT 2021 Windows 7 Plotter HP-DJ-T1100 Drucker Olivetti 200MF Drucker Olivetti mf201
|
erstellt am: 17. Dez. 2004 10:00 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, habe mehrere Dreiecke zu zeichnen, von denen mir alle 3 Seitenlängen bekannt sind. Gibt es eine Möglichkeit in Acad 2004 diese Dreiecke schnell zu zeichnen. Meine damit ohne anzufangen Kreise zu zeichnen und deren Schnittpunkte mit Linien zu verbinden ? Das ist nämlich sehr mühsam. Danke im voraus ------------------ Philipp Mutschlechner, Brixen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 Sie nannten ihn google.
|
erstellt am: 17. Dez. 2004 10:35 <-- editieren / zitieren --> Unities abgeben: Nur für Philipp-M
Man nehme: einmal den Befehl _polygon und dessen Option _edge und des weiteren die bekannte Länge einer Seite und trage diese ein (bzw. gibt man zwei Punkte an oder wie auch immer) (Dreiecke sind halt auch nur Polygone ) EDIT: Gilt natürlich nur für gleichseitige Dreiecke - allgemein gültig muss ich noch forschen (imme diese Schnellschüsse). ------------------ Grüsse Thomas EDIT : Rechtschreibung [Diese Nachricht wurde von tunnelbauer am 17. Dez. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hedonis Mitglied Ja
Beiträge: 11 Registriert: 01.12.2004 Windows 2000/SP3 AutoCAD 2004/SP1a Hp DesignJet 800
|
erstellt am: 17. Dez. 2004 10:45 <-- editieren / zitieren --> Unities abgeben: Nur für Philipp-M
Dies geht aber nur mit einem gleichseitigen Dreieck, oder?? ich glaube er meint verschiedene seitenlängen. mit einem kleinen lisp-progi sollte es kein prob sein. ob es direkt im acad geht weiss ich aber im mom auch ned. ------------------ Wer einen Fehler findet, darf ihn behalten. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Berliner Mitglied Konstrukteur
Beiträge: 407 Registriert: 27.04.2004
|
erstellt am: 17. Dez. 2004 10:49 <-- editieren / zitieren --> Unities abgeben: Nur für Philipp-M
|
Philipp-M Mitglied Bauzeichner
Beiträge: 157 Registriert: 15.06.2004 AutoCAD LT 2021 Windows 7 Plotter HP-DJ-T1100 Drucker Olivetti 200MF Drucker Olivetti mf201
|
erstellt am: 17. Dez. 2004 10:50 <-- editieren / zitieren --> Unities abgeben:
|
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: 17. Dez. 2004 11:01 <-- editieren / zitieren --> Unities abgeben: Nur für Philipp-M
ok, weil bald Weihnachten ist : (defun c reieck (/ PA PB PC W A B C cosALPHA ALPHA) (if(and(setq PA (getpoint "\nECKPUNKT A :")) (setq W (getangle PA "\nWinkel der Seite c :")) (setq A (getreal "\nLänge der Seite a : ")) (setq B (getreal "\nLänge der Seite b : ")) (setq C (getreal "\nLänge der Seite c : ")) ) (progn (setq PB(mapcar '+ PA (list(*(cos W)C)(*(sin W)C) 0.0))) (setq cosALPHA(/(-(+(* B B)(* C C))(* A A))(* 2 B C))) (setq ALPHA (cond ((= cosALPHA 0) (/ PI 2)) ((>= 1 cosALPHA 0) (atan(/(sqrt(- 1.0 (* cosALPHA cosALPHA)))cosALPHA)) ) ((<= -1 0) (+ PI (atan(/(sqrt(- 1.0 (* cosALPHA cosALPHA)))cosALPHA))) ) ) ) (setq PC(mapcar '+ PA (list(*(cos (+ ALPHA W))C)(*(sin (+ ALPHA W))C) 0.0))) (command "_pline" PA PB PC "_c") ) ) )
------------------ - 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 |
Philipp-M Mitglied Bauzeichner
Beiträge: 157 Registriert: 15.06.2004
|
erstellt am: 17. Dez. 2004 11:19 <-- editieren / zitieren --> Unities abgeben:
Habe jetzt die lisp geladen. Erhalte damit aber immer ein gleichseitiges Dreieck, gebe ich da irgendetwas falsch ein ? Habe z.b. ein dreieck mit den Längen 2,40 - 1,50 - 1,35. Wie bekomme ich das so hin, mir ist egal wie das dreieck dann gedreht ist, hauptsache die längen stimmen. ------------------ Philipp Mutschlechner, Brixen 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: 17. Dez. 2004 11:30 <-- editieren / zitieren --> Unities abgeben: Nur für Philipp-M
Kleiner Tippfehler (defun c reieck (/ PA PB PC W A B C cosALPHA ALPHA) (if(and(setq PA (getpoint "\nECKPUNKT A :")) (setq W (getangle PA "\nWinkel der Seite c :")) (setq A (getreal "\nLänge der Seite a : ")) (setq B (getreal "\nLänge der Seite b : ")) (setq C (getreal "\nLänge der Seite c : ")) ) (progn (setq PB(mapcar '+ PA (list(*(cos W)C)(*(sin W)C) 0.0))) (setq cosALPHA(/(-(+(* B B)(* C C))(* A A))(* 2 B C))) (setq ALPHA (cond ((= cosALPHA 0) (/ PI 2)) ((>= 1 cosALPHA 0) (atan(/(sqrt(- 1.0 (* cosALPHA cosALPHA)))cosALPHA)) ) ((<= -1 0) (+ PI (atan(/(sqrt(- 1.0 (* cosALPHA cosALPHA)))cosALPHA))) ) ) ) (setq PC(mapcar '+ PA (list(*(cos (+ ALPHA W))B)(*(sin (+ ALPHA W))B) 0.0))) (command "_pline" PA PB PC "_c") ) ) ) ------------------ - 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 |
Philipp-M Mitglied Bauzeichner
Beiträge: 157 Registriert: 15.06.2004
|
erstellt am: 17. Dez. 2004 11:41 <-- editieren / zitieren --> Unities abgeben:
|
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: 17. Dez. 2004 11:47 <-- editieren / zitieren --> Unities abgeben: Nur für Philipp-M
Zitat: Original erstellt von Philipp-M:
bin dir sehr dankbar !
OK .. dann geh mich mir mal jetzt davon den Ferrari kaufen
------------------ - 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 |
Walter Lindner Mitglied Architekt
Beiträge: 15 Registriert: 30.04.2005 XPPro, Autocad Architecture 2011
|
erstellt am: 27. Jun. 2010 05:30 <-- editieren / zitieren --> Unities abgeben: Nur für Philipp-M
Hallo Cadmium, mir ist bewusst, dass ich auf einen alten Beitrag antworte. Da Autocad aber immer noch keine Funktion für ein allgemeines Dreick hat, ist die von Dir erstellte Routine für mich nach wie vor sehr hilfreich. Danke! Ich habe aber eine Frage und Bitte: An eine vorhandene Linie Punkt1 bis Punkt2 möchte ich eine weitere Linie Punkt2 bis Punkt3 zeichnen. Bekannt ist die Länge der Linie von Punkt2 bis Punkt3 sowie der Abstand Punkt1 bis Punkt3. Der Befehl sollte lauten: Linie von Punkt(Punkt2 klicken), Linienlänge(Länge eingeben), Abstand von zu wählendem Punkt(Punkt1 klicken, Abstand eingeben)>Linie von Punkt2 bis Punkt3 wird gezeichnet. Da es sich dabei im Prinzip um ein allgemeines Dreick handelt müsste der dazu benötigte Lispcode mit einer leicht modifizierten Fassung der von Dir beschriebenen Dreiecksfunktion eigentlich machbar sein. Leider bin ich da nicht so erfahren. Kannst Du mir dazu eventuell bitte helfen? Den Ferrari hast Du ja nun schon und das nächste Weihnachten ist auch nicht mehr so weit Gruß Walter
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Lindner Mitglied Architekt
Beiträge: 15 Registriert: 30.04.2005 XPPro, Autocad Architecture 2011
|
erstellt am: 27. Jun. 2010 06:25 <-- editieren / zitieren --> Unities abgeben: Nur für Philipp-M
Ich habe es einmal versucht. Im Prinzip scheint es nicht so schlecht zu sein, aber da ich mich mit lisp nicht gut auskenne sind meine Befehle für W und C vermutlich falsch. Code: (defun c:LinieLA (/ PA PB PC W A B C cosALPHA ALPHA) (if(and(setq PB (getpoint "\nLinie von Punkt : ")) (setq A (getreal "\nLinienlänge : ")) (setq PA (getpoint "\nBezugspunkt :")) (setq B (getreal "\nAbstand von Bezugspunkt : ")) ) (progn (setq W (getangle PA PB)) (setq C (getreal PA PB)) (setq cosALPHA(/(-(+(* B B)(* C C))(* A A))(* 2 B C))) (setq ALPHA (cond ((= cosALPHA 0) (/ PI 2)) ((>= 1 cosALPHA 0) (atan(/(sqrt(- 1.0 (* cosALPHA cosALPHA)))cosALPHA)) ) ((<= -1 0) (+ PI (atan(/(sqrt(- 1.0 (* cosALPHA cosALPHA)))cosALPHA))) ) ) ) (setq PC(mapcar '+ PA (list(*(cos (+ ALPHA W))B)(*(sin (+ ALPHA W))B) 0.0))) (command "linie" PB PC "_C") ) ) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Lindner Mitglied Architekt
Beiträge: 15 Registriert: 30.04.2005 XPPro, Autocad Architecture 2011
|
erstellt am: 27. Jun. 2010 06:44 <-- editieren / zitieren --> Unities abgeben: Nur für Philipp-M
Jetzt habe ich es doch alleine geschafft. Trotzdem vielen Dank an Cadmium, denn ohne seiner Lisp wäre es mir nicht möglich gewesen. Code: (defun c:LinieLA (/ PA PB PC W A B C cosALPHA ALPHA) (if(and(setq PB (getpoint "\nLinie von Punkt : ")) (setq A (getreal "\nLinienlänge : ")) (setq PA (getpoint "\nBezugspunkt :")) (setq B (getreal "\nAbstand von Bezugspunkt : ")) ) (progn (setq W (angle PA PB)) (setq C (distance PA PB)) (setq cosALPHA(/(-(+(* B B)(* C C))(* A A))(* 2 B C))) (setq ALPHA (cond ((= cosALPHA 0) (/ PI 2)) ((>= 1 cosALPHA 0) (atan(/(sqrt(- 1.0 (* cosALPHA cosALPHA)))cosALPHA)) ) ((<= -1 0) (+ PI (atan(/(sqrt(- 1.0 (* cosALPHA cosALPHA)))cosALPHA))) ) ) ) (setq PC(mapcar '+ PA (list(*(cos (+ ALPHA W))B)(*(sin (+ ALPHA W))B) 0.0))) (command "linie" PB PC "_C") ) ) )
PS: Ich habe häufig Räume zu zeichnen, deren Wände nicht im rechten Winkel sind und von denen ich die Längen von 4 Seiten sowie einer Diagonale kenne. Mit der oben beschriebenen Funktion kann ich mir nun auf einfache Weise ohne Hilfskreise eine 2D Hilfskonstruktion für die eigentliche Wanderstellung mit Autocad Architecture vorzeichnen. Es wäre natürlich toll, wenn ich diese Hilfskonstruktion nicht benötigen würde, sondern die Wände gleich in einer ähnlichen Routine wie für die Linien erstellen könnte. Wenn diesbezüglich jemandem etwas einfällt, wäre ich dafür sehr dankbar. Es wäre natürlich ideal, wenn eine solche Funktion direkt in Autocad Architektur zur Verfügung stehen würde. Es gibt genügend Altbauten mit nicht rechtwinkeligen Wänden. Leider kenne ich keine Möglichkeit diesen Wunsch an Autodesk weiter zu geben. PPS: Auf http://www.cadforum.cz/cadforum_en/download.asp?fileID=865 gibt es eine tolle Funktion für ein allgemeines Dreieck aus drei Seiten, aber auch über WinkelSeiteWinkel oder SeiteWinkelSeite. Es ist wirklich ärgerlich, dass Autocad nach so vielen teuer zu erstehenden Jahresupdates noch immer keine Dreiecksfunktion integriert hat. [Diese Nachricht wurde von Walter Lindner am 27. Jun. 2010 editiert.] 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: 27. Jun. 2010 09:38 <-- editieren / zitieren --> Unities abgeben: Nur für Philipp-M
|
Walter Lindner Mitglied Architekt
Beiträge: 15 Registriert: 30.04.2005 XPPro, Autocad Architecture 2011
|
erstellt am: 27. Jun. 2010 11:58 <-- editieren / zitieren --> Unities abgeben: Nur für Philipp-M
Es ist mir gelungen die lisp auch für die gewünschte Wanderstellung umzuschreiben: An eine VORHANDENE Wand Punkt1 bis Punkt2 soll ein weiterer Wandteil Punkt2 bis Punkt3 gezeichnet werden. Bekannt ist die Länge der Wand von Punkt2 bis Punkt3 sowie der Abstand Punkt1 bis Punkt3 (die Raumdiagonale). Der Befehl lautet: Wand von Punkt(Punkt2 klicken), Wandlänge(Länge eingeben), Bezugspunkt(Punkt1 klicken), Abstand vom Bezugspunkt(Abstand eingeben)>Wand von Punkt2 bis Punkt3 wird gezeichnet. Code: (defun c:WandLA (/ PA PB PC W A B C cosALPHA ALPHA) (if(and(setq PB (getpoint "\nWand von Punkt : ")) (setq A (getreal "\nWandlänge : ")) (setq PA (getpoint "\nBezugspunkt :")) (setq B (getreal "\nAbstand von Bezugspunkt : ")) ) (progn (setq W (angle PA PB)) (setq C (distance PA PB)) (setq cosALPHA(/(-(+(* B B)(* C C))(* A A))(* 2 B C))) (setq ALPHA (cond ((= cosALPHA 0) (/ PI 2)) ((>= 1 cosALPHA 0) (atan(/(sqrt(- 1.0 (* cosALPHA cosALPHA)))cosALPHA)) ) ((<= -1 0) (+ PI (atan(/(sqrt(- 1.0 (* cosALPHA cosALPHA)))cosALPHA))) ) ) ) (setq PC(mapcar '+ PA (list(*(cos (+ ALPHA W))B)(*(sin (+ ALPHA W))B) 0.0))) (command "WallAdd" PB PC "_C") ) ) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |