Autor
|
Thema: AddNewHybridTrim - wie einen sichern Trim erzeugen - Kurvenrichtung (2260 mal gelesen)
|
Mcbennjo Mitglied
Beiträge: 3 Registriert: 01.07.2010
|
erstellt am: 14. Jul. 2010 22:08 <-- editieren / zitieren --> Unities abgeben:
Moin, Also ein Trim von vier Kurven ist manuell ja kein Problem, auch bei eine Selektion im Baum. Wenn ich dieses aber über ein Makro machen will, muss ich ja über 1 oder -1 die Richtung angeben, damit der richtige Teil bestehen bleibt. Was mache ich aber wenn ich die Richtungen der Kurven nicht kenn, bzw. diese immer unterschiedlich sein können??? Anregungen? Meine Idee bisher war es die Richtungen der Kurven vorher zu bestimmen, über einen Punkt auf der Kurve (Startpubkt der Kurve) und dann über den Abstand zu einem Referenzpunkt so bestimmen wierum die Kurve läuft und dem entsprechend dann über ein "Invert" ide Richtung der Kurve richtig einstellen. Ist aber echt aufwendig. Habt ihr vielleciht eine bessere Idee? Danke und Gruß Julian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 16. Jul. 2010 10:29 <-- editieren / zitieren --> Unities abgeben: Nur für Mcbennjo
Hallo Julian, ich stehe auch imemr wieder vor dem Problem. Generell kann man sagen die Richtung einer Kurve ist immer ihrer Entstehung geschuldet, also vom ersten Punkt bis zum letzten ist die Richtung. Bei Kanten legt dies allerdings CATIA anhand eines wirren Algorithmus fest und man kann ja auch nicht vom User erwarten, dass er vorher schon weiß, wie er später trimen möchte. CATIA selbst bedient sich hier eines Tricks, den man auch automatisieren könnte, aber sehr aufwendig. CATIA ließt den Viewer aus und erhält daher den Vektor mit dem der User auf die Kurve schaut und kann anhand des Picking Points entscheiden ob Invert oder Normal. Alles sehr aufwendig, daher würde ich Dich bitten mehr Informationen zu posten, vielleicht fällt uns noch etwas einfaches ein. Beispiel: Möchtest du an einem Punkt, einem Körper oder eine Ebene Trimen, wie wird die ausgewählt, vom Makro erzeugt? - Falls das Blödsinn ist, nicht bös sein, ich kann kein CATIA, nur entwickeln, aber du verstehst worauf ich hinaus möchte. Überlegen könntest Du Dir vielleicht auch ein generelles Trimschema, indem Du verschiedene Möglichkeiten durchspielst und die Geometrie immer im baum selektierst. In manchen Makros bei mir kam dabei z.B. heraus, dass bei bestimmten Operationen immer invertiert werden muss, da mit steigender Anzahl Geometrien auch die Möglichkeiten wachsen. Beispiel hier: Ein Split einer Kurve an zwei Punkten gibt mir 8 Kombinationsmöglichkeiten der Inverts (im CAA sogar noch mehr, da die Inverts dort immer schon 4 Richtungen haben PositivePositive, PositiveNegative, ...) ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing [Diese Nachricht wurde von HoBLila am 16. Jul. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mcbennjo Mitglied
Beiträge: 3 Registriert: 01.07.2010
|
erstellt am: 16. Jul. 2010 20:52 <-- editieren / zitieren --> Unities abgeben:
Hallo Henry, also folgendes soll passieren: Das Makro bekommt 5 Flächen als Inputdaten. Die Flächen kommen von der Straak Abteilung. Man könnte davon ausgehen, dass diese Flächen bei jedem Bauteil immer die gleiche Orientierung haben, aber da kann man sich nicht drauf verlassen (nicht jeder Catia Anwender kennt die Orientierung von Flächen etc.) So, 4 von diesen Flächen werden mit der fünften verschnitten. So entsteht eine geschlossenen Kontur, die jedoch noch getrimmt werden muss. Die Orientierung der vier Kurven hängt folglich von den Orientierungen der Flächen ab (ich gehe mal davon aus, aber ich könnte es nochmal testen). D.h. beim Trimm muss quasi von jeder Kurve der Mittelteil überbleiben, was ansich ja kein Problem ist, kann ja alles beim Trimm über die Orientierungen eingestellt werden. Aber was wenn die Orientierung der Kurven nun anders herum verläuft? Bei einer PowerCOpy ja kein Problem, stelle ich beim Einfügen ein. Aber ich kann ja auch nicht pauschal ein Invert anwenden, dazu muss ich ja auch erstmal wissen wie die Orientierung ist........ Denke die Lösung über den Startpunkt und der Auswertung über einen Abstand funktioniert, ist aber aufwendig. So, hilft dir das weiter? Fällt dir dazu noch was ein? Aber so wie du es beschrieben hast wie Catia das über den Viewer macht ist es ja auch nicht grade einfach.....vielleicht gibt es hier keine einfache Lösung, nur was für uns "Profis". Gruß Julian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 19. Jul. 2010 13:37 <-- editieren / zitieren --> Unities abgeben: Nur für Mcbennjo
Da zweimal geschnitten wird, fallen mir gleich mehrere Ideen ein, allerdings gehe ich immer vom Split im CAA aus, Du musst bitte gucken ob vergleichbares im CATVBA möglich ist. Zum einen müsste das übrig gebliebene immer Länger sein, als der Schnipsel der ab kommt, oder? Da könnte man beide Ausrichtungen über ein measure testen und die größere nehmen. Zum anderen kann ich beim Split auch für einzelnen Splitelemente eine Ausrichtung mitgeben, da gibt es (zumindest bei mir) die Ausrichtung Split normal, erstes Element von der Ausrichtung invert und alle weiteren SameOrientation. Dann klappt es bei mir bisher immer, kann aber auch Zufall sein. 3. Variante wäre 1. Trimen, dann zweites Trimen, wenn das auf einen Fehler läuft, dann 1. invertieren. Nach dem Invert müsste die Ausrichtung bekannt sein und das zweite Trim entweder auch invertiert werden oder immer mit Same belassen werden. Für die 3 Einfälle kann ich Dir aber nicht sagen ob's wirklich funktioniert, es sind nur 3 Ideen, die für mich wahrscheinlich klingen und mit vergleichsweise wenig Aufwand. Vorteil ist hier, Du musst Dich nur 1x quälen, die Funktion kannst Du dann immer wieder verwenden. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mcbennjo Mitglied
Beiträge: 3 Registriert: 01.07.2010
|
erstellt am: 22. Jul. 2010 20:02 <-- editieren / zitieren --> Unities abgeben:
So, danke für deine Ideen. Ich habe es nun so gemacht: 1. Verschneidung erzeugen 2. Punkt auf der Kurve bei Ratio = 0 -> ist dann der Startpunkt 3. Mit einem Referenzpunkt den Abstand des Startpunktes auswerten und so die Orientierung der Kurve erkennen -> Variable auf 1 oder -1 setzten 4. Einen Invert mit der Variable einfügen 5. Trimmen Und: Es funktioniert! Die Flächen können eine beliebig Orientierung haben, der Trim passt IMMER. Gruß Julian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SignorRossi99 Mitglied Konstrukteur
Beiträge: 3 Registriert: 24.09.2019 Win10 x64CATIA V5 R22
|
erstellt am: 24. Sep. 2019 18:21 <-- editieren / zitieren --> Unities abgeben: Nur für Mcbennjo
Hallo Allerseits, Freue mich hier im Forum mit vielen Usern austauschen zu können, Generell kenne ich mich nicht besonders mit VBA und CATIA aus, Versuche mich aber immer mehr damit zu befassen da es einem viel Erleichterung bringt und sehr viel Spaß macht. Nun habe ich gleich zu Anfang eine Frage zu VBA / Trim Funktion und Ausrichtung Hoffe es passt hier Ich würde gerne die Trim Funktion nutzen und dann über VBA die Ausrichtung Wechseln .. also 1 / -1 Dann aber kein neues Trim verwenden sondern das bestehende "cylinder_trim1" siehe beigefügtes Bild Dazu habe ich den Recorder verwendet und folgenden Code bekommen Hier wird aber nun ein neues Trim erzeugt.. Leider weis ich nicht wie der Befehl heist bzw was ist der nächste Schritt, damit der bestehende Trim eine Richtungsänderung bekommt. Sub CATMain() Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim hybridShapeFactory1 As HybridShapeFactory Set hybridShapeFactory1 = part1.HybridShapeFactory Dim hybridBodies1 As HybridBodies Set hybridBodies1 = part1.HybridBodies Dim hybridBody1 As HybridBody Set hybridBody1 = hybridBodies1.Item("#Design") Dim hybridBodies2 As HybridBodies Set hybridBodies2 = hybridBody1.HybridBodies Dim hybridBody2 As HybridBody Set hybridBody2 = hybridBodies2.Item("Design_Elements") Dim hybridShapes1 As HybridShapes Set hybridShapes1 = hybridBody2.HybridShapes Dim hybridShapeExtrude1 As HybridShapeExtrude Set hybridShapeExtrude1 = hybridShapes1.Item("Extrude.1") Dim hybridBodies3 As HybridBodies Set hybridBodies3 = hybridBody2.HybridBodies Dim hybridBody3 As HybridBody Set hybridBody3 = hybridBodies3.Item("cylinder") Dim hybridShapes2 As HybridShapes Set hybridShapes2 = hybridBody3.HybridShapes Dim hybridShapeCylinder1 As HybridShapeCylinder Set hybridShapeCylinder1 = hybridShapes2.Item("cylinder") Dim reference1 As Reference Set reference1 = part1.CreateReferenceFromObject(hybridShapeExtrude1) Dim reference2 As Reference Set reference2 = part1.CreateReferenceFromObject(hybridShapeCylinder1) '***** mit KWA VB Script --> Insert Object resolutin Trim/ ("cylinder_trim1") ausgelesen
'Dim hybridShapeTrim1 As HybridShape 'Set hybridShapeTrim1 = hybridShapes1.Item("cylinder_trim1") '******muss durch bestehendes ersetzt werden mit Orientierung (Reference) meine vermutung? Dim hybridShapeTrim1 As HybridShapeTrim Set hybridShapeTrim1 = hybridShapeFactory1.AddNewHybridTrim(reference1, -1, reference2, 1) hybridShapeTrim1.Mode = 1 '******--------------------------------------------
hybridShapeFactory1.GSMVisibility reference1, 0 hybridShapeFactory1.GSMVisibility reference2, 0 hybridBody1.AppendHybridShape hybridShapeTrim1 part1.InWorkObject = hybridShapeTrim1 hybridShapeFactory1.GSMVisibility hybridShapeTrim1, 1 part1.Update End Sub Würde mich über Hilfestellung sehr freuen ------------------ If Click ok to terminate then make Coffee 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: 24. Sep. 2019 18:36 <-- editieren / zitieren --> Unities abgeben: Nur für Mcbennjo
Servus Willkommen im Forum. Bitte Code in entsprechenden Tags posten. Du kannst zB per Namen wieder auf die Features zugreifen. (ggf die Objektauflösung im Editor nutzen). Probiers mal so (ungetestet): Code: Sub CATMain() Dim partDocument1 As PartDocument Dim oPart As Part Dim oHybridBodies As HybridBodies Dim oHybridBody As HybridBody Dim oHybridShapeTrim As HybridShapeTrim'auf GeoSet zugreifen Set partDocument1 = CATIA.ActiveDocument Set oPart = partDocument1.Part Set oHybridBodies = oPart.HybridBodies Set oHybridBody = oHybridBodies.Item("#Design").HybridBodies.Item("Design_Elements") 'auf Trimm per Namen zugreifen Set oHybridShapeTrim = oHybridBody.HybridShapes.item("cylinder_trim1") 'Trimm-Mode ändern if oHybridShapeTrim.Mode == 1 then oHybridShapeTrim.Mode = -1 else oHybridShapeTrim.Mode = 1 end if oPart.Update End Sub
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SignorRossi99 Mitglied Konstrukteur
Beiträge: 3 Registriert: 24.09.2019 Win10 x64CATIA V5 R22
|
erstellt am: 07. Okt. 2019 13:36 <-- editieren / zitieren --> Unities abgeben: Nur für Mcbennjo
Hallo, ich wollte es doch noch selbst herausbekommen, Zumindest habe ich einiges gelernt .. Im Code wollte ich für den Trim Befehl die Orientierung wechseln. Hier vielen Dank an Bernd .. habe mir trotz allem die Zähne ausgebissen DebugPrint wirkt manchmal wunder. :-) war für mich neu. Letzendlich war es dann nicht der Mode "ich weis bis jetzt nicht was man damit machen kann " Hier nun der Code..
Nochmal Danke ;-)
Code:
Sub CATMain() Dim partDocument1 As PartDocument Dim oPart As Part Dim oHybridBodies As HybridBodies Dim oHybridBody As HybridBody Dim oHybridShapeTrim As HybridShapeTrim 'auf GeoSet zugreifen Set partDocument1 = CATIA.ActiveDocument Set oPart = partDocument1.Part Set oHybridBodies = oPart.HybridBodies Set oHybridBody = oHybridBodies.Item("#Design").HybridBodies.Item("Design_Elements") Set oHSTrim = oHybridBody.HybridShapes.Item("cylinder_trim1") Dim oFirstOrientation, oSecondOrientation As Long 'oFirstOrientation = 1 'Standard für Orientierung der ersten Fläche 'oSecondOrientation = 1 'Standard für Orientierung der zweiten Fläche oHSTrim.InvertFirstOrientation oPart.Update End Sub
------------------ If Click ok to terminate then make Coffee 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: 07. Okt. 2019 22:47 <-- editieren / zitieren --> Unities abgeben: Nur für Mcbennjo
Servus Hast du dazu mal in die Doku geschaut? Den Mode gibt es auch manuell (im Fenster ganz oben, die Online-Hilde beschriebt dazu was). Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Referent Projektsteuerung Gasnetze (m/w/d) | Gases for tomorrow: Ihre Arbeit bei Tyczka ist viel mehr als nur ein Job. Gemeinsam gestalten wir mit Gasen und innovativen, gase-basierten Technologien die Welt von Morgen. Seien Sie ein Teil unserer Transformation und unterstützen Sie uns dabei, eines der attraktivsten Unternehmen für Flüssiggas (LPG), Industriegase und grünen Wasserstoff in Deutschland und Europa zu werden und mit nachhaltigen Energiegasen die Energieversorgung der Zukunft sicherzustellen.... | Anzeige ansehen | Projektmanagement |
|
SignorRossi99 Mitglied Konstrukteur
Beiträge: 3 Registriert: 24.09.2019 Win10 x64CATIA V5 R22
|
erstellt am: 08. Okt. 2019 09:46 <-- editieren / zitieren --> Unities abgeben: Nur für Mcbennjo
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|