Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  CATIA V5 Programmierung
  Part im Product aktiv setzen und Makro ausführen

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.
  
Mit der Kisters 3DViewStation komplexeste 3D CAD-Daten beherrschen, eine Pressemitteilung
Autor Thema:  Part im Product aktiv setzen und Makro ausführen (3034 mal gelesen)
MrLimes
Mitglied
Technischer Sachbearbeiter


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

Beiträge: 14
Registriert: 15.09.2009

Visual Studio 2013 + Devexpress v16.2.5
CATIA V5-6 R24, SP4 HF 33

erstellt am: 19. Aug. 2010 12:19    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 häng seit ein paar Tagen etwas fest. Ich hab ein Makro gebastelt,
welches mir auf allen Linien - Ebenen und Punkte erstellt. Das Makro
funktioniert schon fehlerfrei in einem Part. Jetz wollte ich das Makro umschreiben,
damit es sich alle Linien aus einem Product sucht und bearbeitet. Ich
hab die folgenden Möglichkeiten probiert.

1. Die Suche auf ein Product umgeschrieben:

Code:
  Dim productDocument1 As ProductDocument
        Set productDocument1 = CATIA.ActiveDocument

        Dim selection1 As Selection
        Set selection1 = productDocument1.Selection



Hierbei kommt es aber weiter unten zu einem Fehler:
Set reference1 = document1.part.CreateReferenceFromObject(selection1.Item(j).Value)

2. Mit dem MakroRecorder hab ichs auch schon versucht. Die interessanten Dinge
  läßt er unter den Tisch fallen.

3. Rekursive-Suche inkl. Part/Product-Prüfung hab ich auch schon versucht...aber
  da komm ich nicht drauf - wie ich das part aktiv setze. Da motzt er auch rum.

Ok würd mich freuen wenn mir jemand einen Tip geben könnte...vielen Dank

Hier noch der Code von dem eigentlichen Makro:

Code:

Sub CATMain()

Dim document1 As Document
Dim Status, oSelection, oSelectedElement, oDoc, oInstance, oRef, TheSPAWorkbench, TheMeasurable As Object
Dim InputObjectType(0)
Dim bType As Boolean
Dim dLength As Double

Set document1 = CATIA.ActiveDocument
     
InputObjectType(0) = "HybridShape"

If TypeName(CATIA.ActiveDocument) = "ProductDocument" Then
  bType = 0
ElseIf TypeName(CATIA.ActiveDocument) = "PartDocument" Then
  bType = 1
Else
  MsgBox "The Root is not a CATPart or a CATProduct !    ", 48, "Wrong FileType of opend Document"
  Exit Sub
End If

Set oSelection = CATIA.ActiveDocument.Selection
oSelection.Clear

        Dim AnzahlSelection As Long
               
        Dim partDocument1 As PartDocument
        Set partDocument1 = CATIA.ActiveDocument
       
        Dim selection1 As Selection
        Set selection1 = partDocument1.Selection
       
        selection1.Search "Name=*Line_*,all"
       
        AnzahlSelection = selection1.Count
       
Dim j As Long

For j = 1 To AnzahlSelection                                                         
    Dim reference1 As Reference
    Set reference1 = document1.part.CreateReferenceFromObject(selection1.Item(j).Value)           
    Dim hybridShapeFactory1 As HybridShapeFactory
    Dim hybridShapePointOnCurve1 As HybridShapePointOnCurve
   
    Set hybridShapeFactory1 = document1.part.HybridShapeFactory
    Set hybridShapePointOnCurve1 =  hybridShapeFactory1.AddNewPointOnCurveFromPercent(reference1, 0, False)
   
    Dim hybridBodies1 As HybridBodies
    Set hybridBodies1 = document1.part.HybridBodies
           
    Dim hybridBody1 As HybridBody
    Set hybridBody1 = hybridBodies1.Add()
       
    hybridBody1.AppendHybridShape hybridShapePointOnCurve1
    hybridBody1.Name = "Punkt" & j
...


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

RSchulz
Ehrenmitglied V.I.P. h.c.
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 19. Aug. 2010 12: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 Nur für MrLimes 10 Unities + Antwort hilfreich

Hallo,
ich habe das immer folgender Maßen gelöst...

z.B.

Code:

Dim TmpNode as Product
Dim MainPRD as Product
Dim TmpPartDoc as PartDocument
Dim TmpPart as Part
Dim ActiveWindow as ProductDocument
Dim TmpSelection as Selection

set ActiveWindow = CATIA.ActiveDocument
set MainPRD = ActiveWindow.Product

For Each TmpNode In MainPRD.Products
    set TmpPartDoc = tmpnode.ReferenceProduct.Parent
    Set TmpPart = TmpPartDoc.Part

    TmpSelection.Add TmpPart
    CATIA.StartWorkbench ("Part Design")

...
    Code
...

    TmpSelection.Clear
    TmpSelection.Add MainPrd
    CATIA.StartWorkbench ("Assembly Design")
next


Zur Info... Das habe ich jetzt schnell runter getippt. Es kann daher sein, dass noch etwas fehlt oder ich einen Tippfehler drin habe. Hab es aber überflogen und es sollte so passen.

[Edit] Natürlich habe ich direkt nach dem posten einen Schreibfehler entdeckt   [/Edit]

------------------
MFG
Rick Schulz
           Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

[Diese Nachricht wurde von RSchulz am 19. Aug. 2010 editiert.]

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

DanielFr.
Ehrenmitglied V.I.P. h.c.
Manager


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

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: 19. Aug. 2010 13: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 MrLimes 10 Unities + Antwort hilfreich

Hallo,

diese Zeile

Code:
Set reference1 = document1.part.CreateReferenceFromObject(selection1.Item(j).Value)

kann nur ein Fehler auslösen. Für den Fall das dein Root Dokument (also das Active Dokument) ein Produkt ist, gibt es in diesem keine Eigenschaft "Part". Du musst dich über die Selektion und dessen Eltern (.Parent) zu deinem Part Dokument durchhangeln. Hier mal ein kleines Beispiel.

Code:
Sub CATMain()

    Dim intDocObj As Document
    Dim intPartObj As Part
    Dim intSelObj As Selection
    Dim bType As Boolean
    Dim intLineObj As Object
    Dim i As Integer
    Dim intObjRef As Reference
    Dim hybridShapeFactory1 As HybridShapeFactory
    Dim hybridShapePointOnCurve1 As HybridShapePointOnCurve
    Dim hybridBodies1 As HybridBodies
    Dim hybridBody1 As HybridBody

    Set intDocObj = CATIA.ActiveDocument

    If TypeName(intDocObj) = "ProductDocument" Then
      bType = 0
    ElseIf TypeName(intDocObj) = "PartDocument" Then
      bType = 1
    Else
      MsgBox "The Root is not a CATPart or a CATProduct !    ", 48, "Wrong FileType of opend Document"
      Exit Sub
    End If

    Set intSelObj = intDocObj.Selection
    intSelObj.Clear
     
    intSelObj.Search "CATPrtSearch.Line,all"
   
    If intSelObj.Count = 0 Then
        MsgBox "No lines found in Document", vbExclamation, "CANCEL"
        Exit Sub
    End If

    For i = 1 To intSelObj.Count
        Set intLineObj = intSelObj.Item(i).Value
        'HIER WIRD DAS PART-OBJEKT VOM SELEKTIERTEN OBJEKT GEHOLT.
        'DAMIT BIST DU UNABHÄNGIG VON ROOT-DOCUMENT TYP
        Set intPartObj = intLineObj.Parent.Parent.Parent.Parent
        Set intObjRef = intPartObj.CreateReferenceFromObject(intLineObj)
        Set hybridShapeFactory1 = intPartObj.HybridShapeFactory
        Set hybridShapePointOnCurve1 = hybridShapeFactory1.AddNewPointOnCurveFromPercent(intObjRef, 0.5, False)
        Set hybridBodies1 = intPartObj.HybridBodies
        Set hybridBody1 = hybridBodies1.Add()
        hybridBody1.AppendHybridShape hybridShapePointOnCurve1
        hybridBody1.Name = "Punkt" & i
       
        intPartObj.Update
    Next
   
End Sub


------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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

MrLimes
Mitglied
Technischer Sachbearbeiter


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

Beiträge: 14
Registriert: 15.09.2009

Visual Studio 2013 + Devexpress v16.2.5
CATIA V5-6 R24, SP4 HF 33

erstellt am: 19. Aug. 2010 16: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

Hi ihr beiden - vielen Dank...ich glaub hiermit is meine Wochenendbeschäftigung auch klar.

@RSchulz:
Irgendwie bekomm ich da immer die Meldung "Typ missmatch" in der folgenden Zeile:

Code:
Set TmpPartDoc = TmpNode.ReferenceProduct.Parent

hier mal der Teil...mit Erweiterung...
Code:
For Each TmpNode In MainPRD.Products
    Set TmpPartDoc = TmpNode.ReferenceProduct.Parent
    Set TmpPart = TmpPartDoc.part
    Set TmpSelection = CATIA.ActiveDocument.Selection 'die Zeile hab ich noch hinzugefügt...war ihm ohne net so recht...
        TmpSelection.Add TmpPart
    CATIA.StartWorkbench ("Part Design")


@DanielFr.
Hi Daniel...also bei deinem Teil bekomm ich die gleiche Meldung "Type missmatch"

Code:
Set intPartObj = intLineObj.Parent.Parent.Parent.Parent

hier mal die angezeigten Typen:

intPartObj --> Part
intLineObj --> Object/HybridShapeInstance

Dieses Parent.Parent.Parent. usw ergibt bei mir immer die gleiche Linie...
Habs mal versucht über die Local-Anzeige zu verfolgen...aber ist wirklich immer die
Linie selbst.

intPartObj als Variant wird akzeptiert...aber dann spinnt er an der folgenden Stelle:

Code:
Set intObjRef = intPartObj.CreateReferenceFromObject(intLineObj)

Meldung: "Object doesn`t support this property or method"

Vielen Dank 

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

DanielFr.
Ehrenmitglied V.I.P. h.c.
Manager


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

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: 20. Aug. 2010 07: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 MrLimes 10 Unities + Antwort hilfreich

Guten Morgen,

lade doch mal ein Beispiel deines Produkts (z.B. mit zwei Parts und den Linien) hier hoch. Dann schau ich mir das nochmal an 

------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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

MrLimes
Mitglied
Technischer Sachbearbeiter


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

Beiträge: 14
Registriert: 15.09.2009

Visual Studio 2013 + Devexpress v16.2.5
CATIA V5-6 R24, SP4 HF 33

erstellt am: 20. Aug. 2010 12: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


Beispiel.JPG

 
Hi Daniel,

hochladen kann ich leider nicht...da bekomm ich eins auf die Mütze.
Aber ich hab selbst versucht euro Zeilen zu verstehen...

Code:
Sub SelectionNames()
Dim UserSelektion As Selection

Set UserSelektion = CATIA.ActiveDocument.Selection
    If UserSelektion.Count > 0 Then
    For I = 1 To UserSelektion.Count
    MsgBox (UserSelektion.Item(I).Value.Name)
    MsgBox (UserSelektion.Item(I).Value.Parent.Name)
    MsgBox (UserSelektion.Item(I).Value.Parent.Parent.Name)
    MsgBox (UserSelektion.Item(I).Value.Parent.Parent.Parent.Name)
   
    MsgBox (UserSelektion.Item(I).Document.FullName)
    MsgBox (UserSelektion.Item(I).Document.Name)
    MsgBox (UserSelektion.Item(I).Document.Path)
    Next
    End If
    UserSelektion.Clear 
End Sub


Deine Lösung hat somit funktioniert...aber sobald ich das
Element aus dem Geo2.2 (siehe Abbildung) selektiere und
das Makro laufen lasse wird mir nur "Line" ausgegeben.

Die Line (Geo2.2) bezieht sich irgendwie auf die Linie (Geo2.1/Geometry) - gibts da vielleicht die Möglichkeit
sich die Referenz ausgeben zu lassen? Im Geo2.2 sind
Schweißnähte (Welding lines) abgelegt.

Ich hoffe die Infos bringen etwas...wäre echt klasse
wenn das irgendwie klappen würde.

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

DanielFr.
Ehrenmitglied V.I.P. h.c.
Manager


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

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: 20. Aug. 2010 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 Nur für MrLimes 10 Unities + Antwort hilfreich

Hallo  ,

ok die Welding Lines sind ja auch keine "normalen" Linien. Ich kann es hier nicht testen da ich keine Lizenz habe. Werde aber mal nachschauen wenn ich daheim bin und mich dann nochmal an dieser Stelle melden

------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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