Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Assembly durch ExcelListe einfärben

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:  Assembly durch ExcelListe einfärben (1508 mal gelesen)
ThomasTeoma
Mitglied
Konstrukteur


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

Beiträge: 27
Registriert: 13.03.2015

Win7 Enterprise 64Bit
Intel Xeon CPU E5-1620 3,6GHz
32GB RAM

erstellt am: 23. Mrz. 2015 15:14    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

Halli Hallo,

Ich habe wieder einaml ein Problem..

Es geht um Folgendes Problem: Ich habe eine DMU mit 16000 Teilen(StandarParts sind da natürlich dabei  =D )
mein Chef möchte nun, dass die gesamte DMU standartmäßig Rot und Transparent ist, also nicht das oberste Product, sondern die PartBodys jedes einzelnen Teiles. mit Search

jetzt kommt die Exceltabelle ins Spiel, es ist eine Statustabelle (In Work, Release in Progress, Released, eventuell kommt noch ein weiterer Punkt dazu)

Mann kan sich jetzt eventuell schon denken was ich will.. 

Also: die Parts der Assy sollen je nach Status eingefärbt werden: rot für in Work; gelb für Release in Progress; grün für Released..

Also ablaufen sollte das ganze dann so:

Makro beginnt mit ersten Part, sucht sich die PartNumber raus, sucht diese PartNumber in der Excel Liste, schaut welchen status das Bauteil hat und färbt entsprechend das Bauteil ein..

Ich habe jetzt schon ein bisschen im Internet herum gesucht,
hab aber leider nichts passendes gefunden, bzw dass hab ich gefunden werd aber nicht ganz schlau wie es funktioniert (hier wird jedes part in einem fenster geöffnet und dan wieder geschlossen, dazwischen wäre wohl eine bearbeitung):

Set sel1= CATIA.ActiveDocument.Selection

Set Products1 = CATIA.ActiveDocument.Product.Products
for i=1 to Products1.Count
Set PART_O = Products1.Item(i)
sel1.Search("Name='"&PART_O.PartNumber&"';all")
CATIA.StartCommand ("Open In New Window")

Set sel2= CATIA.ActiveDocument.Selection

sel2.Add CATIA.ActiveDocument.Product

CATIA.ActiveDocument.Close
CATIA.Windows.Item(1).Activate
CATIA.ActiveDocument.Selection.Clear
next     

Das zweite ist dann wie kann ich Catia in excel suchen lassen wegen dem Einfärben..

Wäre echt toll wenn mir wer weiter helfen kann

Lg
Thomas =)

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: 23. Mrz. 2015 20:20    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 ThomasTeoma 10 Unities + Antwort hilfreich

Servus
Wie man einen Wert in Excel sucht, findest du ggf besser in einem Excel-VBA-Forum (siehe zB hier).
Sollen wirklich die Mainbodies des Parts eingefärt werden oder die Instanz (ich würde ungern mir einem rot/transparenten Part arbeiten (Aktuallisierungsstatus schlecht zu erkennen))?

Gruß
Bernd

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

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

ThomasTeoma
Mitglied
Konstrukteur


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

Beiträge: 27
Registriert: 13.03.2015

Win7 Enterprise 64Bit
Intel Xeon CPU E5-1620 3,6GHz
32GB RAM

erstellt am: 24. Mrz. 2015 08: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

Jo, hallo..
ja und wie greift dan Catia auf das Excel file zu? oder brauch ich ein Makro im Makro? =D
Das mit deim Aktualisierungsstand ist kein Problem, es werden generell keine gravierenden Änderungen mehr getätigt, und aus Speicherplatz gründen, werde ich wohl die Parts als "Dumme " Solids speichern, dan ist das mit dem Up to date eh hinfällig 
Wegen dem Einfärben, ist es mir glaub ich eh egal, ob PartPody oder der Part.. momentan sind in der DMU halt die PartBodys eingefärbt..

Ich weiß nicht ob ich diese aufgabe schaffe =D =(

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: 24. Mrz. 2015 08:53    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 ThomasTeoma 10 Unities + Antwort hilfreich

Servus
Schon mal im Forum nach Excel gesucht?
zB hier findest du wie du auf Excel von Catia aus zugreifst (wie allgemein in VBA auf andere Anwendung zugreifen).

Gruß
Bernd

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

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

ThomasTeoma
Mitglied
Konstrukteur


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

Beiträge: 27
Registriert: 13.03.2015

Win7 Enterprise 64Bit
Intel Xeon CPU E5-1620 3,6GHz
32GB RAM

erstellt am: 24. Mrz. 2015 10:51    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

soo, ich habe jetzt mal angefangen, jetzt steck ich aber leider wirklich fest =(

ich hoffe meine ansatz ist mal nicht sho schlecht?
habe mich entschieden, die excel als "Master" zu nehmen, in der Exceltabelle hab ich Spalte C so bearbeitet, das die partnummer drinne steht wenn das Teil frei gegeben ist, wenn er nicht freigegeben ist steht nix drinnen..
ich will also nur noch alle werte in spalte C im Catia suchen und grün färben..

Sub CATMain()

'Open Excel
Set oExcel = CreateObject("Excel.Application")
oExcel.Visible = True
Set oWorkbook = oExcel.Workbooks.Open("C:\Users\thstehr\Desktop\A350WL_1000_Tracker.xlsm", , True)

'copy value
iRow = 4
Do While Not IsEmpty(Cells(iRow, 3))
    PartNr = Cells(iRow, 1).Value
iRow = iRow + 1

'Search for Part in Catia
Set productDocument1 = CATIA.ActiveDocument
Set selection1 = productDocument1.Selection
selection1.Search "Name=PartNr,all"


'color the part
???
???


Loop  'next part number from excel

End Sub


LG
Thomas

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

ptit.tom
Mitglied
CAD-Berater


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

Beiträge: 114
Registriert: 11.02.2005

win10, CATIA R19 bis R30

erstellt am: 24. Mrz. 2015 14: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 Nur für ThomasTeoma 10 Unities + Antwort hilfreich

Guten Tag,

Die Suche in CATIA ist nicht besonders schnell, auf jeden Fall langsamer als die Excel Suche. Ich würde also anders vorgehen und eine Rekursive Funktion verwenden:
- Prüfen, ob das aktuelle Element ein Part oder ein Product ist
- Wenn Part:
  * in Excel nach dem PartNumber suchen (mit der Methode .Match() ) und den Status lesen
  * Farbe zuweisen
- Wenn Product:
  * Kinder bearbeiten.

Hier ein Anfang... Ich habe es nicht geprüft und es fehlt noch was:

Code:
Public oSel As Selection

Sub CATMain()
    Set oSel = CATIA.ActiveDocument.Selection
    Dim oProd As Product
    Set oProd = CATIA.ActiveDocument.Product
   
    'Excel öffnen...
   
    checkProductNode oProd

End Sub

Sub checkProductNode(oProd As Product)
    Dim I As Integer
    Dim Status As String
   
    For I = 1 To cProd.Products
        If IsItAPart(cProd.Products.Item(I)) = True Then
            'Get Status in Excel
            Status = GetStatus(oProd)
            'Set Status
            SetColor oProd, Status
        Else
            checkProductNode oProd.Products.Item(I)
        End If
    Next
   
End Sub

Function IsItAPart(oProd As Product) As Boolean 'True if CATpart, False if something else
    Dim oPart As Part
    Dim RefDoc As PartDocument
   
    On Error Resume Next
    Set RefDoc = oProd.ReferenceProduct.Parent
    Set oPart = RefDoc.Part
    If Err.Number <> 0 Then
        'Product
        IsItAPart = False
    Else
        IsItAPart = True
    End If
    Err.Clear
    On Error GoTo 0
End Function

Function GetStatus(oProd As Product) As String
   Dim arr As Variant
   Dim iRow As Integer
   arr = oExcel.Range("A1:A12") 'also, wo die PartNumber sind
   On Error Resume Next
   iRow = oExcel.Match(oProd.PartNumber, arr, 0)
   If Err.Number > 0 Then
      'MsgBox "Nicht gefunden"
   Else
      GetStatus = oExcel.Cells(iRow, 2).Value 'wenn man die Zeilenummer hat, kann man den Status lesen...
      'MsgBox "An " & iRow & " .Stelle gefunden" & vbNewLine & "Status: " & Status
   End If
End Function

Sub SetColor(oProd As Product, Status As String)
    Dim oVisProp As VisPropertySet
    Set oVisProp = ExportAllMidSurfaces.oSel.VisProperties
   
    Dim oPart As Part
    Set oPart = oProd.ReferenceProduct.Parent.Part
    Dim oPartBody As Body
    Set oPartBody = oPart.MainBody
   
    oSel.Clear
    oSel.Add oPartBody
   
    If Status = "Released" Then
        oVisProp.SetRealColor 0, 255, 0
    ElseIf Status = "In Work" Then
        oVisProp.SetRealColor 255, 255, 0
    Else
        'nichts
    End If
    oSel.Clear
End Sub


[Diese Nachricht wurde von ptit.tom am 24. Mrz. 2015 editiert.]

[Diese Nachricht wurde von ptit.tom am 24. Mrz. 2015 editiert.]

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