Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Catproduct und catpart aus excel umbenennen

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:  Catproduct und catpart aus excel umbenennen (2765 mal gelesen)
veniceline
Mitglied
Konstrukteur

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

Beiträge: 6
Registriert: 17.07.2010

erstellt am: 17. Jul. 2010 18:46    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 habe ein Makro in Excel laufen, mit diesem kann ich verschiedene Punkte von Excel nach Catia V5 laden, aus der Excel Tabelle, worauf Catia selbständig die entsprechende Geometrie erzeugt.

Das Makro wird in Excel gestartet und nicht in Catia.
Das funktioniert auch alles ganz wunderbar.
Jetzt möchte ich das selbe Makro erweitern und veranlassen das das CatProdukt mit seinen angehängten Catparts umbenannt wird, nach dem die neue Geometrie erzeugt wurde. Die Umbenennung soll temporär erfolgen ohne eine save us funtion etc...
Praktisch soll nur die Umbenennung im aktiven Catiafenster passieren ohne ein save.

Wie das Produkt + die 3 Parts benannt werden steht in 2 verschiedenen Spalten im Excel, dort ist die Benennung hinterlegt.

Das Makro im Excel funktioniert so, das es die Werte aus der vorher aktivierten Zeile liest (ansonsten Fehlermeldung).

ich bin nicht der VBA *****, deswegen hier mein Posting...
vielleicht kann mir jemand hier helfen, hab schon gesucht, es gibt einiges, aber nichts passendes für mich gefunden.
vielen dank schon einmal .))

hier noch codeschnipsel aus meinem makro, damit man weis wie man ansetzen könnte
die umbenennung soll wie gesagt mit diesem makro erfolgen, nicht durch ein zweites


Code:

Dim version, makroname
    Sub Erz_teil()
    version = "0.01"
    makroname = "Erz_teil"
    On Error Resume Next
   
   
  'CONNECTION WITH CATIA V5
    Set Catia = GetObject(, "CATIA.Application")
    Set activedoc = Catia.ActiveDocument
    If Err.Number <> 0 Then
        MsgBox "Es ist kein CATIA Dokument geöffnet", 16, makroname + " " + version
        Exit Function
    End If
    If TypeName(activedoc) <> "ProductDocument" Then
        MsgBox "Es ist kein .CATProduct geöffnet", 16, makroname + " " + version
        Exit Function
    End If
    On Error GoTo 0
'check ob eingelesenes und aktives Produkt ein Part mit der Kennung "VERLAUFNEU" hat
    Set oProd = activedoc.Product
    Set oColl = oProd.Products
    n = oColl.Count
    For i = 1 To n
        Set aktPart = oColl.Item(i)
        Set oParams = aktPart.Parameters
        On Error Resume Next
        Set myParam = oParams.Item("Kennung")
        If Err.Number <> 0 Then
            sKleitung = "NOK"
        Else
            On Error GoTo 0
            If myParam.Value = "VERLAUFNEU" Then
                Set oPartLeitung = aktPart
                sKleitung = "OK"
                Exit For
            End If
        End If
    Next
    If sKleitung <> "OK" Then
        MsgBox "Kein aktuelles Catiafile gefunden oder veraltet", vbCritical
        Exit Function
    End If
' parameter aus excel bestimmen und nach CATIA schreiben
    ' lesen der aktuellen Zeile
    If Selection.Rows.Count <> 1 Then
        MsgBox "Bitte eine Zeile selektieren", vbOKOnly
        Exit Function
    End If
    aktZeile = Selection.Row
    ' setzen der Parameter
    ' setzen des Parameters Rahmencode
    sValue = Cells(aktZeile, 52).Value
    ' wenn Spannung L (fuer Luft) beinhaltet ist der bock schmal
    If InStr(1, sValue, "L", vbBinaryCompare) Then
        sRahmenc = "L"
    Else
        sRahmenc = "S"
    End If
       
    Err.Clear
    oParams.Item("Spannungscode").Value = sRahmenc
    If Err.Number <> 0 Then
        MsgBox "Fehler beim Setzen des Parameters Spannungscode", vbCritical
    End If
    Err.Clear
    ' setzen des Parameters Winkelcode
    sValue = Cells(aktZeile, 41).Value
    Err.Clear
    oParams.Item("TWinkelcode").Value = sValue
    If Err.Number <> 0 Then
        MsgBox "Fehler beim Setzen des Parameters Winkelcode", vbCritical
    End If
    Err.Clear
    ' setzen des Parameters x-Schluessel
    dblValue = Cells(aktZeile, 46).Value
    Err.Clear
    oParams.Item("X-Position_Schluessel").Value = dblValue
    If Err.Number <> 0 Then
        MsgBox "Fehler beim Setzen des Parameters X-Position_Schluessel", vbCritical
    End If
    Err.Clear

' update catia
    On Error Resume Next
    activedoc.Product.Update
' lesen des laengen wertes aus dem catia modell
    On Error GoTo 0
    ' lesen des Parameters Gesamtlaenge
    Err.Clear
    dblValue = oParams.Item("Gesamtlaenge").Value
    Cells(aktZeile, 64).Value = dblValue
    If Err.Number <> 0 Then
        MsgBox "Fehler beim Lesen der Gesamtlaenge ", vbCritical
    End If
    Err.Clear
   
   
    '+++++++++++++++++++++++++++++++++++++++++++++
    ' Abschluss an Anwender
    MsgBox "Das Makro ist nun beendet", vbInformation, makroname + " " + version

    End Function
Function setCATParameter(sParmnam)


End Function



das makro funktioniert so, wie gesagt möchte es erweitern wie oben beschrieben.

es soll immer nur ein Product und 3 dazugehörige Parts umbenannt werden.

danke!

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 18. Jul. 2010 09:24    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 veniceline 10 Unities + Antwort hilfreich

Hallo Veniceline,

wo das Kode genau reinpasst (wo du die Name am einfachsten bestimmen kannst), kannst nur du entscheiden.
Umbenennen geht wie folgt:
ActiveDoc, PartNumber: Catia.ActiveDocument.Product.PartNumber = "Neue_Name"
Part unter ActiveDoc, PartNumber:ActDoc.Products.Item(i).ReferenceProduct.Parent.Product.PartNumber = "Neue_Name_Part_" & cstr(i)
Part unter ActiveDoc, InstanceName:ActDoc.Products.Item(i).Name = "InstanceName." & cstr(i)

wobei letzteres die Links zwischen den Parts/Products kaputt macht, es sei den es wird aus CatScript ausgeführt.

Ich hoffe, es hilft dir weiter.

Gruß,
Zoltán

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

veniceline
Mitglied
Konstrukteur

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

Beiträge: 6
Registriert: 17.07.2010

erstellt am: 19. Jul. 2010 19:58    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

danke zoltan,

wenn ich

Code:
ActiveDoc, PartNumber: Catia.ActiveDocument.Product.PartNumber = "Neue_Name"
Part unter ActiveDoc, PartNumber:ActDoc.Products.Item(i).ReferenceProduct.Parent.Product.PartNumber = "Neue_Name_Part_" & cstr(i)
Part unter ActiveDoc, InstanceName:ActDoc.Products.Item(i).Name = "InstanceName." & cstr(i)

in mein Excel Visual Basic Makro kopiere und will es dann ausführen, springt der Debugger auf und meckert, das der Code nicht i.O. ist

Fehler beim Kompilieren:
Sub, Function oder Property erwartet

ein anderes mal sagte er Doppeldeklarationen sind nicht erlaubt...

irgendwas hab ich wohl übesehen, aber danke dir, vielleicht weis ja noch wer hier einen guten Tipp 

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: 19. Jul. 2010 20:17    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 veniceline 10 Unities + Antwort hilfreich

Servus
Das kann ja nicht funktionieren, war ja nur eine kurze Vorstellung der Grundbefehle.
Bei dir könnte es so aussehen (nicht getestet):
Code:
...Set oProd = activedoc.Product
oProd.PartNumber = "Neue_Name"
Set oColl = oProd.Products
n = oColl.Count
For i = 1 To n
      Set aktPart = oColl.Item(i)
      oColl.ReferenceProduct.Parent.Product.PartNumber = "Neue_Name_Part_" ....

Oder je nach dem wo du die Parts und Products umbenennen willst.

Gruß
Bernd

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

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

veniceline
Mitglied
Konstrukteur

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

Beiträge: 6
Registriert: 17.07.2010

erstellt am: 19. Jul. 2010 20:31    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 Bernd,

erstmal danke, ich probiere es nochmal aus und melde mich dann hier wieder^^

Du fragst wo ich die Parts und Products umbenennen will?

Das tue ich immer im aktiven Catia Fenster im Hintergrund von Excel. Dort muss ein Product mit 3 angehangenen Parts umbenannt werden. Der Name ist dann immer der gleiche und unterscheidet sich beispielsweise nur durch ein "NeuerName_1" "NeuerName_2" etc..., wobei der Wert von "NeuerName" aus einer aktiven Excelspalte gelesen werden soll.

In Catia selbst soll im aktiven Fenster dann die neue Namesdeklaration wie oben beschrieben stehen - temporär - ohne ein absichern der Namen. Das wird dann manuell erledigt.
Ich möchte mir praktisch ersparen die neuen Namen manuell in Catia unter "Eigenschaften" von Product und Parts per Hand reinzutippseln^^


ich probiere das mal aus und melde mich
vielen dank schon ein mal im Voraus

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

veniceline
Mitglied
Konstrukteur

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

Beiträge: 6
Registriert: 17.07.2010

erstellt am: 20. Jul. 2010 20:30    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 bernd

funktionierte fast^^

Next i hast vergessen oder einfach Next wegen der For Schleife..
und er benennt nur das produkt um, nicht die parts

ich probiere noch bisserl rum

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: 20. Jul. 2010 20:50    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 veniceline 10 Unities + Antwort hilfreich

Servus
[klugschei**modus]Nee, hatte ich nicht vergessen. Deshalb auch "..." am Ende, da es in den bestehenden Code eingefügt wird[/klugschei**modus]

Gruß
Bernd

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

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

veniceline
Mitglied
Konstrukteur

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

Beiträge: 6
Registriert: 17.07.2010

erstellt am: 24. Jul. 2010 12: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

habe es jetzt über eine rule gemacht
funzt

danke leutz 

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