Bearbeiten des Teilebesitzes aus der Baugruppe

Hallo

Ich suche nach einer Möglichkeit, die benutzerdefinierten Eigenschaften eines Teils aus der Baugruppe zu bearbeiten.

Ich habe dieses kleine Makro im Web gefunden, aber es ist nur ein Viewer.

Ich habe auch ein paar Makrovorlagen, die die ausgewählten Komponenten öffnen oder speichern.

Ich dachte, ich würde im Code leicht die Teile "ausgewählte Komponente" und "offen" oder "speichern" finden, die durch "offene Requisiten" ersetzt werden sollen. personalisiert", aber sie sind anders geschrieben, es gibt Zähler, viele Dinge, die ich nicht verstehe, kurz gesagt, nein, es ist nicht einfach...

 

 


view_properties_of_selected_component_from_assembly.swp

Hallo

Hier ist ein kleines Beispiel (in Eile gemacht), das Ihnen helfen soll:

Option Explicit

Dim swApp As SldWorks.SldWorks
Dim Model As ModelDoc2
Dim CompModel As ModelDoc2
Dim swChildComp As SldWorks.Component2
Dim SelectedObject As Object
Dim NbrSelections As Long
Dim i As Long
Dim lErrors As Long
Dim lWarnings As Long

Dim swModel As SldWorks.ModelDoc2
Dim bRet As Boolean
Dim myAssy As AssemblyDoc
Dim nInfo As Long
Dim swModelDocExt As ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim val As String
Dim valout As String

Sub main()

    Set swApp = Application.SldWorks
    Set Model = swApp.ActiveDoc
    
    Set myAssy = Model

    Dim SelMgr As SelectionMgr
    Set SelMgr = Model.SelectionManager
        
    NbrSelections = SelMgr.GetSelectedObjectCount2(-1)

    Set SelectedObject = SelMgr.GetSelectedObject6(1, -1)
    If NbrSelections = 1 Then
        Set swChildComp = SelectedObject
        Set CompModel = swChildComp.GetModelDoc2
        
        bRet = myAssy.EditPart2(True, True, nInfo)
        Set swModel = myAssy.GetEditTarget
        Set swModelDocExt = swModel.Extension
        Set swCustProp = swModelDocExt.CustomPropertyManager("")
        
        bRet = swCustProp.Add3("MaPropriete", swCustomInfoType_e.swCustomInfoText, "Ma valeur 1", swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
        bRet = swCustProp.Get4("MaPropriete", False, val, valout)
        
        Debug.Print "valeur évaluée : " & valout
        
        bRet = swCustProp.Set2("MaPropriete", "Ma valeur 3")
        bRet = swCustProp.Get4("MaPropriete", False, val, valout)
        
        Debug.Print "valeur évaluée : " & valout
        
        bRet = swModel.Save3(swSaveAsOptions_Silent, lErrors, lWarnings)
        
        myAssy.EditAssembly
    End If
    
End Sub

Zum Testen öffnen Sie eine Baugruppe und wählen dann ein Teil im Funktions-Manager aus, bevor Sie das Makro starten (für Testteile).

Herzliche Grüße

1 „Gefällt mir“

Danke d.roger

Ich habe Ihr Makro ausprobiert, es funktioniert, aber es ist nicht genau das, was ich erwartet habe (tatsächlich geht es ein wenig zu weit)

In der Tat ist Ihr Makro

- Aktivieren Sie die ausgewählte Komponente : ok für mich

- Erstellen des Propriété "Ma propriété", avec la vale " Ma valeur 1" : en fait je voudrais juste ouvrir la fenêtre de propriété personnalisés.

- enregistre (?) et ferme le composant pour retourner a l'assemblage : Idéalement cette opération peut être déclanché à la fermeture de la fenêtre de propriété personnalisés. si non, a faire manuellement, ça sera déjà bien.

 

 

 

Etwa so:

Option Explicit

Dim swApp As SldWorks.SldWorks
Dim Model As ModelDoc2
Dim CompModel As ModelDoc2
Dim swChildComp As SldWorks.Component2
Dim SelectedObject As Object
Dim NbrSelections As Long
Dim i As Long
Dim lErrors As Long
Dim lWarnings As Long

Dim swModel As SldWorks.ModelDoc2
Dim bRet As Boolean
Dim myAssy As AssemblyDoc
Dim nInfo As Long

Sub main()

    Set swApp = Application.SldWorks
    Set Model = swApp.ActiveDoc
    
    Set myAssy = Model

    Dim SelMgr As SelectionMgr
    Set SelMgr = Model.SelectionManager
        
    NbrSelections = SelMgr.GetSelectedObjectCount2(-1)

    Set SelectedObject = SelMgr.GetSelectedObject6(1, -1)
    If NbrSelections = 1 Then
        Set swChildComp = SelectedObject
        Set CompModel = swChildComp.GetModelDoc2
        
        bRet = myAssy.EditPart2(True, True, nInfo)
        Set swModel = myAssy.GetEditTarget

        swModel.FileSummaryInfo
        
        bRet = swModel.Save3(swSaveAsOptions_Silent, lErrors, lWarnings)
        
        myAssy.EditAssembly
    End If
    
End Sub

Herzliche Grüße

2 „Gefällt mir“

HALLELUJA! Ruhm sei mit Ihnen, zu Lande wie zu Wasser!

Ich habe das Gefühl, dass es meinen Kollegen gefallen wird!

Miles danke D.Roger, immer so effizient

1 „Gefällt mir“

Ich habe noch eine ganz kleine Bemerkung: Bei den Unterbaugruppen funktioniert es nicht richtig:

Es sieht so aus, als gäbe es eine Umkehrung zwischen den Schritten "Eigenschaftenfenster öffnen" und "Ausgewählte Komponente aktivieren"

 

Hallo

Versuchen Sie es mit dieser Makroversion:

Option Explicit

Dim swApp As SldWorks.SldWorks
Dim Model As ModelDoc2
Dim CompModel As ModelDoc2
Dim swChildComp As SldWorks.Component2
Dim SelectedObject As Object
Dim NbrSelections As Long
Dim i As Long
Dim lErrors As Long
Dim lWarnings As Long

Dim swModel As Object
Dim bRet As Boolean
Dim myAssy As AssemblyDoc
Dim nInfo As Long

Sub main()

    Set swApp = Application.SldWorks
    Set Model = swApp.ActiveDoc
    
    Set myAssy = Model

    Dim SelMgr As SelectionMgr
    Set SelMgr = Model.SelectionManager
        
    NbrSelections = SelMgr.GetSelectedObjectCount2(-1)

    Set SelectedObject = SelMgr.GetSelectedObject6(1, -1)
    If NbrSelections = 1 Then
        Set swChildComp = SelectedObject
        Set CompModel = swChildComp.GetModelDoc2
        
        If CompModel.GetType = swDocumentTypes_e.swDocASSEMBLY Then
            myAssy.EditAssembly
        End If

        bRet = myAssy.EditPart2(True, True, nInfo)
        Set swModel = myAssy.GetEditTarget
    
        swModel.FileSummaryInfo
            
        bRet = swModel.Save3(swSaveAsOptions_Silent, lErrors, lWarnings)
            
        myAssy.EditAssembly

    End If
    
End Sub

Herzliche Grüße

1 „Gefällt mir“

Prima. Nichts zu meckern.

Dieses Makro kompensiert etwas den in diesem Beitrag erwähnten Fehler des Visualisierungstools

Vielen Dank!

1 „Gefällt mir“