Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Refenz von Selektion finden

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:  Refenz von Selektion finden (1160 / mal gelesen)
moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 14. Mai. 2017 09:12    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
hab ein Makro aus dem Forum für eine Elementselektion.
Nun möchte in einer Produktstruktur ein Part auswählen und dann auf die Parameter zugreifen um Parameterwerte von Part zu Part zu kopieren.
Wie komme ich nach der Selektion des Parts an die Referenz um auf die Parameter zu zugreifen.

Code:
Sub CATMain()

    Dim intRootDocObj As ProductDocument
    Dim intSelObj As Object 'Selection
    Dim intSelFilter(0)
    Dim intSelStateStr As String
 
    On Error Resume Next
    Set intRootDocObj = CATIA.ActiveDocument
    If Err.Number <> 0 Then
        MsgBox "Falscher Dokumententyp!", vbExclamation, "ERROR"
        Exit Sub
    Else
        On Error GoTo 0
    End If
 
    Set intSelObj = intRootDocObj.Selection
    intSelObj.Clear
 
    MsgBox "Bitte selektieren Sie einen Part" + vbNewLine + "ESC zum Abbrechen der Selektion und des Makros", vbInformation, "Punkt selektieren"
    intSelFilter(0) = "Part"
    'intSelFilter(0) = "Point"
    intSelStateStr = intSelObj.SelectElement2(intSelFilter, "Bitte Part selektieren / ESC zum Abbrechen", False)
    If intSelStateStr = "Normal" Then
        MsgBox "Sie haben folgenden Punkt selektiert:" + vbNewLine + vbNewLine + _
                "Punktname:" + vbTab + intSelObj.Item(1).Value.Name + vbNewLine + _
                "Partname:" + vbTab + intSelObj.Item(1).Value.Parent.Parent.Parent.Parent.Name, vbInformation, "Selektion erfolgreich"
        Exit Sub
    Else
        MsgBox "Die Selektion war NICHT erfolgreich", vbExclamation, "Selektion nicht erfolgreich"
        Exit Sub
    End If

End Sub


------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 14. Mai. 2017 12:21    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 moppesle 10 Unities + Antwort hilfreich

Hi Uwe,

(was macht das Mopped?) :-)

die von Dir ausgesuchte Routine ist ein wenig kleinlich.
Zum einen muss ein Produkt aktiv sein - ein einzelnes Part geht offenbar nicht - zum anderen bekommst als Partnamen grundsätzlich 'CNext' zurück.

Ausserdem versteh ich jetzt auf Anhieb nicht, weshalb Du die Referenz bilden willst.
(Reicht set oRef = intSelObj.item2(1).reference nicht?)

Was ich Dir noch anbieten kann:

Code:

'---------------------------------------------------------------------------------------
' Procedure : GetSelDoc
' Author    : jherzog
' Date      : 28.10.2015
' Time      : 16:05
' Languages : VBA 6.5
' V5-Release: V5R19/21
' Purpose  : Interactivly select a document(product, part or drawing)
' Parms    : -
' Ret. Value: the selected doc object
'
' Syntax    : GetSelDoc
'
' Prereqs  : an open doc
' Remarks  : -
'---------------------------------------------------------------------------------------
'
Public Function GetSelDoc() As Object
  Dim oSel                                                'As Selection
  Dim arrSelWhich(2)
  Dim Status As String
  Dim oPP
  Dim i As Integer

  On Error GoTo GetSelDoc_Error

  AppActivate CATIA.Caption, False                        'switch to catia
  LockMouseToDoc hWndDoc                                  'confine mouse

  For i = 1 To CATIA.Documents.Count
      If TypeName(CATIA.Documents.Item(i)) <> "DrawingDocument" Then
        CATIA.Documents.Item(i).Product.ApplyWorkMode (DEFAULT_MODE)  'set work mode
        DoEvents
      End If
  Next

  arrSelWhich(0) = "Part"                                ''part' needs to be part first?!
  arrSelWhich(1) = "Product"                              'otherwise only products will be allowed
  arrSelWhich(2) = "DrawingRoot"

  Set oSel = CATIA.ActiveDocument.Selection
  oSel.Clear

  Status = oSel.SelectElement2(arrSelWhich, "Select Part, Product or Drawing / Push Escape to cancel", False)

  If (Status = "Normal") Then
      Set oPP = oSel.Item2(1)
      Select Case oPP.Type
        Case "Part"
            Set GetSelDoc = oPP.Value.Parent
        Case "Product"
            Set GetSelDoc = oPP.Value.ReferenceProduct.Parent
        Case "DrawingRoot"
            Set GetSelDoc = oPP.Document
      End Select
  ElseIf Status = "Cancel" Then
      CATIA.StatusBar = "Selection cancelled by user"
      AppActivate frmParmDoc.Caption, False
  End If
  oSel.Clear
  ClipCursor ByVal 0&

  Exit Function
  '---------------------------------------------------------------------------------------
GetSelDoc_Error:
  Dim errMsg As String
  Dim errRet As VbMsgBoxResult

  Select Case Err.Number
      Case 438                                            'ApplyWorkMode causes error if already set
        Resume Next
'      Case -2147467259
      Case Else
        errMsg = Err.Number & ": " & Err.Description & " in procedure GetSelDoc"
        errRet = MsgBox(errMsg, vbOKOnly, "GetSelDoc")
  End Select

  'Resume Next                                          'fall thru to quit sub
  '---------------------------------------------------------------------------------------
End Function



Die Funktion liefert das ausgewählte Dokument als Objekt zurück.

Hope it helps,
Joe

------------------
Inoffizielle Catia Hilfeseite

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 15. Mai. 2017 07:33    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 Joe,

Moped ist fertig. Dast geht bei mir auch schneller als das programmieren.   

Danke dir für den Code.
Versuche das mal ein zu bauen.

Zitat:
Ausserdem versteh ich jetzt auf Anhieb nicht, weshalb Du die Referenz bilden willst.
(Reicht set oRef = intSelObj.item2(1).reference nicht?)

Ich muss halt nur an die Parameter der entsprechenden Parts ran.

Also Parameterwert von Part1 in Part2 übertragen.


------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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