Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  replace component

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co.
  
KISTERS 3DViewStation: Germar Nikol - Der Visionär hinter der Erfolgsgeschichte, eine Pressemitteilung
Autor Thema:  replace component (2807 mal gelesen)
hasim
Mitglied



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

Beiträge: 14
Registriert: 06.05.2004

erstellt am: 06. Mai. 2004 13:00    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 bin gerade dran ein Makro zu schreiben, um Componenten in einem Product zu ersetzen. Ich lese die Namen der Componenten die ersetzt und die Namen der neuen Componenten aus einem Textfile. Das klappt auch schon, wenn ich nur ein Product habe. Mein Problem ist jetzt nur wenn ich mehrer Producte und Unterproducte habe.

Mein Code sieht bis jetzt so aus:

Language="VBSCRIPT"

Sub CATMain()

Dim Datei As File
Set Datei = Catia.FileSystem.GetFile ("C:\replace.txt")

Dim DStrom As TextStream
Set DStrom = Datei.OpenAsTextStream ("ForReading")
Dim Zeile As CSTBSTR

Dim productDocument1 As Document
Set productDocument1 = CATIA.ActiveDocument

Dim product1 As Product
Set product1 = productDocument1.Product

Dim products1 As Products
Set products1 = product1.Products

Dim product2 As Product

Do While Not (DStrom.AtEndOfStream)
Zeile = DStrom.ReadLine
If Not (DStrom.AtEndOfStream) Then
Set product2 = products1.Item(Zeile+".1")
Zeile = DStrom.ReadLine
Set Nothing1 = products1.ReplaceComponentproduct2, "C:\"+Zeile, True)
End If
Loop

DStrom.Close

End Sub

Wäre nett, wenn ihr mir helfen könnt.

Vielen Danke
Hasim

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

Jasiu
Mitglied
Ing. Maschinenbau


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

Beiträge: 140
Registriert: 04.04.2003

V5R11
2GB RAM
HPc3750
Unix

erstellt am: 28. Jun. 2004 08:57    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 hasim 10 Unities + Antwort hilfreich

Hi,
mit dieser FKT kannst du den Baum auslesen. Du müsstest es mit dem Textfile koppeln. Also erst Namen finden, diesen in dem Textfile suchen und ersetzen und speichern. Falls su eine Lösung hast lass diese mich wissen.
Jan

------------------

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

Jasiu
Mitglied
Ing. Maschinenbau


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

Beiträge: 140
Registriert: 04.04.2003

V5R11
2GB RAM
HPc3750
Unix

erstellt am: 28. Jun. 2004 09:00    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 hasim 10 Unities + Antwort hilfreich

Function Name(iProduct As Product, j As Integer, dSubString As String) As String

Dim oSubProducts As Product
Dim i As Integer
Dim oLevel as String
 
For i = 1 To iProduct.Products.Count
        Set oSubProducts = iProduct.Products.Item(i)
        oSubProducts.ActivateDefaultShape      'set the node to active
        oSubProducts.ApplyWorkMode DESIGN_MODE 'load the componet into the design mode
   
dSubString = dSubString & chr(9) & oSubProducts.Name

        j = j+1
   
If iProduct.Products.Count > 0 then

  oLevel = Name(oSubProducts, j, dSubString)

End If

Next
   
Name = dSubString
     
End Function

------------------

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

hasim
Mitglied



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

Beiträge: 14
Registriert: 06.05.2004

erstellt am: 29. Jun. 2004 10:08    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,

ich habe jetzt einen anderen Weg gefunden.

ich suche zuerst das Bauteil, das ich erstzen möchte (überall im Produkt)

selection1.Search "Name='"+readString+"*',all"

dann speichere ich den Namen des gedundenen Bauteil unter einer Variablen name ab.

name  = selection1.Item(1).Value.Name

Mit dem nächsten Befehl bekomme ich den Namen des Unterproduktes in dem meine Selektion sich befindet. Der Rest ist hoffentlich verständlich, ich lese halt noch den Namen des neuen Bauteils ein und fürhre dann den ReplaceComponent Befehl aus.

Set Parent_1 = selection1.Item(1).Value.Parent
Set product5 = Parent_1.Item(name)
readString = TextStr.ReadLine
Set Nothing1 = Parent_1.ReplaceComponent (product5, readString, True)

ich hoffe es hilft dir weiter.

Gruß
Hasim

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)2024 CAD.de | Impressum | Datenschutz