Autor
|
Thema: Brep in Externe Verweise (4529 mal gelesen)
|
makri Mitglied klötzchenbauer
Beiträge: 24 Registriert: 31.07.2007 C64 Datasette 350 KB Ram
|
erstellt am: 16. Jan. 2010 13:42 <-- editieren / zitieren --> Unities abgeben:
Hallo V5-User, wieder ein Problem, so denke ich, mit brep: Eine Platte soll gebohrt werden. Die Lochpositionen kommen aus Skizzen mit externen Verweisen. Das Problem ist, das Catia die erste Skizze .item(1) verarbeitet, die restlichen aber nicht. Mein Aufbau bisher:
V5 R17 3 eingefügte Skizzen, die jeweils 6 Skizz-Punkte enthalten mein .catvbs Code: Schleife 1 über alle Skizzen Schleife 2 über alle Punkte Erzeugung eines Loches auf Punkt next next Dazu noch erwähnt das die Funktion Loch durch alles andere ersetzt werden kann. zB. kann ich auch keine 3D Punkte auf den Skizzenpunkten erzeugen oä. Und, wenn man recorden läßte, auf ein Punkt der 2.ten oder n.ten eingefügten Skizze eine Bohrung erstellt, und das Script ausführt, kommt es auch zu einer Fehlermeldung. hat jemand eine Idee oder das Problem behoben/umgangen?
mfG makri '----------------------------------------------- 'ausführen im Anhang <0000_Platte.CATPart> Sub CATMain() Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set originElements1 = part1.OriginElements Set XY_ref= originElements1.PlaneXY Set shapeFactory1 = part1.ShapeFactory Set hybridBodies1 = part1.HybridBodies Set hybridBody1 = hybridBodies1.Item("Externe Verweise") Set sketches = hybridBody1.HybridSketches for i = 1 to sketches.count Set osketch = sketches.Item(i) msgbox osketch.name Set oSketchME = osketch.GetItem("ModelElement") oSketchIN = oSketchME.InternalName for anz = 1 to 6 Set ExVe_Punkt_ref = part1.CreateReferenceFromBRepName("BorderFVertex:(BEdge:(Brp:(" & _ oSketchIN & ";(Brp:(Datum.1;%" & anz & ")))" & _ ";None:(Limits1:();Limits2:();+1);Cf11:());" & _ "WithTemporaryBody;WithoutBuildError;WithInitialFeatureSupport;MFBRepVersion_CXR15)", osketch) Set hole1 = shapeFactory1.AddNewHoleFromRefPoint(ExVe_Punkt_ref , XY_ref, 10.000000) hole1.Type = catSimpleHole hole1.AnchorMode = catExtremPointHoleAnchor hole1.BottomType = catFlatHoleBottom Set limit1 = hole1.BottomLimit limit1.LimitMode = catOffsetLimit Set length1 = hole1.Diameter length1.Value = 10.000000 hole1.ThreadingMode = catSmoothHoleThreading hole1.ThreadSide = catRightThreadSide hole1.BottomType = catTrimmedHoleBottom limit1.LimitMode = catUpToLastLimit length1.Value = 6.000000 part1.Update next next End Sub
'----------------------------------------------- [Diese Nachricht wurde von makri am 16. Jan. 2010 editiert.]
[Diese Nachricht wurde von makri am 16. Jan. 2010 editiert.] [Diese Nachricht wurde von makri am 16. Jan. 2010 editiert.] 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: 16. Jan. 2010 14:27 <-- editieren / zitieren --> Unities abgeben: Nur für makri
Servus ich vermute, dass es nicht am Brep liegt, sondern, dass nicht eindeutig ist wo die Bohrung eingefügt werden soll. Denn beim Start des Makros das geometrische Set in Bearbeitung ist, kommt der gleiche Fehler gleich am Anfang. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
makri Mitglied klötzchenbauer
Beiträge: 24 Registriert: 31.07.2007 C64 Datasette 350 KB Ram
|
erstellt am: 16. Jan. 2010 15:59 <-- editieren / zitieren --> Unities abgeben:
Hi, danke für die schnelle antwort. Habe mit .InWorkObject probiert. leider nach dem durchlauf der ersten skizze der abbruch... mfG '--------------
Sub CATMain() Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set originElements1 = part1.OriginElements Set XY_ref= originElements1.PlaneXY Set shapeFactory1 = part1.ShapeFactory Set hybridBodies1 = part1.HybridBodies Set hybridBody1 = hybridBodies1.Item("Externe Verweise") Set sketches = hybridBody1.HybridSketches for i = 1 to sketches.count Set osketch = sketches.Item(i) msgbox osketch.name Set oSketchME = osketch.GetItem("ModelElement") oSketchIN = oSketchME.InternalName for anz = 1 to 6 part1.InWorkObject = CATIA.ActiveDocument.Part.MainBody Set ExVe_Punkt_ref = part1.CreateReferenceFromBRepName("BorderFVertex:(BEdge:(Brp:(" & _ oSketchIN & ";(Brp:(Datum.1;%" & anz & ")))" & _ ";None:(Limits1:();Limits2:();+1);Cf11:());" & _ "WithTemporaryBody;WithoutBuildError;WithInitialFeatureSupport;MFBRepVersion_CXR15)", osketch) Set hole1 = shapeFactory1.AddNewHoleFromRefPoint(ExVe_Punkt_ref , XY_ref, 10.000000) hole1.Type = catSimpleHole hole1.AnchorMode = catExtremPointHoleAnchor hole1.BottomType = catFlatHoleBottom Set limit1 = hole1.BottomLimit limit1.LimitMode = catOffsetLimit Set length1 = hole1.Diameter length1.Value = 10.000000 hole1.ThreadingMode = catSmoothHoleThreading hole1.ThreadSide = catRightThreadSide hole1.BottomType = catTrimmedHoleBottom limit1.LimitMode = catUpToLastLimit length1.Value = 6.000000 part1.Update next next End Sub
[Diese Nachricht wurde von makri am 16. Jan. 2010 editiert.]
[Diese Nachricht wurde von makri am 16. Jan. 2010 editiert.] [Diese Nachricht wurde von makri am 16. Jan. 2010 editiert.] 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: 16. Jan. 2010 17:27 <-- editieren / zitieren --> Unities abgeben: Nur für makri
|
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 16. Jan. 2010 20:29 <-- editieren / zitieren --> Unities abgeben: Nur für makri
Hallo, ich bin leider der Meinung, dass der Zugriff auf Elemente einer kopierten Skizze nicht klappen wird. Es ist auch relativ einfach nachzuvollziehen, wenn du die Geometry Ast im Baum der Skizze öffnest und ansiehst, was dort steht (ein Briefumschlag), also die komplette Skizze ist ein Objekt. Das war schon in R16 so. Wir haben es aus einen anderen Grund untersucht, haben versucht die Originale der Skizze zu finden und die Koordinaten zu transformieren, letztendlich haben wir aber die ganze fallen lassen und uns was komplett anderes verwirklicht, weil diese Lösung sehr instabil war. Wenn du interaktiv versuchst Punkte in der Skizzenkopie zu suchen (mit Edit - Search), wird auch kein Ergebnis geliefert. Was du alternativ versuchen könntest, wäre ein Userpattern zu erzeugen. Das erzeugt zwar nicht einzelne Bohrungen, ha aber geomtrisch die selbe Ergebnis. Gruß, Zoltan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 19. Jan. 2010 08:50 <-- editieren / zitieren --> Unities abgeben: Nur für makri
Hallo, also ich habe gerade mal ein wenig rumgespielt und es auch nicht geschafft. Das seltsame an dem Verhalten ist (wie makri schon angemerkt hat), das der erste Sketch funktioniert und die Punkte des zweiten nicht. Das mit dem einzelnen Objekt kann IMHO nicht sein denn CATIA erkennt die einzelnen Punkte als Vertex und setzt sie auch sauber in eine Referenz. Selbst wenn man ein Makro aufzeichnet funktioniert es mit den Punkten des ersten Sketches, mit denen des zweiten und dritten jedoch nicht. Das ganze ist auch mit anderen Funktionen reproduzierbar. Anscheinend stimmt irgendwas mit dem BRep-String nicht. Ich denke an dieser Position "Datum.1%5" etc. Aber CATIA zeichnet es intern auch so auf [EDIT] Zitat: Wenn du interaktiv versuchst Punkte in der Skizzenkopie zu suchen (mit Edit - Search), wird auch kein Ergebnis geliefert.
Das ist eben schon so und das ist genau das was so komisch daran ist. Wenn ich z.B. nach Vertex suche innerhalb des geo-Sets, erhalte ich 18 einzelne Instanzen. D.h. jeder einzelne Punkt kann angesprochen werden und nicht nur die drei Gesamtobjekte [/EDIT] ------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
makri Mitglied klötzchenbauer
Beiträge: 24 Registriert: 31.07.2007 C64 Datasette 350 KB Ram
|
erstellt am: 20. Jan. 2010 09:35 <-- editieren / zitieren --> Unities abgeben:
Hi alle, habe auch nochmal mit dem Vertex probiert. Allerdings klappts immer noch nicht. Kann man nicht per Search den Vertexpunkt suchen in eine Selection packen und daraus die Reference erstellen? Dieses klappt soweit, nur die Reference passt der Funktion Hole nicht :/ Per Userpattern wäre ne Alternative bin auch schon dran, aber ich würde dieses auch nutzen für zB Powercopys ect.
mfG Makri
'----------------
Sub CATMain() Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set originElements1 = part1.OriginElements Set XY_ref= originElements1.PlaneXY Set shapeFactory1 = part1.ShapeFactory Set hybridBodies1 = part1.HybridBodies Set hybridBody1 = hybridBodies1.Item("Externe Verweise") Set sketches = hybridBody1.HybridSketches Set selection1 = partDocument1.Selection Set selection2 = partDocument1.Selection for i = 1 to sketches.count selection1.clear Set osketch = sketches.Item(i) msgbox osketch.name selection1.add (sketches.Item(i)) selection1.Search "Topology.CGMVertex,sel" for anz = 1 to selection1.count
part1.inworkobject = part1.MainBody Set punkta = selection1.Item(anz).value selection1.clear selection2.add (punkta) Set ExVe_Punkt_ref = selection2.item(1).reference Set hole1 = shapeFactory1.AddNewHoleFromRefPoint(ExVe_Punkt_ref , XY_ref, 10.000000) hole1.Type = catSimpleHole hole1.AnchorMode = catExtremPointHoleAnchor hole1.BottomType = catFlatHoleBottom Set limit1 = hole1.BottomLimit limit1.LimitMode = catOffsetLimit Set length1 = hole1.Diameter length1.Value = 10.000000 hole1.ThreadingMode = catSmoothHoleThreading hole1.ThreadSide = catRightThreadSide hole1.BottomType = catTrimmedHoleBottom limit1.LimitMode = catUpToLastLimit length1.Value = 6.000000 part1.Update next next End Sub
[Diese Nachricht wurde von makri am 21. Jan. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
makri Mitglied klötzchenbauer
Beiträge: 24 Registriert: 31.07.2007 C64 Datasette 350 KB Ram
|
erstellt am: 28. Jan. 2010 12:27 <-- editieren / zitieren --> Unities abgeben:
Hi, nach langem hin u. her nun die Lösung zum Problem. Nach meinen Wissen nach ist es nicht möglich den InternalName einer Skizze mit Verweisen zu kriegen. Dieser ist immer Datum.1 Mit einem kleinen Umweg, indem man das Object (Kopieren.) in der Skizze wieder kopiert und einfügt, erhällt man ein Object das "anpackbar" ist, und abhängig zur Skizze bleibt. Der InternalName unter R17 mit ein paar String Manipulationen, unter R19 direkt abfragbar, und das wars. Merci, Macri. Code: --------------------------- Sub CATMain() Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set originElements1 = part1.OriginElements Set XY_ref= originElements1.PlaneXY Set shapeFactory1 = part1.ShapeFactory Set hybridBodies1 = part1.HybridBodies Set hybridBody1 = hybridBodies1.Item("Referenz Verweise") Set hybridShapes1 = hybridBody1.HybridShapes Set osel = partDocument1.Selection osel.Search "CATSketchSearch.2DDatum,all" osel.copy osel.clear osel.add(hybridBody1) osel.paste osel.clear for i = 1 to hybridShapes1.count
Set hybridShape1 = hybridShapes1.Item(i) if CATIA.SystemConfiguration.Release = 19 then Set oShapeME = hybridShape1.GetItem("ModelElement") oShapeIN = oShapeME.InternalName else if CATIA.SystemConfiguration.Release = 17 then osel.clear osel.add(hybridShape1) osel.Search "Topology.CGMVertex,sel" BrepName = Catia.ActiveDocument.selection.item(1).value.name iIndex = Left(BrepName, InStr(BrepName, ".") - 0) iIndex_a = replace(BrepName,iIndex,"") iIndex_b = Left(iIndex_a, InStr(iIndex_a, ";") - 1) oShapeIN = "GSMZeroDim."&int(iIndex_b) end if end if osel.clear osel.add(hybridShape1) osel.Search "Topology.CGMVertex,sel" for anz = 1 to osel.count Set ExVe_Punkt_ref= part1.CreateReferenceFromBRepName("BorderFVertex:(BEdge:(Brp:("&oShapeIN&";"&anz&");None:(Limits1:();Limits2:();+1);Cf11:());WithTemporaryBody;WithoutBuildError;WithSelectingFeatur eSupport;MFBRepVersion_CXR15)", hybridShape1) Set hole1 = shapeFactory1.AddNewHoleFromRefPoint(ExVe_Punkt_ref , XY_ref, 10.000000) hole1.Type = catSimpleHole hole1.AnchorMode = catExtremPointHoleAnchor hole1.BottomType = catFlatHoleBottom Set limit1 = hole1.BottomLimit limit1.LimitMode = catOffsetLimit Set length1 = hole1.Diameter length1.Value = 10.000000 hole1.ThreadingMode = catSmoothHoleThreading hole1.ThreadSide = catRightThreadSide hole1.BottomType = catTrimmedHoleBottom limit1.LimitMode = catUpToLastLimit length1.Value = 6.000000 next next part1.Update End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
buecherm83 Mitglied Ingenieur IT Application Software
Beiträge: 78 Registriert: 20.09.2011 SIEMENS NX10 CATIA V5 R26 VB7.1 Tecnomatix Process Designer/Simulate<P>Win7 64bit Office 2016
|
erstellt am: 04. Dez. 2013 10:28 <-- editieren / zitieren --> Unities abgeben: Nur für makri
Hallo, ich habe ein Problem mit dem Befehl "CreateReferenceFromBrepName" Ich möchte gerne verschiedenen Punkten die in einer Skizze liegen, eine Anmerkung mitgeben. Hierzu habe ich mir den Internen Namen der Skizze ausgeben gelassen und diesen in die entsprechende Zeile eingebaut. Set MyReference = MyPart.CreateReferenceFromBRepName("BorderFVertex BEdge Brp:("&Ursprungname&";"&n&");None Limits1 );Limits2 );+1);Cf11 ));WithTemporaryBody;WithoutBuildError;WithSelec tingFeatur eSupport;MFBRepVersion_CXR15)", MySketch)
Leider hat VBA ein Problem mit der Schreibeweise der Anführungszeichen. Habe sämtliche Möglichkeiten ausprobiert und bin zu keinem Ergebnis gekommen. Wenn ich den Sketchnamen und die Anzahl von Hand eintrage läuft es ohne Probleme durch.
Vielleicht kann mir ja jemand weiterhelfen oder hat noch einen Tip. Grüße [Diese Nachricht wurde von buecherm83 am 04. Dez. 2013 editiert.] 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: 04. Dez. 2013 11:55 <-- editieren / zitieren --> Unities abgeben: Nur für makri
Welcher Anführungszeichen denn? Mach mal bitte Leerzeichen zwischen den & ------------------ 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 |
buecherm83 Mitglied Ingenieur IT Application Software
Beiträge: 78 Registriert: 20.09.2011 SIEMENS NX10 CATIA V5 R26 VB7.1 Tecnomatix Process Designer/Simulate<P>Win7 64bit Office 2016
|
erstellt am: 04. Dez. 2013 12:05 <-- editieren / zitieren --> Unities abgeben: Nur für makri
|
buecherm83 Mitglied Ingenieur IT Application Software
Beiträge: 78 Registriert: 20.09.2011 SIEMENS NX10 CATIA V5 R26 VB7.1 Tecnomatix Process Designer/Simulate<P>Win7 64bit Office 2016
|
erstellt am: 05. Dez. 2013 10:39 <-- editieren / zitieren --> Unities abgeben: Nur für makri
habe ein neues Problem. In meinem Testpart läuft alles ohne Probleme. Die Anmerkungen mit Referencen über den BRep funktionieren. Sobald sich Punkte verschieben, werden die Anmerkungen aktualisiert. Nun bin ich dabei das Makro an realen Parts zu testen. Hier läuft es nur einmal durch die Schleife. Beim nächsten Durchlauf erhalte ich folgenden Fehler: "Das zuletzt ausgewählte Element wird nicht unterstützt." Das Verfahren Generate ist fehlgeschlagen. Im Watchfenster sehe ich, dass der BRep-Name allerdings die richtigen Werte und den Richtigen Namen hat. Wenn ich den Code Schritt für Schritt durchgehe und den Brep von Hand anpasse erhalte ich auch die selbe Fehlermeldung. Worin kann der Unterschied zwischen TestPart und RealPart liegen. (Aufbau alles der gleiche einzig der Name der Punkte heißt anders. Sollte jedoch für die Selektion kein Problem darstellen da diese ja nur hochgezählt werden). Vielen Dank! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |