| |
 | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 |
| |
 | KISTERS 3DViewStation: Mit Modellbasiertem Design zum Modellbasierten Unternehmen , eine Pressemitteilung
|
Autor
|
Thema: Wie komme ich von selektierter Fläche auf das zugehörige Part (1639 mal gelesen)
|
louis Mitglied Geschäftsführer

 Beiträge: 93 Registriert: 07.05.2001 V5 R19/R2014, WIN7, Visual Basic6.0 SP6
|
erstellt am: 03. Mrz. 2003 10:30 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zusammen, nach der Selection einer Fläche komme ich mit MyReference.DisplayName auf den Namen: "Selection_RSur Face Brp Pad.1;0 Brp Sketch.3;3)));None ));Pad.1)" Frage: Wie finde ich das zugehörige Part oder Pad ? Mein Ziel ist es eine Fläche zu selektieren und entsprechend zuzuordnen. Vielen Dank fuer einen Tip. Louis Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
scheuche Mitglied

 Beiträge: 46 Registriert: 31.10.2002
|
erstellt am: 07. Mrz. 2003 09:56 <-- editieren / zitieren --> Unities abgeben:          Nur für louis
|
louis Mitglied Geschäftsführer

 Beiträge: 93 Registriert: 07.05.2001 V5 R19/R2014, WIN7, Visual Basic6.0 SP6
|
erstellt am: 07. Mrz. 2003 12:41 <-- editieren / zitieren --> Unities abgeben:         
Hallo Ute, ich weiss das es in diesem Forum (Be)Nutzer gibt die 100% wissen wie es geht. z.B. habe ich von akanneng schon Programme gesehen die laufen. (Leider antwortet er nicht) Es ist eigentlich ein Basis-Teil: Fläche abfragen, Punkt abfragen und dann per Code eine definierte Bohrung setzten. Mein Freund, der mir bei solchen Sachen hilft ist gerade beruflich unterwegs - ich glaube also nicht, dass ich Dir vor übernächster Woche was sagen kann. AUSSER einer der PROFI'S hier im Forum entdeckt doch noch seine soziale Ader und hilft uns. Vielleicht bekomme ich eine Info auf dem Benutzertreffen nächste Woche in Köln. Viele Grüsse und ein schönes WE Louis Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Steffen Hohmann Mitglied
 
 Beiträge: 446 Registriert: 06.03.2002
|
erstellt am: 07. Mrz. 2003 16:21 <-- editieren / zitieren --> Unities abgeben:          Nur für louis
Hallo Louis, anbei ein Makro zur Erzeugung einer Bohrung durch Auswählen eines Punktes und einer Fläche. Das Ganze läuft aber erst unter R10 sauber. Ich hoffe Dir damit geholfen zu haben. Ansonsten melde Dich einfach. Gruss Steffen Sub Main()
'bei VBScript 'Sub CATMain() 'Variablendeklaration Dim CATIA As Application 'CATIA-Object Dim ODoc As PartDocument 'Partdokument-Object Dim OFactory As ShapeFactory 'ShapeFactory-Object Dim OSelection 'Selections-Object Dim SelPoint(0) 'Filter für Punktauswahl Dim SelFace(0) 'Filter für Flächenauswahl Dim SelStatus As String 'Rückkehrwert nach Auswahl Dim RefPoint As Reference 'Referenz zu ausgewähltem Punkt Dim RefFace As Reference 'Referenz zur ausgewählten Fläche Dim OHole As Hole 'Bohrungsobjekt 'Wertzuweisung Set CATIA = GetObject(, "CATIA.Application") 'Weglassen bei VBScript Set ODoc = CATIA.ActiveDocument Set OFactory = ODoc.Part.ShapeFactory Set OSelection = ODoc.Selection 'Filterdefinition SelPoint(0) = "Point" SelFace(0) = "PlanarFace" 'Punktauswahl SelStatus = OSelection.SelectElement(SelPoint, "Einfügepunkt für Bohrung auswählen", False) If (SelStatus = "Cancel") Then Exit Sub Set RefPoint = OSelection.Item(1).Reference 'Flächenauswahl SelStatus = OSelection.SelectElement(SelFace, "Referenzfläche für Bohrung auswählen", False) If (SelStatus = "Cancel") Then Exit Sub Set RefFace = OSelection.Item(1).Value 'Bohrung erzeugen 10mm tief Set OHole = OFactory.AddNewHoleFromRefPoint(RefPoint, RefFace, 10) ODoc.Part.Update End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
louis Mitglied Geschäftsführer

 Beiträge: 93 Registriert: 07.05.2001 V5 R19/R2014, WIN7, Visual Basic6.0 SP6
|
erstellt am: 07. Mrz. 2003 18:00 <-- editieren / zitieren --> Unities abgeben:         
Hurra das Forum lebt ! Hallo Steffen, vielen Dank fuer Deine Antwort. Im Prinzip habe ich es genauso aufgebaut (nur mit "Face" als Abfragefilter). Ich habe aber ein Problem. Ich befinde mich in einem Assembly und ich weiss nicht welches Part zu der selektierten Fläche gehört. Somit weiss ich nicht, welchem Part ich die ShapeFactory zur Erstellung der Bohrung zuweisen soll. Ich glaube Ute hat das gleiche Problem. Freue mich auf Deine Antwort Louis Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Steffen Hohmann Mitglied
 
 Beiträge: 446 Registriert: 06.03.2002
|
erstellt am: 11. Mrz. 2003 08:29 <-- editieren / zitieren --> Unities abgeben:          Nur für louis
Hallo Louis, leider habe ich momentan auch keine Möglichkeit gefunden, von einem selektierten Boundary-Object (PlanarFace) das Parent herzuleiten. Folgende Möglichkeit zur Lösung: Sub Main() 'Variablendeklaration Dim CATIA As Application 'CATIA-Object Dim ODoc As ProductDocument 'Partdokument-Object Dim OFactory 'As ShapeFactory 'ShapeFactory-Object Dim OSelection 'Selections-Object Dim SelPoint(0) 'Filter für Punktauswahl Dim SelFace(0) 'Filter für Flächenauswahl Dim SelPart(0) 'Objekt für Teil Dim SelStatus As String 'Rückkehrwert nach Auswahl Dim RefPoint As Reference 'Referenz zu ausgewähltem Punkt Dim RefFace As Reference 'Referenz zur ausgewählten Fläche Dim RefPart 'As Part Dim OHole As Hole 'Bohrungsobjekt 'Wertzuweisung Set CATIA = GetObject(, "CATIA.Application") Set ODoc = CATIA.ActiveDocument Set OSelection = ODoc.Selection 'Filterdefinition SelPoint(0) = "Point" SelFace(0) = "PlanarFace" SelPart(0) = "Part" 'Punktauswahl SelStatus = OSelection.SelectElement(SelPoint, "Einfügepunkt für Bohrung auswählen", False) If (SelStatus = "Cancel") Then Exit Sub Set RefPoint = OSelection.Item(1).Reference 'Flächenauswahl SelStatus = OSelection.SelectElement(SelFace, "Referenzfläche für Bohrung auswählen", False) If (SelStatus = "Cancel") Then Exit Sub Set RefFace = OSelection.Item(1).Value 'Teil auswählen, das Teil muß natürlich zur Fläche gehören SelStatus = OSelection.SelectElement(SelPart, "Teil für Bohrung auswählen", False) If (SelStatus = "Cancel") Then Exit Sub Set RefPart = OSelection.Item(1).Value Set OFactory = RefPart.ShapeFactory 'Bohrung erzeugen 10mm tief Set OHole = OFactory.AddNewHoleFromRefPoint(RefPoint, RefFace, 10#) RefPart.Update End Sub Das bedeutet zwar ein Klick mehr aber es funktioniert. Vielleicht entdecke ich noch eine andere Lösung.
Gruss Steffen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
louis Mitglied Geschäftsführer

 Beiträge: 93 Registriert: 07.05.2001 V5 R19/R2014, WIN7, Visual Basic6.0 SP6
|
erstellt am: 11. Mrz. 2003 09:27 <-- editieren / zitieren --> Unities abgeben:         
Hallo Steffen, genau so habe ich es schon gelöst, nur dass ich SelPart(0) auf "Pad" setze. Dann komme ich mit dem .parent.parent Ergebnis auf den richtigen Körper und mit .parent.parent.parent auf das zugehörige Part. Der Hintergrund ist, dass wenn Du in Deinem Part mehrerere Körper hast, der richtige Körper .InWorkObject gesetzt sein muss. Überhaupt ist das ein mit dem .InWorkObject wichtig. Wenn nämlich ein offener Körper in diesem Part gerade .InWorkObject ist, kannst das Programm keine Bohrung erzeugen. Vielen Dank und herzliche Grüsse Louis
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |