| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. | | | | KISTERS 3DViewStation: 3D-Visualisierung für After Sales, Service und Ersatzteile, eine Pressemitteilung
|
Autor
|
Thema: verknüpfte Skizzen und Breps funktionieren nicht (1583 mal gelesen)
|
noir333 Mitglied Ingenieur
Beiträge: 148 Registriert: 27.01.2004 Dell Precision 450 Dual Xeon, 2MB RAM, XP SP2, NX3 V5R17SP3
|
erstellt am: 23. Jan. 2009 16:17 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, vielleicht hat einer schonmal dieses Problem gehabt, obwohl ich zugebe es ist etwas speziell: Ich habe in einem Catpart mehrere (das ist wichtig) Skizzen, die über eine Veröffentlichung und als "Ergebnis mit Verknüpfung" eingefügt wurden. In den Skizzen befinden sich mehrere Punkte, auf die ich mich beziehen möchte, z.B. eine Linie von einem Punkt zum anderen ziehen. Erstelle ich nun ein Makro über den Rekorder, dann sieht das so aus: Code:
Sub CATMain() Set documents1 = CATIA.Documents Set partDocument1 = documents1.Item("Part2.CATPart") Set part1 = partDocument1.Part Set hybridShapeFactory1 = part1.HybridShapeFactory Set hybridBodies1 = part1.HybridBodies Set hybridBody1 = hybridBodies1.Item("Externe Verweise") Set sketches1 = hybridBody1.HybridSketches Set sketch1 = sketches1.Item("Skizze.39") Set reference1 = part1.CreateReferenceFromBRepName("BorderFVertex:(BEdge:(Brp:(Sketch.39;(Brp:(Datum.1;%3)));None:(Limits1:();Limits2:();+1);Cf11:());WithPermanentBody;WithoutBuildError;WithSelecti ngFeatureSupport;MFBRepVersion_CXR15)", sketch1) Set reference2 = part1.CreateReferenceFromBRepName("BorderFVertex:(BEdge:(Brp:(Sketch.39;(Brp:(Datum.1;%1)));None:(Limits1:();Limits2:();+1);Cf11:());WithPermanentBody;WithoutBuildError;WithSelecti ngFeatureSupport;MFBRepVersion_CXR15)", sketch1) Set hybridShapeLinePtPt1 = hybridShapeFactory1.AddNewLinePtPt(reference1, reference2) Set hybridBody2 = hybridBodies1.Item("Geometrisches Set.6") hybridBody2.AppendHybridShape hybridShapeLinePtPt1 part1.InWorkObject = hybridShapeLinePtPt1 part1.Update End Sub
Darin befinden sich die üblichen Befehle, um die Punkte als BREP anzusprechen. Lässt man das Makro laufen, so tritt ein Fehler bei dem update auf, weil er die Scheitelpunkte nicht mehr erkennt. Wenn man nur eine verknüpfte Skizze oder normale Skizzen in der Datei hat läuft alles. Auch wenn man einige der verknüpften Skizzen isoliert (tot macht) ist alles i.O. Aber sobald man mehr als eine verknüpfte Skizze hat ist es vorbei mit der Brep-Erkennung der Punkte, bzw. es geht nur mit der ersten Skizze. Das "geht" mit R16,R17,R18,R19 schön konsequent. Jemand eine Idee? Vielen Dank für Eure Antworten. ------------------ ----------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noir333 Mitglied Ingenieur
Beiträge: 148 Registriert: 27.01.2004 Dell Precision 450 Dual Xeon, 2MB RAM, XP SP2, NX3 V5R17SP3
|
erstellt am: 24. Jan. 2009 19:15 <-- editieren / zitieren --> Unities abgeben:
nach weiteren Recherchen denke ich, dass irgendetwas an der Syntax des BREP-Strings von Catia falsch aufgezeichnet wird. Hat vielleicht jemand die CAA-Anleitung über die Breps zur Hand und kann mal schauen, wie man mit solchen gelinkten Sketches umgehen muss? ------------------ ----------- 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: 26. Jan. 2009 11:06 <-- editieren / zitieren --> Unities abgeben: Nur für noir333
Ja, der Rekorder zeichnet manchmal die BRep's falsch auf, das muss man dann mit Hand korrigieren. Da ich gerade kein VB da habe kann ich's leidern icht testen. Aber überprüf mal ob die Namen auch alle noch Stimmen also Sketch.39 und so. Meist ist aber der hintere Teile des BRep's falsch oder zu lang. Mit den veräffentlichungen ist das immer ein Problem, was mir leider auch schon oft untergekommen ist. Sprichst du die Punkte direkt in der Skizze an, oder im Part-Design? Wahrscheinlich im PartDesign. Und über die Namen kannst du nicht gehen? Ich schau's mir heute Abend nochmal an ------------------ 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 |
noir333 Mitglied Ingenieur
Beiträge: 148 Registriert: 27.01.2004 Dell Precision 450 Dual Xeon, 2MB RAM, XP SP2, NX3 V5R17SP3
|
erstellt am: 26. Jan. 2009 12:57 <-- editieren / zitieren --> Unities abgeben:
Hallo Lila, so falsch ist der String halt auch nicht. hier der Vergleich, String für Punkt in verknüpfter Skizze:
Code:
Set reference1 = part1.CreateReferenceFromBRepName("BorderFVertex:(BEdge:(Brp:(Sketch.39;(Brp:(Datum.1;%1)));None:(Limits1:();Limits2:();+1);Cf11:());WithPermanentBody;WithoutBuildError;WithSelecti ngFeatureSupport;MFBRepVersion_CXR15)", sketch1)
nach dem isolieren: Code:
Set reference1 = part1.CreateReferenceFromBRepName("BorderFVertex:(BEdge:(Brp:(Sketch.39;(Brp:(Sketch.39_Datum.1;%1)));None:(Limits1:();Limits2:();+1);Cf11:());WithPermanentBody;WithoutBuildError;W ithSelectingFeatureSupport;MFBRepVersion_CXR15)", sketch1)
Einziger Unterschied ist "Sketch.39_Datum.1" anstelle von "Datum.1". Leider funktionieren beide Makros nicht bei der verknüpften Skizze. Oder doch: Sobald nur noch eine verknüpfte Skizze in dem CATPart ist läuft alles problemlos. So falsch ist die Syntax also nicht! Durch die verknüpften Skizzen kann ich leider nicht auf die Punkte einzeln zurückgreifen, da in der verknüpften Skizze ja anstelle der Geometrie nur ein "Kopieren.2" steht, wo alle geometrischen Elemente drin sind. Vielen Dank für Deine Mühe. ------------------ ----------- 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: 26. Jan. 2009 21:31 <-- editieren / zitieren --> Unities abgeben: Nur für noir333
Hm... meien alten Makros sind leider alle in catvbs, so dass ich sie nicht ohne CATIA öffnen kann. Aber du scheinst sowieso schon weiter zu sein. Also wenn ich das Makro richtig interpretiere gehst du sowieso nur auf den Sketch.39 los, also den 39. erstellten Sketch im Part. Könntest du mal so ein Part erstellen und dann im VBA (also catvba nicht CATScript) selektieren, was du benötigst und dann die Reference aus der Selektion auslesen und vergleichen, was dein Makro dynamisch ermittelt hat mit dem, was es sein sollte? Wär doch gelacht, wenn man das nicht dynamisch zusammen bauen könnte... Bei meinem alten Arbeitgeber gab es einige Bücher über CATIA-Programmierung in einem stand leicht verständlich (im Vergleich zu garnicht ) drin, wie sich so ein BRep zusammen setzt. Ich glaube es war das von Dieter R. Ziethen, aber auch das vom Herrn Hansen ist sehr gut (ich weiß jetzt aber nicht, ob da auch sowas drin seht). ------------------ 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 |
noir333 Mitglied Ingenieur
Beiträge: 148 Registriert: 27.01.2004 Dell Precision 450 Dual Xeon, 2MB RAM, XP SP2, NX3 V5R17SP3
|
erstellt am: 27. Jan. 2009 19:47 <-- editieren / zitieren --> Unities abgeben:
Hallo Lila, eigentlich komme ich auf die Problemstellung, weil ich in VB.Net ein Programm zum Erzeugen von Gewindebohrungen geschrieben habe. Dabei selektiert man einen Punkt, ich werte die Selektion aus und baue den String für den BREP zusammen. Das funktioniert prächtig, bis zu der Stelle, wo man mehr als eine verknüpfte Skizze hat. Weil ich dort Fehlermeldungen bekam, habe ich ausprobiert, ob der string ok ist und mal ein Makro aufgezeichnet. Leider kommt da dieselbe Fehlermeldung. Ich glaube zwar nicht, dass die Bücher weiterhelfen, werde aber morgen mal reinschauen. Ich befürchte, dass es ein Bug in Catia ist, weil der Fehler ja nur auftritt, wenn man mehrere verknüpfte Skizzen hat. Hast Du noch eine Idee, was ich ausprobieren kann? ------------------ ----------- 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: 28. Jan. 2009 13:54 <-- editieren / zitieren --> Unities abgeben: Nur für noir333
Warum musst du den BRep zusammen bauen, wenn der entsprechende Punkt schon in der Selektion ist? Bau mal im CATIA den Punkt so nach, wie du ihn selektieren möchtest mit einem zusammengbeauten BREP, selektier ihn, lies dort das BRep aus und vergleich beide. Hatte mal einen ähnlichen Fehler fällt mir gerade ein, der aber darauf hinaus lief, dass ich vorher ein Element nicht ganz korrekt, wie es CATIA haben wollte erzeugt hatte. Also einen Vertex, den ich 2x vom gleichen BRep erzeugen wollte, irgendwie und beim ersten mal klappte es und sobald so ein erzeugtes Element drin war dann nicht mehr. Meien Frage also: Sind alle Elemente im CATIA zur laufzeit richtig erzeugt? ------------------ 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 |
noir333 Mitglied Ingenieur
Beiträge: 148 Registriert: 27.01.2004 Dell Precision 450 Dual Xeon, 2MB RAM, XP SP2, NX3 V5R17SP3
|
erstellt am: 28. Jan. 2009 22:11 <-- editieren / zitieren --> Unities abgeben:
Hallo Lila, ja das ist eine gute Frage, warum den Brep zusammen bauen, wenn man den Punkt schon in der Selection hat. Man kann doch mit reference1=selection.item(1).reference die Referenz direkt erzeugen. Komischerweise kann man mit so einer Referenz nicht alle Operationen ausführen. Wenn man damit versucht eine Bohrung an einem Punkt zu erzeugen, dann geht das nicht, erstaunlicherweise. ------------------ ----------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noir333 Mitglied Ingenieur
Beiträge: 148 Registriert: 27.01.2004 Dell Precision 450 Dual Xeon, 2MB RAM, XP SP2, NX3 V5R17SP3
|
erstellt am: 28. Jan. 2009 23:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Lila, Du hast mich auf eine Idee gebracht. Der Bug in Catia mit den Breps bleibt zwar, aber ich habe eine andere Lösung gefunden: Wie oben beschrieben, kann man mit den Referenzen aus selection.item(1).reference nicht direkt eine Bohrung erzeugen mit AddNewHoleFromRefPoint(ref1, ref2, 10). Warum nicht ist mir schleierhaft. Deswegen war ich über die BREPs gegangen. Jetzt erzeuge ich zunächst die Bohrung an beliebiger Stelle und setze anschließend die Bohrung in der Skizze mit constraints an die richtige Stelle. Das geht erstaunlicherweise mit selection.item(1).reference. Vielen Dank für Deine Anregungen. ------------------ ----------- 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: 30. Jan. 2009 09:42 <-- editieren / zitieren --> Unities abgeben: Nur für noir333
*g* Lustig, dass du auch Bohnungen machst. Also als ich mit dem Problem zu kämpfen hatte war das bei einem Makro welches die Bohnungen durch die Produktstruktur treibt, damit nicht in jedem part die Bohrung nochmal neu gemacht werden muss. Ich steiß da aber eben auf einen kleinen Unterschied zwischen den BReps, die die Selection liefert und denen die direkt übergeben werden, wenn ich es direkt ausführe und mir in der watch list anschaue. Blöd, dass ich hier keine Lizenz habe... Jedenfalls war es so ein geringer Unterschied, dass man den durch String-Operationen einfach austauschen konnte und es ging dann auch mit BReps. Deine Lösungsidee war mir garnicht gekommen, finde die aber gut. ------------------ 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 |
noir333 Mitglied Ingenieur
Beiträge: 148 Registriert: 27.01.2004 Dell Precision 450 Dual Xeon, 2MB RAM, XP SP2, NX3 V5R17SP3
|
erstellt am: 30. Jan. 2009 10:24 <-- editieren / zitieren --> Unities abgeben:
Hallo Lila, ja, die String-Operationen sind nicht das Problem, damit habe ich schon einiges gemacht, und das geht immer irgendwie. Das Problem ist nur, wenn man aus dem Makrorekorder einen "defekten" String bekommt, weiß man ja nicht was er denn nun haben will. Wobei in diesem Fall der String glaube ich nicht "defekt" war, sondern CATIA aufgrund eines Bugs nicht in der Lage ist den richtig zu interpretieren. Sonst würden die Fehler ja nicht nur dann auftauchen, wenn eine zweite verknüpfte Skizze dazukommt! ------------------ ----------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|