Autor
|
Thema: CATPart und CATProduct zuverlässig unterscheiden (611 mal gelesen)
|
nreim1 Mitglied Konstrukteur
Beiträge: 36 Registriert: 18.01.2008
|
erstellt am: 09. Jan. 2009 09:23 <-- editieren / zitieren --> Unities abgeben:
Erstmal hallo in die runde. Ich suche nach einer möglichkeit zuverlässig zwischen CATParts und CATProducten zu unterscheiden... Folgende vorgehensweise: Ich starte mein Macro welches mich dann auffordert ein produkt in der Assembly zu wählen, in dieses produkt soll dann ein part eingefügt werden. Das ist soweit auch alles kein problem ! Das problem ist nun folgendes, wenn ich in der Filter funktion der Selektion den Filter Product setze gibt Catia mir ja trozdem die möglichkeit ein product bzw. ein part auszuwählen .... Jetzt müsste ich also unterscheiden ob es tatsächlich ein CATProduct oder CATPart ist ... Momentan sehe ich den Wald vor Bäumen nicht und wäre euch super dankbar für einen denkanstoß zur lösung des problems ... Vielen Dank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 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: 09. Jan. 2009 10:19 <-- editieren / zitieren --> Unities abgeben: Nur für nreim1
Hallo nreim1, dazu ist ein kleiner Umweg erforderlich, den innerhalb einer Produktstruktur sind alle Unterkomponenten (egal ob Produkt, Komponente oder Part) für CATIA Produkte. Deshalb mache dir eine MsgBox und fordere den Anwender auf ein PRODUCT zu selektieren. Diese Selektion fragst du nun ab ob es auch wirklich ein Produkt bzw. eine Komponente ist. Falls JA gehts mit dem Quelltext weiter, falls NEIN spring zurück und lass ihn nochmal selektieren. So stellst du sicher das nur eine Teil selektierte wurde unter dem eine Part eingefügt werden kann. Hier mal ein kleines Beispiel: Code:
Dim otype(0) Dim Auswahl Dim Check As Boolean Set oDoc = CATIA.ActiveDocument Set oSel = oDoc.Selection oSel.Clear otype(0) = "Product" oSel.Clear Box = MsgBox("Bitte wählen Sie ein Product aus", vbInformation + vbOKCancel, "Product auswählen") If Box = vbCancel Then Box = MsgBox("Sie haben die Selektion abgebrochen" + Chr(10) + _ "Das Makro wird nun beendet!", vbCritical, "Abbruch durch Nutzer") Exit Sub End If Do Auswahl = oSel.SelectElement2(otype, "Bitte wählen Sie ein Product aus", False) If Auswahl = "Normal" Then Set oProd = oSel.Item(1).Value If TypeName(oProd.ReferenceProduct.Parent) <> "ProductDocument" Then Box = MsgBox("Bitte wählen Sie nur ein Product aus!", vbInformation, "Falsche Auswahl") Else Check = True End If Else Box = MsgBox("Sie haben die Selektion abgebrochen" + Chr(10) + _ "Das Makro wird nun beendet!", vbCritical, "Abbruch durch Nutzer") Exit Sub End If Loop Until Check = True oSel.Clear
------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nreim1 Mitglied Konstrukteur
Beiträge: 36 Registriert: 18.01.2008
|
erstellt am: 09. Jan. 2009 10:46 <-- editieren / zitieren --> Unities abgeben:
Einfach Klasse !! Genau sowas habe ich gesucht, das mit dem TypeName(oProd.ReferenceProduct.Parent) <> "ProductDocument" ist der entscheidende knackpunkt ... hätte nicht gedacht das das so Funktioniert Ich danke dir sehr für die mühe die du dir gemacht hast ... VIELEN DANK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|