Autor
|
Thema: Mittelpunkte finden (2481 mal gelesen)
|
SuperElmi Mitglied
Beiträge: 12 Registriert: 25.07.2007
|
erstellt am: 26. Jul. 2007 10:35 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Ich würde gerne die Mittelpunkte aller kreisförmigen Objekte (vorzugsweise Bohrungen) erfassen und exportieren. Dazu muss ich sie aber zuerst finden/selektieren. Bohrungsmittelpunkte zu finden ist kein Problem, mit Value.GetOrigin bekomm ich den Mittelpunkt. Aber es hört schon auf, sobald die Bohrungen vermustert sind. Außerdem hätte ich auch noch gerne kreisförmige Taschen erfasst. Hat jemand von Euch ne gute Idee? Gruß SuperElmi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
inkommpartybell Mitglied
Beiträge: 369 Registriert: 21.04.2005
|
erstellt am: 27. Jul. 2007 13:43 <-- editieren / zitieren --> Unities abgeben: Nur für SuperElmi
Hallo SuperElmi, einen Körper erstellen, in den Skizziermodus gehen, Punkte setzen. Ähnlich wie beim "Benutzerdefinierten Muster". Diesen Körper, müsstest du dann, nach belieben kopieren können. Mehr fällt "mir" nicht ein. Gruss inkommpartybell
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlausJ Mitglied
Beiträge: 1336 Registriert: 17.03.2003 CATIA V4.2.4 Ref 2 CATIA V5R16SP7 AIX 5.3 Windows 2000 und XP
|
erstellt am: 27. Jul. 2007 15:52 <-- editieren / zitieren --> Unities abgeben: Nur für SuperElmi
|
SuperElmi Mitglied
Beiträge: 12 Registriert: 25.07.2007
|
erstellt am: 27. Jul. 2007 17:06 <-- editieren / zitieren --> Unities abgeben:
Hi inkommpartybell! Dank dir für die Antwort. Allerdings hab ich schon Teile mit vielen Bohrungen (unter anderem vermustert) und kreisrunden Taschen. Alle diese Features sind doch über ihren Mittelpunkt definiert. Wie bemomme ich diese Mittelpunkte automatisiert? Wie oben gesagt, die Mittelpunkte einer Bohrung sind ja einfach auszulesen. Das muss doch möglich sein. Gruß SuperElmi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
YellowDevil Mitglied PI, Makroentwicklung, NC Automatisierung
Beiträge: 67 Registriert: 21.12.2006
|
erstellt am: 27. Jul. 2007 21:57 <-- editieren / zitieren --> Unities abgeben: Nur für SuperElmi
Wie wäre es denn in dem du einfach versuchst einen Point Center Sphere/circle setzen zu lassen auf alle Edges im Bauteil, die du vorher suchen lässt. Das ganze legst Du in eine Error Abfrage und wenn diese keinen Fehler ergibt handelt es sich um einen Kreis, Kugel oder halb-virtel Kreis. Dann brauchst du nur noch die Koordinaten ermittel und gegebenenfalls über die Matrix aufs aktuelle Achsensystem umrechnen lassen. Danach kannst du die Koordinaten direkt in eine TXT oder Excel datei schreiben lassen. Das wäre jetzt so mein Ansatz. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SuperElmi Mitglied
Beiträge: 12 Registriert: 25.07.2007
|
erstellt am: 20. Aug. 2007 10:16 <-- editieren / zitieren --> Unities abgeben:
Das hört sich brauchbar an! Sorry für die späte Antwort, war im Urlaub Könntest Du mir ein paar Codeschnipsel niederschreiben, sozusagen als Anregung und Ausganspunkt, auf dem ich aufbauen kann? Das wäre Klasse, bin noch nicht der Experte mit sowas. Gruß SuperElmi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
YellowDevil Mitglied PI, Makroentwicklung, NC Automatisierung
Beiträge: 67 Registriert: 21.12.2006
|
erstellt am: 20. Aug. 2007 13:31 <-- editieren / zitieren --> Unities abgeben: Nur für SuperElmi
Ich gehe mal man ganz strak davon aus,dass du die Bohrkoordinaten von Bohrungen ausgeben möchtest um sie an einer Maschine weiterverarbeiten zu können. Wenn das so ist müsste ich noch wissen, ob es Bohrungen sind die wirklich als Hole konstruiert sind oder welche die mit Hilfe von Patterns erzeugt wurden? Oder habt ihr vielleicht sogar in den Bohrungen eine Art Info Drill enthalten? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SuperElmi Mitglied
Beiträge: 12 Registriert: 25.07.2007
|
erstellt am: 20. Aug. 2007 14:23 <-- editieren / zitieren --> Unities abgeben:
Es sind sowohl Bohrungen, die über ein Punktmuster vermustert sind als auch kreisrunde Taschen. Es arbeiten hier oft verschiedene Kollegen an einem Teil -> konfuse Modelle. Deshalb finde ich deinen Vorschlag mit den Kanten klasse. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
YellowDevil Mitglied PI, Makroentwicklung, NC Automatisierung
Beiträge: 67 Registriert: 21.12.2006
|
erstellt am: 20. Aug. 2007 19:43 <-- editieren / zitieren --> Unities abgeben: Nur für SuperElmi
Die Problematik mit den tollen konstruktionen kenne ich zur genüge.Das ist dann wahrscheinlich auch mit der sinnigste Weg. Ich muss mal schauen, wie ich das ganze umsetzen würde. Zeitlich würde ich da ein problem sehen, da diese Suche und Auswertung sehr lange dauern könnte. Dachte mir das so, dass ich in alle Kreise, Halbkreise, usw. einen Mittelpunkt erzeugen lasse. Diesen ege ich in ein Geometrisches Set ab und nummeriere sie durch. Am Bauteil wird an den Punkten ein Nummern Verweis stehen,damit sie auch zuordnen kann. Dann müssen alle gleichen Koordinaten eleminiert werden, sprich eine Bohrung kann ja oben und unten einen Punkt haben. Wenn die Bohrungen nicht alle senkrecht zur Z Achse verlaufen,muss auch noch eine Lagekontrolle durchgeführt werden. Dann sollte vielleicht noch die Möglichkeit bestehen ein anderes Achsensystem zu wählen und noch die Ausgabe Möglichkeit nach Excel oder Textdatei. Ich schau mal was ich da so hinbekomme. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
YellowDevil Mitglied PI, Makroentwicklung, NC Automatisierung
Beiträge: 67 Registriert: 21.12.2006
|
erstellt am: 22. Aug. 2007 03:20 <-- editieren / zitieren --> Unities abgeben: Nur für SuperElmi
Moin, ich habe mal die Methode mit den Edges ausprobiert und leider festgestellt, dass es nicht die Lösung ist. Zum einen werden die Bohrungen alle sauber gefunden und auch Punkte erzeugt und die Koordinaten ausgegeben, doch leider werden auch alle anderen Edges die nur im geringsten einen Radius haben mit gefunden. Somit muss eine Lösung her diese auszuschliessen. Ich hatte die Idee auf dem Edge eine PointOnCurve setzen zu lassen und zwar in per Prozent. Einmal mit 0 und 1, wenn bei beiden Punkten die Koordinaten gleich wären dann würde es sich um einen Kreis handeln. Jedoch läuft sich CATIA zeitlich tot, weil schon sehr kleine Teile bis zu 4000-5000 Edges haben können und zum anderen stürzt CATIA teilweise ab. Somit ist das noch nicht die Lösung. Ich muss noch einen Weg finden, dass er nur Bohrungen nimmt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bobby_Joe2001 Mitglied Konstrukteur
Beiträge: 81 Registriert: 15.01.2006
|
erstellt am: 22. Aug. 2007 11:11 <-- editieren / zitieren --> Unities abgeben: Nur für SuperElmi
Hallo, ihr könnt ja mal versuchen den Strukturbaum zu durchlaufen und nur Muster, Bohrungen und Taschen zu selektieren. Dann führst du deine Suche nach Edges nur innerhalb der Auswahl durch. Ich kanns hier grad nicht testen, aber vielleicht bringts was. Viele Grüße ------------------ Du musst die Leute einmal richtig ärgern, dann wirst du endlich ernst genommen. Konrad Adenauer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
YellowDevil Mitglied PI, Makroentwicklung, NC Automatisierung
Beiträge: 67 Registriert: 21.12.2006
|
erstellt am: 22. Aug. 2007 13:28 <-- editieren / zitieren --> Unities abgeben: Nur für SuperElmi
|
SuperElmi Mitglied
Beiträge: 12 Registriert: 25.07.2007
|
erstellt am: 22. Aug. 2007 17:23 <-- editieren / zitieren --> Unities abgeben:
Du machst Dir ja richtig Arbeit damit, ich bin begeistert! Vielleicht noch eine Möglichkeit, Vollkreise zu finden: man könnte doch den Winkel der Kreisform überprüfen. Also zuerst Ergebnisse messen, dann Winkel aus Messergebnissen auf 360° überprüfen. Vielleicht so als Tipp... Danke für Eure Bemühungen. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
YellowDevil Mitglied PI, Makroentwicklung, NC Automatisierung
Beiträge: 67 Registriert: 21.12.2006
|
erstellt am: 23. Aug. 2007 01:46 <-- editieren / zitieren --> Unities abgeben: Nur für SuperElmi
So ich habe nochmals ein wenig getestet. Zu der Methode: Erst nach CircPattern,RectPattren und Holes suchen zu lassen und darin dann nach Edges zu suchen, kann ich sagen das es nicht klappt. Er erkennt dann keine Edges an SimpleHoles, somit klappt es nicht. Habe jetzt folgenden weg eingeschlagen: Ich suche nach allen Edges. An den Edges führe ich ein Measure.Angle durch. So bekomme ich schonmal eine Vorauswahl, leider sind da auch normale Edges drin. Auf diese Auswahl versuche ich nun ein CenterPoint zu setzen. Klappt das handelt es sich um einen Kreis. Nun ermittle ich die Koordinaten und vergleiche sie mit den schon erzeugten. Nur wenn die X und Y Koordinate noch nicht existiert, wird sie in die Excel Datei geschrieben. Sonst hätte man einige doppelte Werte, die sich nur in Z unterscheiden würden. Einziges Problem ist,wenn eine Bohrung auf einer Formfläche rauskommt,dann wird der Mittelpunkt auch geschrieben. Das kommt daher, dass der Kreis nicht eben verläuft und somit der X und y Wert ganz leicht abweicht von eigentlichen Loch. Vor dem schreiben der Daten in die Excel Datei wird der Programmpfad und der dateiname abgefragt. Der Programmcode müsste nochmal sauber überarbeitet werden, da ich viel probiert habe und einige Variablenleichen drin sein dürften, aber du wolltest ja sowieso ein wenig probieren und dafür reicht es wohl aus. So hoffe, dass es dich ein wenig weiter bringt.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Macro_Man Mitglied
Beiträge: 21 Registriert: 13.07.2006 Catia V5 R16 SP5
|
erstellt am: 24. Aug. 2007 10:04 <-- editieren / zitieren --> Unities abgeben: Nur für SuperElmi
Hallo zusammen, hier noch ein Vorschlag um Kreiskanten zu erkennen. Zuerst alle Edges in ein Array schreiben, anschließend deren Radius und die Länge auslesen und prüfen ob die Länge der Kante gleich dem Umfang des Kreises ist. Ist diese Bedingung erfüllt handelt es sich um einen Kreis. Abschließend die entsprechenden Referenzen in ein neues Array schreiben. So erhälst du alle Referenzen von den Kanten die einen vollständigen Kreis beschreiben. CODE: For i = 1 To KantenAnzahl
Set EdgesArray(i) = selection.Item(i).Reference Next Dim Bohrungsanzahl As Integer Bohrungsanzahl = 0 Dim KreisKantenArray As Variant ReDim KreisKantenArray(KantenAnzahl) For i = 1 To KantenAnzahl Set reference1 = EdgesArray(i) Set TheMeasurable = TheSPAWorkbench.GetMeasurable(reference1) On Error Resume Next Radius= TheMeasurable.Radius Laenge = TheMeasurable.Length Umfang = 3.1415926535897932 * 2* Radius If Umfang < Laenge + 0.01 and Umfang > Laenge - 0.01 Then Bohrungsanzahl = Bohrungsanzahl + 1 Set KreisKantenArray(Bohrungsanzahl) = EdgesArray(i) End If Next Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SuperElmi Mitglied
Beiträge: 12 Registriert: 25.07.2007
|
erstellt am: 27. Aug. 2007 13:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute! Ich finde euer Engagement in dieser Sache bärenstark! Die nichtasoziative Bohrungstabelle zwingt einem ja aber auch zum Improvisieren. Bei mir läuft das Macro Edges.CATVBS leider nicht, die Methode oMySel.Count2 in Zeile 46 kennt V5R14SP7(Windows) wohl noch nicht??? Habs mit de und engl probiert. Wo könnte denn der Fehler liegen? Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 27. Aug. 2007 21:35 <-- editieren / zitieren --> Unities abgeben: Nur für SuperElmi
Hallo SuperElmi, wenn Du mit R14 arbeitest, dann musst Du aus allen "oMySel.Item2" ein "oMySel.Item" und aus alle "oMySel.Count2" ein "oMySel.Count" machen, dann sollte das Makro laufen! Die Änderung mit dem "2" ist erst ab R16 drin! mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
YellowDevil Mitglied PI, Makroentwicklung, NC Automatisierung
Beiträge: 67 Registriert: 21.12.2006
|
erstellt am: 28. Aug. 2007 03:10 <-- editieren / zitieren --> Unities abgeben: Nur für SuperElmi
|
YellowDevil Mitglied PI, Makroentwicklung, NC Automatisierung
Beiträge: 67 Registriert: 21.12.2006
|
erstellt am: 28. Aug. 2007 03:12 <-- editieren / zitieren --> Unities abgeben: Nur für SuperElmi
|
4ppU Mitglied
Beiträge: 44 Registriert: 19.04.2016 Unterschiedliche Arbeitsplätze/ Hardware. Catia V5 Microsoft Visual Basic for Applications
|
erstellt am: 18. Mai. 2016 09:21 <-- editieren / zitieren --> Unities abgeben: Nur für SuperElmi
Moin, ich wollte das Thema nochmal aufgreifen. Gibt es mittlerweile eine aktuellere Version dieses Makros ? Und habe ich das richtig verstanden, dass dieses Makro nicht nur Bohrungen findet, sondern auch "Löcher"? Also nicht durch den "Hole" Befehl erstellte Löcher? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 18. Mai. 2016 12:52 <-- editieren / zitieren --> Unities abgeben: Nur für SuperElmi
Servus Was ist bei dir der Unterschied zwischen "Löcher" und "Bohrung"? (zb Kreistaschen) Nach einen kurzen überfliegen des Codes behaupte ich: das Makro sucht alle Kanten, falls es sich bei der Kante um einen Vollkreis handelt wird der Mittelpunkt bestimmt/ausgegeben. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |