Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro: Komponenten einer Baugruppe öffnen, Dateieigenschaften löschen

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:   Makro: Komponenten einer Baugruppe öffnen, Dateieigenschaften löschen (1267 mal gelesen)
API-Fabi
Mitglied
Technischer Produktdesigner


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

Beiträge: 53
Registriert: 23.11.2015

SolidWorks 2017

erstellt am: 31. Jan. 2017 13:36    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! javascript:InsertSMI(' %20');

Ich möchte ein Makro schreiben, das eine bestimmte benutzerdefinierte Dateieigenschaft löscht. Wenn das geöffnete Dokument eine Assembly ist, auch bei allen Unterkomponenten.

Hat jemand ein ähnliches Makro, an das ich mich anlehnen kann?
Oder ein Beispiel, in dem nacheinander alle Unterkomponenten einer Baugruppe geöffnet werden um etwas zu bearbeiten etc.

Bzw. müssen die Unterkomponenten dazu überhaupt geöffnet werden oder geht das auch einfacher?


Vielen Dank!

------------------
Gruß Fabi

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 639
Registriert: 17.01.2007

SWX 2017 SP5
AutoCAD 2016
Win 10 pro 64 bit
Intel Xeon 3,6GHz
64GB RAM
Nvidia Quadro M5000
SWx EPDM

erstellt am: 31. Jan. 2017 14:11    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 API-Fabi 10 Unities + Antwort hilfreich

Hallo Fabi!

Fürs löschen:

Code:
boolstatus = Part.DeleteCustomInfo2("", "Hier Eigenschaftsname")

Für die Unterkomponenten gibt es hier Code zum "Sicherungskopie-erstellen": 

http://forum.cad.de/foren/ubb/Forum2/HTML/029882.shtml#000000

Gruß, Jens

------------------
CSWA, CSWP, CSWPA-SM =)

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

API-Fabi
Mitglied
Technischer Produktdesigner


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

Beiträge: 53
Registriert: 23.11.2015

SolidWorks 2017

erstellt am: 01. Feb. 2017 09: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

Vielen Dank Jens!

Das Makro funktioniert nun soweit.

Allerdings sollte das Makro bis in die unterste Strukturebene funktionieren:
Wenn Part, dann abfragen ob es noch ein Part im Part gibt (Bsp. Gussmodelle) und in diesem "Unterpart" wiederum die Eigenschaft löschen.

Wie kann ich das am besten erweitern?

------------------
Gruß Fabi

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 639
Registriert: 17.01.2007

SWX 2017 SP5
AutoCAD 2016
Win 10 pro 64 bit
Intel Xeon 3,6GHz
64GB RAM
Nvidia Quadro M5000
SWx EPDM

erstellt am: 01. Feb. 2017 10:06    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 API-Fabi 10 Unities + Antwort hilfreich

Da würde ich die einzelnen Features durchlaufen, und mir die externen Referenzen holen.

Hier mal ein aus meinem Makro-Pool und meinen Gehirnwindungen zusmmengebastelter Ablauf:

Code:

Set Feature = part.FirstFeature

Do While Not Feature Is Nothing
    If Feature.GetTypeName() = "BODYFEATURE" Then   
        'Feature selektieren
        'Part.EditInContext
        'Set Part = swApp.OpenDoc6...
        'swApp.ActivateDoc2 "Unter-Teil"
        'Hier Lösch-Schleife
        'Part.ClearSelection2 True
        'Set Part = Nothing
        'swApp.CloseDoc...
        'Set Part = swApp.ActiveDoc
        'swApp.ActivateDoc2 "Original-Teil"
    Set Feature = Feature.GetNextFeature
Loop


Das hab ich so noch nicht gemacht, das geht vielleicht (höchstwahrscheinlich) auch komfortabler. Evtl. muss du dir das zuletzt bearbeitete Feature merken, wahrscheinlich wird das beim "Unter-Teil-öffnen-schließen-und-Original-Teil-öffnen" zurückgesetzt. Kannst ja mal mit dem Makro-Rekorder probieren, was der ausspuckt.

Gruß, Jens

------------------
CSWA, CSWP, CSWPA-SM =)

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

API-Fabi
Mitglied
Technischer Produktdesigner


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

Beiträge: 53
Registriert: 23.11.2015

SolidWorks 2017

erstellt am: 01. Feb. 2017 13:35    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

Ich habe ebenfalls so begonnen... Allerdings funktioniert "swModel.EditInContext" nicht. Das wird vom Makrorekorder aber auch so aufgezeichnet. "EditInContext" ist in der Hilfe auch nicht zu finden?!

------------------
Gruß Fabi

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

RWolff
Mitglied
Maschinenbautechniker

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

Beiträge: 8
Registriert: 14.06.2016

SolidWorks 2018

erstellt am: 01. Feb. 2017 14: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 API-Fabi 10 Unities + Antwort hilfreich

Probier mal mit folgendem Code. Habe das zwar nicht allzu sehr getestet, aber vielleicht passt das für deine Anwendung.

Option Explicit

Dim swApp          As SldWorks.SldWorks
Dim swModel        As SldWorks.ModelDoc2
Dim config        As SldWorks.configuration

Dim lRetVal        As Long
Dim vPropNames    As Variant
Dim vPropTypes    As Variant
Dim vPropValues    As Variant
Dim valout        As String
Dim resolved      As Variant
Dim vComps        As Variant

Dim j              As Long
Dim i              As Long
Dim swComp        As SldWorks.Component2
Dim swCompModel    As SldWorks.ModelDoc2
Dim swCustProp    As CustomPropertyManager
Dim val            As String

Dim swAssy        As SldWorks.AssemblyDoc
Dim name          As String
Dim bool          As Boolean

Sub main()

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
   
    Set swAssy = swModel
    vComps = swAssy.GetComponents(False)
   
    If IsEmpty(vComps) Then Exit Sub
   
    'Schleife für alle Teile in Baugruppe
    For i = 0 To UBound(vComps)
        Set swComp = vComps(i)
        Set swCompModel = swComp.GetModelDoc
       
        'Wenn ein Teil unterdrückt ist, gehe zum nächsten Teil
        If swComp.IsSuppressed Then
            GoTo Nächste
        End If
           
        Set config = swCompModel.GetActiveConfiguration
        Set swCustProp = config.CustomPropertyManager

        lRetVal = swCustProp.GetAll2(vPropNames, vPropTypes, vPropValues, resolved)
       
    'Schleife für alle Eigenschaften
    For j = 0 To lRetVal - 1
   
        'Wenn der Name der Eigenschaft Desc1 ist...
        If vPropNames(j) = "Desc1" Then
            'Code hier für die Eigenschaft
            Debug.Print vPropValues(j)
            bool = swCustProp.Delete("Desc1")
        End If
       
    Next j
   
Nächste:
   
    Next i

End Sub


Gruß
Ralf

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

Ralf Tide
Moderator
Beratender Ingenieur




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

Beiträge: 4474
Registriert: 06.08.2001

.-)

erstellt am: 01. Feb. 2017 14:52    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 API-Fabi 10 Unities + Antwort hilfreich

Hallo Fabi,

wenn Du die Komponente schon hast, kannst Du auch die Externen Referenzen zählen und auflisten...
http://help.solidworks.com/2014/english/api/sldworksapi/Get_External_References_Example_VB.htm

HTH
Ralf

------------------

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 639
Registriert: 17.01.2007

SWX 2017 SP5
AutoCAD 2016
Win 10 pro 64 bit
Intel Xeon 3,6GHz
64GB RAM
Nvidia Quadro M5000
SWx EPDM

erstellt am: 01. Feb. 2017 15:02    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 API-Fabi 10 Unities + Antwort hilfreich

Da war der Ralf (mal wieder) paar Minuten schneller... 

Das Beispiel mit den ext. Referenzen hatte ich auch eben erst gefunden.

Musst du halt mit

Code:

Set Part = swApp.OpenDoc6("Hier Pfad", 1, 0, "", longstatus, longwarnings)
Set Part = swApp.ActiveDoc

das Teil dirket öffnen.

Gruß, Jens

------------------
CSWA, CSWP, CSWPA-SM =)

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