| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
 | SOLIDWORKS Grundlagen Schulung, ein Seminar am 14.07.2025
|
Autor
|
Thema: Kreisbogenmittelpunkt und radius aus 2 Punkten und Winkel bestimmen (9975 mal gelesen)
|
albundy1 Mitglied
 Beiträge: 7 Registriert: 14.09.2010 Solidworks 20009/2010
|
erstellt am: 14. Sep. 2010 21:56 <-- editieren / zitieren --> Unities abgeben:         
Hallo Gemeinde, ich habe ein IDF-File, in dem Kreisbögen definiert sind. Das IDF-Format gibt aber die Kreisbögen als 2 Punkte (P1(x1,y1) und P2(x2,y2) und dem eingeschlossenen Winkel a an. Ich möchte aus den Angaben den Mittelpunkt und den Radius berechnen. Kann mir vielleicht netterweise jemand dabei helfen. Gruß Albundy1 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Krümmel Moderator Konstrukteur mit rotierter Vergangenheit
       

 Beiträge: 6243 Registriert: 14.09.2008 Was mit SWX so alles geht ;-)
|
erstellt am: 14. Sep. 2010 22:27 <-- editieren / zitieren --> Unities abgeben:          Nur für albundy1
|
ThoMay Ehrenmitglied V.I.P. h.c. Konstrukteur

 Beiträge: 5260 Registriert: 15.04.2007 SWX 2019 Windows 10 x64
|
erstellt am: 15. Sep. 2010 05:47 <-- editieren / zitieren --> Unities abgeben:          Nur für albundy1
Hallo und ein Wilkommen auch von mir Albundy. Nein, wie du unschwer aus den Skizzen von Andy erkennen kannst. Aus der Angabe der 2 Punkte kannst du keinen Radius oder die Lage des Mittelpunktes errechnen. Der Radius kann Zwischen den Winkel => Unendliche große Krümmung gehen(dann haste eine Gerade). Die kannste dann berechnenn. Du siehst es fehlt mindesten eine 3te Angabe entweder Mittelpunkt, Krümmung, Radius,.. @Andy. Bei deinen Skizzen hast du in freier Wahl einfach den Mittelpunkt gesetzt. Aber es hat dir keiner gesagt wo der genau ist oder? Gruß ThoMay
------------------ Hast du Fragen? Brauchst du Schaut mal nach im Bereich Alle Foren => Wissenstransfer. oder Konstrukteure Online hier bei CAD.de Richtig fragen - Nettiquette - alte Suchfuntion - Systeminfo - Unities - CAD Freeware - Forenübersicht - 3D Konverter - 3D Modelle Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
albundy1 Mitglied
 Beiträge: 7 Registriert: 14.09.2010 Solidworks 20009/2010
|
erstellt am: 15. Sep. 2010 08:53 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, vielen Dank für die Antworten. Ich habe zum Verständnis meines Problems eine Skizze beigefügt. s=Sehnenlänge zwischen den Punkten P1 und P2 P1 = Ortsvektor zum Punkt P1(x1,y1) P2 = Ortsvektor zum Punkt P2(x2,y2) M = Ortsvektor zum Mittelpunkt M(x0,y0) r = Radius des Kreisbogens a = eingeschlossener Winkel Wie gesagt, das IDF-Format beschreibt einen Kreisbogen durch 2 Punkte P1(x1,y1) und P2(x2,y2) und dem eingeschlossenen Winkel (Mittelpunktswinkel) a. Hieraus lässt sich auf den Radius und Mittelpunkt des Kreisbogens schliessen. Die Daten werden aus der IDF-Datei ausgelesen. Aus diesen Daten (2 Punkte mit Winkel) erstelle ich mit Hilfe der Solidworks API-Funktionen einen Kreisbogen. Das Problem ist nur, dass es keine API-Funktion zum Zeichnen eines Kreisbogens aus 2 Punkten mit Winkel gibt. Ich kann nur einen Kreisbogen aus 2 Punkten und Mittelpunkt/Radius zeichnen. Daher benötige ich Radius und Mittelpunkt des Kreisbogens. Zur Bestimmung des Radius habe ich folgenden Ansatz: 1) Die Sehnenlänge s ergibt sich aus der Vektorsubtraktion s=P2-P1 bzw.(sx sy)=(x2 y2)-(x1 y1). Daraus folgt sx = x2-y2 sy = y2-y1 Sehnenlänge |s| = sqr(sx^2 + sy^2) 2) Wird durch den Sehnenmittelpunkt und dem Mittelpunkt M eine gerade gelegt, ergeben sich zwei gleichgrosse Dreiecke mit der Hypotenusenlänge r und der Gegenkathetenlänge s/2. Daraus müsste sich der Radius r = |r| = (s/2) / cos(a) berechnen lassen. r = (rx ry) = (s/2 ?) |r|^2 = rx^2 + ry^2 ry^2 = |r|^2 - rx^2 ry = sqr( ((s/2)/(cos a))^2 - (s/2)^2 ) = sqr( (s/2)^2/(cos a)^2 - (s/2)^2 ) = (s/2)*sqr( (1/(cos a)^2) - 1 ) r = (rx ry) = (s/2 (s/2)sqr(1/(cos a)^2)-1) 3) Der Mittelpunkt M ergibt sich schliesslich aus der Vektorsubtraktion M=P2-r. (x0 y0) = (x2 y2) - ( s/2 (s/2)sqr(1/(cos a)^2)-1) ) x0 = x2 - (s/2) y0 = y2 - (s/2)sqr(1/(cos a)^2)-1) Man könnte jetzt noch die Terme für s = |s| einsetzten, aber dann ist mein Gehirn total verknotet.
Was haltet Ihr von diesem Ansatz? Gruß Albundy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Winston Wolf Mitglied Braucht der Mensch einen Beruf?
  
 Beiträge: 561 Registriert: 12.08.2003 überlegen macht überlegen
|
erstellt am: 15. Sep. 2010 09:30 <-- editieren / zitieren --> Unities abgeben:          Nur für albundy1
|
HenryV Mitglied Konstrukteur, Engineering
  
 Beiträge: 817 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 15. Sep. 2010 09:39 <-- editieren / zitieren --> Unities abgeben:          Nur für albundy1
|
albundy1 Mitglied
 Beiträge: 7 Registriert: 14.09.2010 Solidworks 20009/2010
|
erstellt am: 15. Sep. 2010 11:23 <-- editieren / zitieren --> Unities abgeben:         
@Winston Wolf Der Hintergrund ist eine ECAD-MCAD-Umsetzung. Ich bekomme IDF 3.0 Daten aus Eagle und möchte aus diesen Daten in Solidworks ein Platinenassembly erstellen. Für diese Aufgabe schreibe ich mir ein Plugin. Ich weiss, dass es zwei Plugins hierfür gibt: 1) den Solidworks IDF-Modeler von Desktop-EDA Dieser ist für seine Leistung recht teuer und bereitet unter Windows 7 64 Bit Probleme bei der Darstellung des Featurebaums. Manche Funktionen lassen sich nicht reproduzierbar Benutzten. Der Support ist auch mager. 2) das in Solidworks enthaltene Circuitwork. Circuitworks ist deutlich langsamer als das Tool von Desktop-EDA. Ausserdem nutzt Circuitworks in seiner Datenbank eine SQL-Notation der Texte. Ein "-"-Zeichen ist für Circuitworks ein Trennzeichen. Da aber in den Packagebezeichnungen und Designatoren der Bauteile "-"-Zeichen verwendet werden, werden Packagebezeichnungen und Designatoren nicht korrekt in die Datenbank eingelesen. Als Folge findet Circuitworks manche Teile beim Placen nicht. Aus den IDF 3.0 Daten wird zunächst das Board mit der Kontur und den möglichen Ausbrüchen (als Solidworks-Part) erzeugt. Für jedes Teil auf der Platine wird ein Zylinder mit dem Packagenamen als Platzhalter erzeugt. Jeder Platzhalter (Zylinder) wird anschliessend durch ein reales Package (mit Body, Beinchen usw.) ersetzt. Dieses Package liegt als Solidworks-Part unter dem Packagenamen im Bibliotheksordner. Das Board und die darauf befindlichen Teile bilden das Board-Assembly. Ich weiss, dass ich IDF Daten in solidworks einlesen kann. Nur bin dann von den Fähigkeiten des Solidworks abhängig. Ausserdem kann Solidworks die Ersetzungen der Platzhalter durch "richtige" Komponenten nicht automatisch vornehmen. Ich möchte daher ein Plugin entwickeln mit dem ich doch eine grössere Flexibilität habe und auf die Gegebenheiten unserer ECAD-Abteilung besser eingehen kann. Mein einziges Problem liegt derzeit in dem Kreisbogen. Ich hoffe, ich konnte meinen Gedanken verdeutlichen. Aber für Vervesserungsvorschläge bin ich offen. @HenryV Vielen Dank für Deine Mühe. Das habe ich auch schon gefunden, aber mit dem Vermerk des Autoren um Prüfung der Richtigkeit. So wirklich bestätigt wurden diese Gleichungen nicht. Ich hätte gerne mal die Herleitung der Gleichungen, damit es nachvollziehbar wird. Wenn man sich den Kreisbogen in Solidworks zeichnet passt alles. Aber eine nachvollziehbare Herleitung wäre nicht schlecht - aus Gründen der Sicherheit . Ich verwende diese Gleichungen aber trotzem erstmal, damit ich weiterkomme. In meinem obigen Ansatz sind noch Fehler. Ich habe diesen nochmal überarbeitet. Radius und Sehnenlänge stimmen exakt mit einer Zeichung in SW überein. Lediglich bei der bestimmung des Mittelpunktes sind noch Unstimmigkeiten. Vielleicht hat jemand ne Idee. Der Winkel a ist auf den Bilder alpha. Gruß Karsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur

 Beiträge: 3743 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 15. Sep. 2010 13:36 <-- editieren / zitieren --> Unities abgeben:          Nur für albundy1
|
Jan Boettcher Mitglied
 
 Beiträge: 184 Registriert: 22.06.2005
|
erstellt am: 15. Sep. 2010 15:30 <-- editieren / zitieren --> Unities abgeben:          Nur für albundy1
Hallo Albundy, Die gefundene Gleichung passt schon, auch wenn ich nicht verstehe, wie der Poster im Matheboard ausgerechnet diese Form herleitet. So gut es geht ohne viel Zeit u. Formeleditor:
- 1/2 * (a + b) aus der Formel gibt einen Punkt auf der Mitte der Verbindungslinie zwischen a u. b (den Pkt. nenn ich jetzt c)
- Zum Kreismittelpkt. m komme ich, wenn ich von c aus senkrecht zu der Verbindungslinie a->b gehe. Vektor v der Verbindungslinie ist [bx - ax;by - ay]. Ein senkrechter Vektor vs dazu ist [-by + ay, bx - ax].
- Jetzt muss ich noch wissen, wie weit ich von c aus gehen muss. Für den halben Öffnungswinkel mue/2 gilt: cot mue/2 = Ankathete/Gegenkathete = Strecke a->c / gesuchte Weglänge. Die Strecke c->m ist also lang: |cm| = cot mue/2 * |ac| oder auch: |cm| = cot mue/2 * 1/2 * |ab|
- Der eine mögliche Mittelpunkt ist also: m = 1/2 (a+b) + |cm| * vs/|vs|
- Eingestetzt: m = 1/2 (a+b) + cot mue/2 * 1/2 * |ab| * vs/|vs|
- Da |vs|=|v|=|ab|: m = 1/2 (a+b+cot mue/2 * vs)
- Die andere Lösung: m = 1/2 (a+b-cot mue/2 * vs)
- Löst man das auf, kommt das gleiche raus, wie beim Matheboard
Ich hoffe, das hilft. Jan PS: Ich liebe analytische Geometrie in vektorieller Darstellung ------------------ Jan Böttcher www.ib-boettcher.de [Diese Nachricht wurde von Jan Boettcher am 15. Sep. 2010 editiert.] [Diese Nachricht wurde von Jan Boettcher am 15. Sep. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
aeschbi Mitglied konstrukteur
 
 Beiträge: 211 Registriert: 26.06.2001 jetzt mit windoof win10 MicroStation Autocad
|
erstellt am: 15. Sep. 2010 15:36 <-- editieren / zitieren --> Unities abgeben:          Nur für albundy1
ciao karsten wenn ich dich richtig verstehe möchtest du die boardinfo aus eagle nehmen und daraus ein SWX -part machen. also, ich mache dies so: ich krall mir den ganzen eagle-ordner und kopiere diesen zu mir öffne das projekt und exportiere das *.brd als dxf, es existerit eine ulp dafür öffne das dxf im SWX -dwg-editor, schmeisse alle layer raus welche ich nicht brauche. importiere das dxf als neues part im SWX und schon habe ich eigentlich alles was ich brauche. die elektro-komponenten findest du im bösen indernet zu hauf die leiterbahnen brauch ich nicht, für das ist ja das *.brd von eagle da HTH ------------------ gruss aus murten thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Krümmel Moderator Konstrukteur mit rotierter Vergangenheit
       

 Beiträge: 6243 Registriert: 14.09.2008 Was mit SWX so alles geht ;-)
|
erstellt am: 15. Sep. 2010 18:14 <-- editieren / zitieren --> Unities abgeben:          Nur für albundy1
Hallo ThoMay, der Radius lässt sich sehr wohl so ermitteln! Der Kreismittelpunkt hat allerdings zwei Mögliche Koordinaten, (edit) wenn der Winkel nicht +- 180 sondern mit 0-360 bemasst wird ist auch der Kreismittelpunkt genau bestimmt! Also immer den nehmen der passt MfG Andreas
------------------ Stillstand ist Rückschritt [Diese Nachricht wurde von Krümmel am 15. Sep. 2010 editiert.] [Diese Nachricht wurde von Krümmel am 15. Sep. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThoMay Ehrenmitglied V.I.P. h.c. Konstrukteur

 Beiträge: 5260 Registriert: 15.04.2007 SWX 2019 Windows 10 x64
|
erstellt am: 15. Sep. 2010 19:23 <-- editieren / zitieren --> Unities abgeben:          Nur für albundy1
|
Krümmel Moderator Konstrukteur mit rotierter Vergangenheit
       

 Beiträge: 6243 Registriert: 14.09.2008 Was mit SWX so alles geht ;-)
|
erstellt am: 15. Sep. 2010 19:57 <-- editieren / zitieren --> Unities abgeben:          Nur für albundy1
Hallo ThoMay, das ist doch hier das SWX Forum deshalb löse ich mit SWX und nicht mit Excel ! Und das WIE war meinem Mathelehrer egal  Hauptsache das Ergebnis stimmte und der Lösungsweg war nachvollziehbar. MfG Andreas
------------------ Stillstand ist Rückschritt [Diese Nachricht wurde von Krümmel am 05. Okt. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Winston Wolf Mitglied Braucht der Mensch einen Beruf?
  
 Beiträge: 561 Registriert: 12.08.2003 überlegen macht überlegen
|
erstellt am: 16. Sep. 2010 04:06 <-- editieren / zitieren --> Unities abgeben:          Nur für albundy1
Zitat: Original erstellt von albundy1: ...langsamer...SQL-Notation...findet[...]Teile beim Placen nicht...Nur bin dann von den Fähigkeiten des Solidworks abhängig. Ausserdem kann Solidworks die Ersetzungen der Platzhalter durch "richtige" Komponenten nicht automatisch vornehmen. Ich möchte daher ein Plugin entwickeln...
Hallo Karsten, vielen Dank für die ausführliche Erklärung. WW ------------------ Modelle Werkstoffe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
albundy1 Mitglied
 Beiträge: 7 Registriert: 14.09.2010 Solidworks 20009/2010
|
erstellt am: 18. Sep. 2010 13:35 <-- editieren / zitieren --> Unities abgeben:         
|