Autor
|
Thema: 3D Corner erstellen (2333 mal gelesen)
|
theshadog Mitglied
Beiträge: 61 Registriert: 18.03.2009
|
erstellt am: 12. Mai. 2009 12:04 <-- editieren / zitieren --> Unities abgeben:
Hi Leute, und zwar bin ich gerade dabei eine Aneinanderreihung von Splines an ihren Stoßpunkten abzurunden. Allerdings bin ich ratlos. Das Makro bricht an der Stelle ab und sagt mir "das Verfahren update konnte nicht durchgeführt werden". Die betroffene Ecke ist als fehlerhaft markiert. Also wähl ich sie aus, das Einstellungsfenster öffnet sich. Ich klicke OK und es klappt - ohne dass ich irgendwas geändert hab. Also nochmal: Makro erstellt die Ecke -> gibt Fehlermeldung aus, weil die Ecke so nicht kreiert werden kann -> ich wähle die Ecke aus und kann ohne Änderung der Parameter auf OK klicken und die Ecke ist da. Kennt jemand das Problem und hat es vllt sogar gelöst? Die Meldung kommt sogar, wenn ich die Eckenerzeugung per Makro aufnehm und dann das Makro abspielen lasse. Die erste Ecke macht er noch, aber ab der 2. meckert er grundlos. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
theshadog Mitglied
Beiträge: 61 Registriert: 18.03.2009
|
erstellt am: 12. Mai. 2009 12:05 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
Beiträge: 4755 Registriert: 27.09.2000 Dell precision M4300, 4GB Arbeitsspeicher NVidia FX360M Windows XP professional SP3 CATIA V5 R16SP9, R17SP8, R18SP8, R19SP4 Adobe Acrobat 8 Linux: Ubuntu 8.04LTS
|
erstellt am: 13. Mai. 2009 20:17 <-- editieren / zitieren --> Unities abgeben: Nur für theshadog
|
theshadog Mitglied
Beiträge: 61 Registriert: 18.03.2009
|
erstellt am: 13. Mai. 2009 21:42 <-- editieren / zitieren --> Unities abgeben:
Hi, danke für den Vorschlag. Hab aber dann noch gemerkt, dass ich wohl einen Fehler in der notwendigen Schleife hab. Werds am Freitag mal ausprobieren, wenns dann immer noch nicht klappt, nehm ich das Angebot gerne an Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
theshadog Mitglied
Beiträge: 61 Registriert: 18.03.2009
|
erstellt am: 15. Mai. 2009 09:21 <-- editieren / zitieren --> Unities abgeben:
Also ich die Schleifen hinbekommen, er wählt jetzt alles richtig aus. Aber das Problem bleibt bestehen. Ab der 3. Ecke erstellt er sie zwar, kann sie aber nicht updaten. Wenn ich dann die Ecken einzeln auswähle und da auf ok klick, sind sie da. Ich vermute, dass das an den Parametern liegt, also DiscriminationIndex, BeginOfCorner, etc. Weiß zwar aus der Literatur, für was die stehen, aber kA, wie ich sie setzen muss. Hier mal mein Code: Code: Set hybridBody1 = hybridBodies1.Item("Helpset") Dim ecken As HybridBody Set ecken = hybridBodies2.Add() ecken.name = "Ecken" Dim c as Integer c = 1 Dim a as Integer a = 2 Dim b as Integer b = 2 Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirectionByCoord(0.00, 0.00, 0.00) do while c < 2 * anzahl - 1 ' Anzahl ist eine vom Anwender festgelegte Anzahl von Vertikalsplines if c = 1 then Set hybridBodies2 = hybridBody1.HybridBodies Set hybridBody2 = hybridBodies2.Item("Vertikalsplines") Set hybridShapes1 = hybridBody2.HybridShapes Dim hybridShapeSpline1Kurve As HybridShape Set hybridShapeSpline1Kurve = hybridShapes1.Item("Vertikalspline." & c) Dim kurveRef1 As Reference Set kurveRef1 = part1.CreateReferenceFromObject(hybridShapeSpline1Kurve) Set hybridBody3 = hybridBodies2.Item("Horizontalsplines") Set hybridShapes2 = hybridBody3.HybridShapes Dim hybridShapeSplineKurve As HybridShape Set hybridShapeSplineKurve = hybridShapes2.Item("Horizontalspline." & c) Dim kurveRef2 As Reference Set kurveRef2 = part1.CreateReferenceFromObject(hybridShapeSplineKurve) Dim hybridShapeCorner1 As HybridShapeCorner Set hybridShapeCorner1 = hybridShapeFactory1.AddNew3DCorner(kurveRef1, kurveRef2, hybridShapeDirection1, 2.000000, 1, -1, True) hybridShapeCorner1.DiscriminationIndex = 1 hybridShapeCorner1.BeginOfCorner = 2 hybridShapeCorner1.FirstTangentOrientation = 1 hybridShapeCorner1.SecondTangentOrientation = -1 hybridShapeFactory1.GSMVisibility kurveRef1, 0 hybridShapeFactory1.GSMVisibility kurveRef2, 0 ecken.AppendHybridShape hybridShapeCorner1 part1.InWorkObject = hybridShapeCorner1 part1.update else if c mod 2 = 0 then Dim reference9 As Reference Set reference9 = part1.CreateReferenceFromObject(hybridShapeCorner1) Dim hybridShapeSpline5 As HybridShape Set hybridShapeSpline5 = hybridShapes1.Item("Vertikalspline." & a) a = a + 1 Dim reference10 As Reference Set reference10 = part1.CreateReferenceFromObject(hybridShapeSpline5) Dim hybridShapeCorner4 As HybridShapeCorner Set hybridShapeCorner4 = hybridShapeFactory1.AddNew3DCorner(reference9, reference10, hybridShapeDirection1, 2.000000, 1, 1, True) hybridShapeCorner4.DiscriminationIndex = 1 hybridShapeCorner4.BeginOfCorner = 2 hybridShapeCorner4.FirstTangentOrientation = 1 hybridShapeCorner4.SecondTangentOrientation = -1 hybridShapeFactory1.GSMVisibility reference9, 0 hybridShapeFactory1.GSMVisibility reference10, 0 ecken.AppendHybridShape hybridShapeCorner4 Set hybridShapeCorner1 = hybridShapeCorner4 else Dim reference11 As Reference Set reference11 = part1.CreateReferenceFromObject(hybridShapeCorner1) Dim hybridShapeSpline6 As HybridShape Set hybridShapeSpline6 = hybridShapes2.Item("Horizontalspline." & b) b = b +1 Dim reference12 As Reference Set reference12 = part1.CreateReferenceFromObject(hybridShapeSpline6) Dim hybridShapeCorner5 As HybridShapeCorner Set hybridShapeCorner5 = hybridShapeFactory1.AddNew3DCorner(reference11, reference12, hybridShapeDirection1, 2.000000, -1, 1, True) hybridShapeCorner5.DiscriminationIndex = 1 hybridShapeCorner5.BeginOfCorner = 2 hybridShapeCorner5.FirstTangentOrientation = 1 hybridShapeCorner5.SecondTangentOrientation = -1 hybridShapeFactory1.GSMVisibility reference9, 0 hybridShapeFactory1.GSMVisibility reference10, 0 ecken.AppendHybridShape hybridShapeCorner5 Set hybridShapeCorner1 = hybridShapeCorner5 end if end if c = c + 1 loop
Danke für jede Hilfe! [Diese Nachricht wurde von theshadog am 15. Mai. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ptit.tom Mitglied CAD-Berater
Beiträge: 114 Registriert: 11.02.2005 win10, CATIA R19 bis R30
|
erstellt am: 18. Mai. 2009 08:55 <-- editieren / zitieren --> Unities abgeben: Nur für theshadog
Hallo, Das Feature "Corner" ist im CATIA leider nicht sehr stabil. Ich füge ein Beispielpart an. Versuch den Punkt C zu verschieben. Wenn du auf die andere "Seite" wechseln, kriegst du eine Fehlermeldung. Du muss dein Corner einmal öffnen und zumachen, um das Feature zu "reparieren". Ich vermute, daß CATIA im Makro dieses Problem nicht lösen kann. Ich hatte das Problem mit PowerCopy. Ich habe einfach mit anderen Features gearbeitet (Circle > Bitangent and Radius. Achtung, die zwei Linien sollen richtig ausgerichtet sein). Gruß, Florent. [Diese Nachricht wurde von ptit.tom am 18. Mai. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
theshadog Mitglied
Beiträge: 61 Registriert: 18.03.2009
|
erstellt am: 18. Mai. 2009 09:53 <-- editieren / zitieren --> Unities abgeben:
|
theshadog Mitglied
Beiträge: 61 Registriert: 18.03.2009
|
erstellt am: 19. Mai. 2009 09:57 <-- editieren / zitieren --> Unities abgeben:
So, habs jetzt mit hybridShapeCircleBitangentRadius gelöst. Allerdings hab ich das gleiche Problem wie davor. Kreis.1, Kreis.57 und Kreis.58 macht er noch normal. Man sieht auch, dass die kein "Start" und "Ende" Eintrag haben, nur einen "Radius". Kreis.59 hab ich dann drauf geklickt und mit ok bestätigt. Jetzt hat der plötzlich einen "Start" und "Ende" Eintrag und geht. Bei Kreis.60 ist es noch nicht editiert. Wie kann ich dieses "Start" und "Ende" überhaupt einstellen? Wenn ich den Kreis per Hand erstelle sind die Felder (rechts, 0° und 180°) immer deaktiviert. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
theshadog Mitglied
Beiträge: 61 Registriert: 18.03.2009
|
erstellt am: 19. Mai. 2009 10:00 <-- editieren / zitieren --> Unities abgeben:
Hier noch der Code: Code: Set hybridBody1 = hybridBodies1.Item("Helpset") Dim kreis As HybridBody Set kreis = hybridBodies2.Add() kreis.name = "Kreise" dim c as integer c = 1 dim a as integer a = 2 dim b as ingeter b = 2 Set hybridBody1 = hybridBodies1.Item("Helpset") Set hybridBodies2 = hybridBody1.HybridBodies Set hybridBody2 = hybridBodies2.Item("Vertikalsplines") Set hybridShapes1 = hybridBody2.HybridShapes Set hybridBody3 = hybridBodies2.Item("Horizontalsplines") Set hybridShapes2 = hybridBody3.HybridShapes Set hybridShapes3 = hybridBody1.HybridShapes Dim kreisSpline1 As HybridShape Dim kreisRef1 As Reference Dim kreisSpline2 As HybridShape Dim kreisRef2 As Reference Dim kreisStuetz As HybridShape Set kreisStuetz = hybridShapes3.Item("Deckflaeche") Dim stuetzRef As Reference Dim kreisElem1 As HybridShapeCircleBitangentRadius Dim kreisElem2 As HybridShapeCircleBitangentRadius do while c < 19 if c = 1 then Set kreisSpline1 = hybridShapes1.Item("Vertikalspline.1") Set kreisRef1 = part1.CreateReferenceFromObject(kreisSpline1) Set kreisSpline2 = hybridShapes2.Item("Horizontalspline.1") Set kreisRef2 = part1.CreateReferenceFromObject(kreisSpline2) Set stuetzRef = part1.CreateReferenceFromObject(kreisStuetz)
Set kreisElem1 = hybridShapeFactory1.AddNewCircleBitangentRadius(kreisRef1, kreisRef2, stuetzRef, 2.000000, -1, 1) kreisElem1.name = "Kreis.1"
kreisElem1.DiscriminationIndex = 1 kreisElem1.BeginOfCircle = 2 kreisElem1.TangentOrientation1 = -1 kreisElem1.TangentOrientation2 = 1 kreisElem1.SetLimitation 2 kreisElem1.TrimMode = 1 kreis.AppendHybridShape kreisElem1 c = c + 1 else if c mod 2 = 0 then Set kreisRef1 = part1.CreateReferenceFromObject(KreisElem1) Set kreisSpline1 = hybridShapes1.Item("Vertikalspline." & a) Set kreisRef2 = part1.CreateReferenceFromObject(kreisSpline1) Set kreisElem2 = hybridShapeFactory1.AddNewCircleBitangentRadius(kreisRef1, kreisRef2, stuetzRef, 2.000000, -1, 1)
kreisElem2.DiscriminationIndex = 1 kreisElem2.BeginOfCircle = 2 kreisElem2.TangentOrientation1 = -1 kreisElem2.TangentOrientation2 = 1 kreisElem2.SetLimitation 2 kreisElem2.TrimMode = 1 kreis.AppendHybridShape kreisElem2 Set kreisElem1 = kreisElem2 c = c + 1 a = a + 1 else Set kreisRef1 = part1.CreateReferenceFromObject(kreisElem1) Set kreisSpline2 = hybridShapes2.Item("Horizontalspline." & b) Set kreisRef2 = part1.CreateReferenceFromObject(kreisSpline2) Set kreisElem2 = hybridShapeFactory1.AddNewCircleBitangentRadius(kreisRef1, kreisRef2, stuetzRef, 2.000000, 1, -1) kreisElem2.DiscriminationIndex = 1 kreisElem2.BeginOfCircle = 1 kreisElem2.TangentOrientation1 = 1 kreisElem2.TangentOrientation2 = -1 kreisElem2.SetLimitation 2 kreisElem2.TrimMode = 1 kreis.AppendHybridShape kreisElem2 Set kreisElem1 = kreisElem2 c = c + 1 b = b + 1 end if end if loop part1.update
[Diese Nachricht wurde von theshadog am 19. Mai. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ptit.tom Mitglied CAD-Berater
Beiträge: 114 Registriert: 11.02.2005 win10, CATIA R19 bis R30
|
erstellt am: 20. Mai. 2009 09:19 <-- editieren / zitieren --> Unities abgeben: Nur für theshadog
Hallo, Werden sich die Kurve im Part ändern, nachdem das Makro gelaufen ist ? Wenn nicht: auf die ausrichtung aufpassen bei der Kreiserzeugung Wenn ja: schon schwieriger. Die Ecke soll mit einem Konstruktor (also, in einer Formel) erzeugt werden und die Ausrichtung der Kurve dynamisch geprüft werden (im Konstruktor sind die 2 letzten Argumente booleans) Gruß, Florent. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
theshadog Mitglied
Beiträge: 61 Registriert: 18.03.2009
|
erstellt am: 20. Mai. 2009 18:09 <-- editieren / zitieren --> Unities abgeben:
Nein, wenn sie 1x erzeugt wurden, bleiben die Kurven so. Das Makro endet dann auch. Es geht ja wahrscheinlich um diese 4 Parameter: Code: hybridShapeCorner5.DiscriminationIndex = 1 hybridShapeCorner5.BeginOfCorner = 2 hybridShapeCorner5.FirstTangentOrientation = 1 hybridShapeCorner5.SecondTangentOrientation = -1
Allerdings habe ich schon einige Variationen ausprobiert. Und selbst ein Makro, das ich aufgezeichnet habe, dann alle Ecken lösche und das aufgezeichnete Makro drüber laufen lasse funktioniert nicht. Offensichtlich kann man das nicht per Makro machen. Ich probier das jetzt noch per Spline zu machen, wird halt etwas aufwändiger. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MarkusK Mitglied
Beiträge: 130 Registriert: 09.08.2002 Dell Precision T5500 Intel Xenon X5560 4x 2,8 GHz 12 GB Ram NVIDIA Quadro FX 3800 Win XP Catia V5R19 SP3
|
erstellt am: 25. Mai. 2009 12:32 <-- editieren / zitieren --> Unities abgeben: Nur für theshadog
Hallo Miteinander, generell scheint mir das ein Problem in CATIA zu sein. Ich habe das selbe Problem mit einem Benuztermuster. Erst wenn ich es von Hand noch mal angeklickt habe, ist es richtig aktualisiert. Wen also jemand zu dem Thema eine Lösung hat.... ------------------ Gruss Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
Beiträge: 4755 Registriert: 27.09.2000 Dell precision M4300, 4GB Arbeitsspeicher NVidia FX360M Windows XP professional SP3 CATIA V5 R16SP9, R17SP8, R18SP8, R19SP4 Adobe Acrobat 8 Linux: Ubuntu 8.04LTS
|
erstellt am: 25. Mai. 2009 19:07 <-- editieren / zitieren --> Unities abgeben: Nur für theshadog
|
theshadog Mitglied
Beiträge: 61 Registriert: 18.03.2009
|
erstellt am: 26. Mai. 2009 09:24 <-- editieren / zitieren --> Unities abgeben:
Problem ist, dass er einen Fehler bringt, wenn man die update Funktion über das Makro benutzt. Du musst am Ende die "fehlerhaften" Sachen per Hand aktuallisieren. Erst dann kannst du das gesamte Bauteil updaten, ohne dass eine Warnung auftritt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K.C.L Mitglied Ingenieur
Beiträge: 3 Registriert: 24.04.2012 CATIA V5 R18 /R19 VBA Programmierung
|
erstellt am: 24. Apr. 2012 11:33 <-- editieren / zitieren --> Unities abgeben: Nur für theshadog
Hab eine Lösung für das Problem gefunden. Man muss öfters mal ein Update laufen lassen. Desweiteren müssen die Linien die man Verbindet recht groß wählen. Beispielsweise wenn der Corner einen Radius von 5mm haben soll, die Linien nicht kleiner als 20mm wählen. Wenn man sie kleiner haben will muss man sie im Nachhinein kleiner machen. VG KCL
Code: Function Corner(Geoset, name, linie1, linie2, radius) As HybridShapeCornerCATIA.ActiveDocument.Part.Update Dim hybridShapeCorner1 As HybridShapeCorner Set Corner = CATIA.ActiveDocument.Part.HybridShapeFactory.AddNewCorner(linie2, linie1, Nothing, radius, 1, 1, True) CATIA.ActiveDocument.Part.Update Geoset.AppendHybridShape Corner CATIA.ActiveDocument.Part.Update 'trimmen CATIA.ActiveDocument.Part.HybridShapeFactory.GSMVisibility linie1, 0 CATIA.ActiveDocument.Part.HybridShapeFactory.GSMVisibility linie2, 0 CATIA.ActiveDocument.Part.Update End Function
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|