Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  GeoSet eines Parts im Product kopieren

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  GeoSet eines Parts im Product kopieren (1092 mal gelesen)
Tweety79
Mitglied
Entwicklung Automotive


Sehen Sie sich das Profil von Tweety79 an!   Senden Sie eine Private Message an Tweety79  Schreiben Sie einen Gästebucheintrag für Tweety79

Beiträge: 269
Registriert: 09.12.2007

WPF, VBA, CATScript, Access

erstellt am: 22. Apr. 2016 15:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,
ich möchte folgendes machen in vb.NET:

-in einem Product habe ich x Parts
-in einem Part mit dem Namen (keine Ahnung)befindet sich ein GeoSet mit dem Namen ("TOLL")
- dieses Geoset möchte ich innerhalb des Parts in dem es sich befindet, kopieren und nochmal einfügen

Mein Code:


        Dim Sel = myProductDoc.Selection
        Sel.Clear()
        Dim Docs As MECMOD.PartDocument
        Docs = Sel.Item("keine Ahnung")
        myModell = Sel.Part
        myGeoSet = myAdaptermodell.HybridBodies
        myGeoSet1 = myGeoSet.Item("TOLL")
        Sel.Add(myGeoSet1)
        myGeoSet2 = myGeoSet1.Item("TOLL")
        myAdaptermodell.UpdateObject(myGeoSet2)

Ich bekomme eine Fehlermeldung in der Zeile:

        Docs = Sel.Item("keine Ahnung")

mit der Begründung: Item is not Memeber of Product.
Ich habe aber beim Coding die Möglichkeit Product.Item zu wählen.

Grüße

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 22. Apr. 2016 16:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tweety79 10 Unities + Antwort hilfreich

Servus
Beim ansprechen der Einzelteile in einer Baugruppe musst du den Exemplarnamen verwenden (zB "Keine Ahnung.1").
Oder dann gleich auf das PartDokument zugreifen.
zB (Code in VBA (einfach so runter geschrieben)):
Code:
sub CatMain()

dim myPartDocument as PartDocument
dim oSel as Selection
dim myPart as Part
dim myHybridBody as HybridBody

Set myPartDocument = catia.documents.item("Keine Ahnung.CATPart")
Set myPart = myPartDocument.Part
Set oSel = myPartDocument.Selection
Set myHybridBody = myPart.HybridBodies.Item("Toll")

osel.clear
osel.add myHybridBody
osel.copy
osel.clear
osel.add myPart
osel.Paste

end sub


Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Tweety79
Mitglied
Entwicklung Automotive


Sehen Sie sich das Profil von Tweety79 an!   Senden Sie eine Private Message an Tweety79  Schreiben Sie einen Gästebucheintrag für Tweety79

Beiträge: 269
Registriert: 09.12.2007

WPF, VBA, CATScript, Access

erstellt am: 25. Apr. 2016 10:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Bernd,

für vb.NET musste ich das ein wenig anpassen ( set ... entfällt ).

        Dim myPartDocument As MECMOD.PartDocument
        Dim oSel As INFITF.Selection
        Dim myPart As MECMOD.Part
        Dim myHybridBody As MECMOD.HybridBodies

        myPartDocument = myCatiaApp.Documents.Item("Name = Keine Ahnung, all")
        myPart = myPartDocument.Part
        oSel = myPartDocument.Selection
        myHybridBody = myPart.HybridBodies.Item("TOLL")

        oSel.Clear
        oSel.Add(myHybridBody)
        oSel.copy
        oSel.Clear
        oSel.Add(myPart)
        oSel.Paste()

Ich bleibe immer noch hängen an Zeile:

myPartDocument = myCatiaApp.Documents.Item("Name = Keine Ahnung, all")

Vielleich muss vor dem Zugriff auf das geoSet so was in der Art kommen?

myCatiaApp.ActiveDocument.Selection.Item(1).Value.ReferenceProduct.Parent

Gruß

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 25. Apr. 2016 10:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tweety79 10 Unities + Antwort hilfreich

Servus
Entweder du Suchst in deinem Rootproduct nach dem entsprechenden Part/Documente (osel.Search ...) (dies lässt sich sicher mit dem Makrorekoder (in VBA) aufnehemn und dann entsprechend für .NET ändern) oder du greift (wie in meinem Code) direkt mit dem Dateinamen auf das Dokument zu.
Der Suchstring "("Name = Keine Ahnung, all")" geht nur bei einer Selektion bei der Methode "Search".

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Tweety79
Mitglied
Entwicklung Automotive


Sehen Sie sich das Profil von Tweety79 an!   Senden Sie eine Private Message an Tweety79  Schreiben Sie einen Gästebucheintrag für Tweety79

Beiträge: 269
Registriert: 09.12.2007

WPF, VBA, CATScript, Access

erstellt am: 25. Apr. 2016 11:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Servus,

danke an alle.
Anbei Lösung für vb.NET, für alle, die das gleiche Problem haben

Dim myProductDoc As ProductStructureTypeLib.ProductDocument
myProductDoc = CatiaApplication.ActiveDocument

myProductDoc.Selection.Search("Name='Keine ahnung',all")      '"Keine ahnung" ist der Name des GeoSets eines Parts im Product
myProductDoc.Selection.Copy()
myProductDoc.Selection.Paste()

Gruß

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 25. Apr. 2016 11:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tweety79 10 Unities + Antwort hilfreich

Servus
Nur so mal als Hinweis:
Und was wird dabei kopiert? Was ist wenn mehrerer Objekte (ggf in verschiedenen Parts) 'keine Ahnung' heißen? Wo wird das kopierte Objekt eingefügt?

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Tweety79
Mitglied
Entwicklung Automotive


Sehen Sie sich das Profil von Tweety79 an!   Senden Sie eine Private Message an Tweety79  Schreiben Sie einen Gästebucheintrag für Tweety79

Beiträge: 269
Registriert: 09.12.2007

WPF, VBA, CATScript, Access

erstellt am: 26. Apr. 2016 12:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Bernd,

du hast schon recht mit dem, wenn mehreres gleich heisst, was denn nun kopiert wird. Das habe ich in mienem Beispiel zum Glück nicht.

Zwischen Copy und Paste kommt noch:

myProductDoc.Selection.Search("Name=Keine ahnung',all")

Dann wird das GeoSet auf die gleiche Stufe im Baum kopiert.

Was mir hier aber fehlt ist:

Das Geoset soll nicht 1x eingefügt werden sondern so oft wie es Parts in dem Product gibt.

Weißt du wie ich das schreibe?

Ich habe angefangen mit:

For i = 1 To myProductDoc.Product.Products.Count

Next

So bekomme ich die anzahl der Parts. Nur wie binde ich diese Anzahl in das Paste () mit ein?

Danke dir.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 26. Apr. 2016 13:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tweety79 10 Unities + Antwort hilfreich

Servus
Wie würdest du dies manuell machen? Ziel selektieren und einfügen. zB:
Code:
myProductDoc.Selection.Search("Name=Keine ahnung',all")
'GeoSet in Variable schreiben
MyGeoSet = myProductDoc.Selection.item2(1).Value

myProductDoc.Selection.Copy()

For i = 1 To myProductDoc.Product.Products.Count
  'Ziel GeoSet selekieren und Einfügen
    myProductDoc.Selection.Clear()
    myProductDoc.Selection.Add (MyGeoSet)
    myProductDoc.Selection.Paste()
Next


Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Tweety79
Mitglied
Entwicklung Automotive


Sehen Sie sich das Profil von Tweety79 an!   Senden Sie eine Private Message an Tweety79  Schreiben Sie einen Gästebucheintrag für Tweety79

Beiträge: 269
Registriert: 09.12.2007

WPF, VBA, CATScript, Access

erstellt am: 26. Apr. 2016 13:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Bernd,

ich fange gerade von Null an, deshlab ist nicht sofort alles für mich ersichtlich.

ich teste gleich, was deine Zeilen machen.

Selbst habe ich inzwischen so was gemacht, s. unten. Das kopiert das Set aber nur einmal und kommt nie zum Ende :-S.

    Function CopySet() As ProductStructureTypeLib.Product

        Dim myCatiaApp As INFITF.Application
        Dim myProduct As ProductStructureTypeLib.Product
        Dim myProductDoc As ProductStructureTypeLib.ProductDocument
        Dim myCount As Integer

        myCatiaApp = GetObject("", "CATIA.Application")
        myProductDoc = myCatiaApp.ActiveDocument
        myProduct = myProductDoc.Product

        myCount = myProductDoc.Product.Products.Count()

        myProductDoc.Selection.Search("Name=Keine ahnung',all")
        myProductDoc.Selection.Copy()
        myProductDoc.Selection.Search("Name='TOLL',all")
        myProductDoc.Selection.Paste()


        Do Until myProductDoc.Product.Products.Count() = myCount
        Loop

        myProduct = myProductDoc.Product

        Return myProduct
    End Function

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz