Autor
|
Thema: Problem bei BReps für Fasenerstellung (1820 mal gelesen)
|
gehirnsuelze Mitglied Student
Beiträge: 58 Registriert: 16.11.2005
|
erstellt am: 27. Aug. 2007 10:10 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, hab mal ne kleine Frage wegen den BReps. Arbeite zur Zeit zum ersten Mal so richtig damit und mir gelingt es nicht die richtige Fläche für die Fase anzusprechen. Das ist mein Quelltext bisher (durch Makrorecorder aufgenommen): Dim Block As AnyObject Set Block = Bauteil.Shapes.Item("Mittelstueck") Set Referenz(1) = Part.CreateReferenceFromBRepName("RSur: (Face: (Brp: (Pad.1;0: (Brp: (Sketch.1;1)));None: ();Cf11: ());WithTemporaryBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", Block) Natürlich kommen noch ein paar Zeilen davor... Habe nun versucht "Pad.1" und "Sketch.1" mit den entsprechenden Objekten zu ersetzen damit die Sache dann in verschiedenen Bauteilumgebungen läuft. Liegt hier mein Fehler? Worauf bezieht sich denn "Pad.1"? Direkt auf das Objekt, welches ich mit "Block" definiert habe oder immer auf den ersten Block in der gesamten Bauteilumgebung? Im Ziethen wird das nicht richtig geklärt und im Forum kann ich auch nichts dazu finden...Über Hilfestellung würde ich mich freuen. Danke im Voraus Gehirnsuelze ------------------ 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 23:20 <-- editieren / zitieren --> Unities abgeben: Nur für gehirnsuelze
Hallo gehirnsuelze, "Pad.1" ist eigentlich Dein "Mittelstueck", Du kannst also anstelle von 'Pad.1' auch 'Mittelstueck' schreiben. Ansonsten sagt Dein "BRep" aus, das Du die Fläche vom Block "Mittelstueck" gewählt hast, die sich durch Extrusion des 1.Elementes (Sketch.1;1) Deiner Skizze "Sketch.1" ergibt. Du kannst das Ganze auch so vereinfachen: Code: Set Referenz(1) = Part.CreateReferenceFromBRepName("RSur:(Face:(Brp: (Mittelstueck;0:(Brp:(Sketch.1;1)));None:();Cf11:()))",Block)
Ich hoffe, das bringt Dich weiter. 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 |
gehirnsuelze Mitglied Student
Beiträge: 58 Registriert: 16.11.2005
|
erstellt am: 30. Aug. 2007 13:31 <-- editieren / zitieren --> Unities abgeben:
Danke erstmal an Lusilnie, komme trotzdem nicht damit klar. Ich hab mal noch ein Bild angehangen. Liegt des vielleicht an der Skizze des Grundkörpers, da diese Löcher hat? Hab jetzt schon ne ganze Menge verschieden Varianten probiert, aber leider ohne Erfolg. Beim Anklicken der erzeugten Fase scheint er auch eine Kante bzw. Fläche ausgewählt zu haben aber ich kann nicht erkennen welche (Part kann nicht aktualisiert werden). Vielleicht kann mir jemand anhand der Grafik mal was zusammenbasteln und dann anschließend erklären!?! Besten Dank im Voraus... Gehirnsuelze ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gehirnsuelze Mitglied Student
Beiträge: 58 Registriert: 16.11.2005
|
erstellt am: 30. Aug. 2007 13:33 <-- editieren / zitieren --> Unities abgeben:
|
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 30. Aug. 2007 23:26 <-- editieren / zitieren --> Unities abgeben: Nur für gehirnsuelze
Hallo gehirnsuelze, die gelbe Fläche kann ich auch interaktiv nicht "befasen"! Also muß man hier die Kanten wählen. Je nachdem, wie Du die Teile aufgebaut hast, mußt Du bei der Zahl beim "Grundkörper" bzw. "Mittelstueck" 0, 1 oder 2 schreiben. "0" bedeutet Mantelfläche und wird durch (Brp(Sketch.X,Y)) erweitert, je nachdem welches Sketch-Element an der Bildung der Fläche beteiligt war. "1" ist die Grundfläche (Limit2) und "2" die Deckfläche (Limit1). Bei Dir sollte es folgende 2 Kombinationen geben: Code: Set Referenz(1) = Part.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(Mittelstueck;0:(Brp:(Sketch.2;1)));None:();Cf11:());Face:(Brp:(Mittelstueck;2);None:();Cf11:());None:(Limits1:();Limits2() );Cf11:()))",Block)Set Referenz(2) = Part.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(Mittelstueck;0:(Brp:(Sketch.2;1)));None:();Cf11:());Face:(Brp:(Grundkoerper;1);None:();Cf11:());None:(Limits1:();Limits2() );Cf11:()))",Block)
Die erste stellt die Kante zwischen Kreisfläche und Zylindermantelfläche vom "Mittelstueck" dar, die zweite die Kante zwischen "Mittelstueck" und "Grundkoerper". Hier könnten die ";1" bzw. ";2" nach "Mittelstueck" bzw. "Grundkoerper" auch ";2" bzw. ";1" sein, je nach dem, wie der "Pad" ("Block") aufgebaut wurde.Falls Du noch mehr Hilfe brauchst, mach doch nochmal ein Bild und blättere die Sketche im Baum mit auf und mach sie im 3D sichtbar. Dann muß man bei den Nummern nicht mehr raten. mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern [Diese Nachricht wurde von Lusilnie am 30. Aug. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gehirnsuelze Mitglied Student
Beiträge: 58 Registriert: 16.11.2005
|
erstellt am: 31. Aug. 2007 10:52 <-- editieren / zitieren --> Unities abgeben:
Hallo Lusilnie, nochmals vielen Dank für den Hilfe, leider bekomm ich es immer noch nicht hin. Es scheint bei mir ein kleines Verständnissproblem zu geben. Hab mal im Folgenden aufgezeigt, was ich so gemacht habe und noch mal eine bessere Grafik angehangen...vieleicht kannst du mir nochmal helfen. Ich hab mich erstmal auf die Kante des Mittelstuecks beschränkt, da das Problem wohl bei beiden Kanten das selbe ist. Definition der benötigten Sachen ist wie folgt durchgeführt:
Code: Dim SkizzeMittelstueck As Sketch Dim Mittelstueck As Pad Dim Block As AnyObject
die Sachen wurden nun per Makro erstellt und das im Bild gezeigte Resultat ist rausgekommennun hab ich im Sub Anfasen() Code: Set Block = Adapter.Shapes.Item("Mittelstueck")
wenn ich nun die Kante haben möchte, dann komme ich durch die zwei Flächen an sie ran Fläche 1 ist die Deckfläche:
Code: Face:(Brp:(Mittelstueck;2);None:())
Fläche 2 ist die Mantelfläche:
Code: Face:(Brp:(Mittelstueck;0:(Brp:(SkizzeMittelstueck;1)));None:())
Die Sache hab ich dann noch mit der Kantendefinition und der entsprechenden Endung versehen:
Code: Set Referenz(1) = Part.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(Mittelstueck;0:(Brp:(SkizzeMittelstueck;1)));None:();Cf11:());Face:(Brp:(Mittelstueck;2);None:();Cf11:());None:(Limits1:() ;Limits2());Cf11:()))",Block)
Wenn ich das Makro jetzt ausführe, dann meckert CATIA bei dieser Zeile: "Object doesnt support this property or methode" Bin mit meinem Latein am Ende ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 03. Sep. 2007 23:37 <-- editieren / zitieren --> Unities abgeben: Nur für gehirnsuelze
Hallo gehirnsuelze, ich geb zu, es ist nicht ganz trivial. Das ganze Beispiel hat erstens einen Schreibfehler, es muss "...Limits2:())..." lauten, und zweitens ist der Zugriff auf die Skizze nicht mit "...(SkizzeMittelstueck;1)..." getan. Hier ist nämlich der wirkliche Name der Skizze gefragt. D.h., man kann hier nicht mit dem geänderte Namen arbeiten. Doch hier hilft uns folgender Beitrag: http://ww3.cad.de/foren/ubb/Forum137/HTML/002077.shtml Daraus ergibt sich dann folgender Code (speziell für Deinen Fall!): Code: Set Reference(1) = Part.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(Mittelstueck;0:(Brp:(" & Sketch.GetItem("ModelElement").InternalName & ";1)));None:();Cf11:());Face:(Brp:(Mittelstueck;2);None:();Cf11:());None:(Limits1:();Limits2:());Cf11:()))", Block)
Dann sollte Deine Fase erstellt werden! ODER? mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern [Diese Nachricht wurde von Lusilnie am 03. Sep. 2007 editiert.] [Diese Nachricht wurde von Lusilnie am 03. Sep. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gehirnsuelze Mitglied Student
Beiträge: 58 Registriert: 16.11.2005
|
erstellt am: 06. Sep. 2007 13:56 <-- editieren / zitieren --> Unities abgeben:
|
gehirnsuelze Mitglied Student
Beiträge: 58 Registriert: 16.11.2005
|
erstellt am: 06. Sep. 2007 15:35 <-- editieren / zitieren --> Unities abgeben:
Hallo nochmal, muss das Problem doch nochmal aufgreifen. Ich habe jetzt die BRep-Methode eingesetzt, um ein Skizze auf einer bestimmte Fläche zu erzeugen. Das klappt auch ganz gut... ...aber wenn ich die erzeugte Geometrie ein zweites mal erzeugen möchte, bricht CATIA mit "Click OK to terminate" ab, obwohl die ganze Sache doch dynamisch gestaltet ist. Woran kann das liegen? Bin ratlos. MfG Gehirnsuelze ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |