Benutzerdefinierte Eigenschaft

Hallo.

Ich möchte eine oder zwei benutzerdefinierte Eigenschaften eines Teils ändern (das in meiner Baugruppe enthalten ist, ohne es zu öffnen)  

Das Ziel wäre  es, all dies von einem Extel-Makro aus zu steuern. 

Ich habe nur diesen gefunden, der korrekt funktioniert: Part.CustomInfo("No_article) = 200020

Aber Sie müssen den Raum öffnen :/ .

Könnten Sie mir helfen? 

Hallo

Sie können die benutzerdefinierten Eigenschaften eines SolidWorks Dokuments bearbeiten, ohne es zu öffnen, indem Sie die Dokument-Manager-APIs verwenden. Dies sind die APIs, die von Anwendungen wie MyCadTools verwendet werden.

Ich persönlich habe eine Anwendung erstellt, die die Eigenschaften der Komponenten einer Baugruppe verknüpft und modifiziert, um die Stücklisten zu verwalten und die Verknüpfung mit unserem ERP sicherzustellen.

Dazu müssen Sie in Ihrem Kundenbereich eine Lizenz beantragen .

Dann finden Sie hier einige Beispiele.

Guter Code...

2 „Gefällt mir“

Hallo

Was möchten Sie nicht in SW öffnen? Ihr Teil oder Ihre Baugruppe?

Schauen Sie nach ICI, sieht die Nachfrage ein wenig (oder sogar viel) aus.

Herzliche Grüße

1 „Gefällt mir“

Vielen Dank für Ihre Antwort, ich möchte meine Teile nicht öffnen, meine Baugruppe wäre  aktiv.

Und ja, D.Roger , ich versuche, mich von dieser Person inspirieren zu lassen, aber ich habe immer noch einige Sorgen.

Dimmen swApp als Objekt

Teil als Objekt dimmen
Dim boolstatus als boolescher Wert
Dim longstatus As Long, longwarnings As Long

Eingewechselt Modif_art2()

'swApp = _ setzen
'Anwendung.SldWorks

'Set Part = swApp.ActiveDoc
Set swApp = CreateObject("SldWorks.Application")
Legen Sie swModelDoc = swApp.ActiveDoc fest

boolstatus = Part.Extension.GetModelDoc2("XXXXXD06-1@XXXXX_630S_chgt_D_bavette-1", "KOMPONENTE", 0, 0, 0, Falsch, 0, Nichts, 0)
Part.CustomInfo("No_article") = 200


" funktioniert in einem Raum
'boolstatus = Part.AddCustomInfo3("", "No_article", 1, "")
'Part.CustomInfo("No_article") = 2000200
Ende Sub
 

Aber hier ist mein Problem im Moment.

Laufzeitfehler 91 

Objektvariable oder Block Mit nicht definierter Variable

Hallo

Sie erstellen ein Solidworks Objekt: Set swApp = CreateObject("SldWorks.Application")

Sie erhalten das aktuelle Dokument: Set swModelDoc = swApp.ActiveDoc

Aber zwischen den 2 müssten Sie ein Dokument in Solidworks öffnen, sonst versuchen Sie, ein Objekt wiederherzustellen, das nicht existiert, daher die Meldung "Objekt nicht definiert", weil ich vermute, dass es im Debug-Modus in dieser Zeile einfriert.

Herzliche Grüße

1 „Gefällt mir“

Meine Assembly wäre aktiv, sie würde generiert und dann würde ich dieses Dialogfeld aufrufen, so dass es nur notwendig wäre,

Legen Sie swModelDoc = swApp.ActiveDoc fest

aber es sagt mir immer, dass das variable Objekt oder der Block nicht definiert ist :/

Entschuldigung für meine geringe Expertise auf diesem Niveau^^

Ich konnte bei dem Thema etwas weiter vorankommen

 

Dimmen swApp als Objekt

Teil als Objekt dimmen
Dim boolstatus als boolescher Wert
Dim longstatus As Long, longwarnings As Long

Eingewechselt Modif_art2()
Set swApp = CreateObject("SldWorks.application") '_
Set Part = swApp.ActiveDoc
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------


'------------------------------------------------------------------------------------------------------------------------------------------------------------------------
swApp.ActivateDoc2 "xxxxx.SLDASM", False, longstatus
Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.GetModelDoc2("XXXXXD06-1@XXXXX_630S_chgt_D_bavette-1", "KOMPONENTE", 0, 0, 0, Falsch, 0, Nichts, 0)
Part.CustomInfo("No_article") = 2003700


Ende Sub

 

Laufzeitfehler 438 (in der fett gedruckten Zeile)

Eigenschaft oder Methode, die von diesem Objekt nicht unterstützt wird

 

Ja, dies ist normal, da die GetModelDoc2-Funktion eine Funktion ist, die zu den Icomponent2-Objekten gehört, während Sie in Ihrem Code versuchen, sie über ein IModelDoc2-Objekt aufzurufen.

Zur gleichen Zeit haben Sie eine andere Frage aufgeworfen, die HIER zu finden ist, aber es scheint die gleiche Frage zu sein, welche beantwortet werden soll?

Ein Beispiel für die Verwendung der Funktion GetModelDoc2 finden Sie HIER.

Herzliche Grüße

1 „Gefällt mir“

Vielen Dank für Ihre Antwort, ich habe diese Frage geöffnet, um meine Frage umzuformulieren, ich finde, dass ich mich schlecht ausgedrückt habe, das ist sicherlich nicht sehr nützlich, tut mir leid.

Dann verstehe ich nicht wirklich, worum es geht (1.-1)

Debug.Print "Selected Type =" & swSelMgr. GetSelectedObjectType3 (1, -1)

 

Schauen Sie HIER im Abschnitt "Parameter" nach, und zögern Sie nicht, in der Hilfe zu den Solidworks APIs zu recherchieren (zu jeder verwendeten Funktion), diese sind sehr gut dokumentiert...

Herzliche Grüße

1 „Gefällt mir“

Dimmen swApp als Objekt

Teil als Objekt dimmen
Dim BoolStatus als boolescher Wert
Dim longstatus As Long, longwarnings As Long
Sun swSelMgr As SldWorks.SelectionMgr
Dim swSelObj Als Objekt
Dim swSelComp As SldWorks.Component2
 Dimmen als SldWorks.Entity


Eingewechselt Modif_art2()

 Set swApp = CreateObject("SldWorks.Application")
    Festlegen von swModel = swApp.ActiveDoc
    Legen Sie swSelMgr = swModel.SelectionManager fest
    
Set swSelComp = swSelMgr.GetSelectedObjectsComponent3(1, -1)

Legen Sie swSelComp = swEnt fest. XXXXXD06(Name meines Stücks)

        Part.CustomInfo("No_article") = 20037
Ende Sub

 

Diese Blöcke im Namen meiner Teile Ich habe eine schlechte Manipulation gemacht?

Ausführungsfehler '91'

Objektvariable oder Block Mit nicht definierter Variable

 

Funktion als Funktion dimmen

Dim boolstatus als Variante

Teil als Objekt dimmen

Dim longstatus As Long, longwarnings As Long

Eingewechselt Modif_art2()


Set swApp = CreateObject("SldWorks.Application")

Set Model = swApp.ActiveDoc

 

' Wählen Sie das Feature mit dem Namen "Extrudieren1" aus.
Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("Chef.-Extru.1@XXXXXD06-1@XXXXX_0000_00_D_111", "BODYFEATURE", 0, 0, 0, Falsch, 0, Nichts, 0)

 

' Wenn die Auswahl erfolgreich war, d.h. "Extrud1"

' ausgewählt und es ist ein "BODYFEATURE", dann holen Sie sich dieses Feature; sonst

" Fehler anzeigen

Wenn boolstatus = wahr, dann

    Sun SelMgr als AuswahlMgr

    Festlegen von SelMgr = Model.SelectionManager

    Set feature = SelMgr.GetSelectedObject6(1, 0)
    
    
    
Set swCustPropMgr = swCutlistItem.CustomPropertyManager("No_article")

Debug.Print "No_article"

Debug.Print "Anzahl der benutzerdefinierten Eigenschaften = 28 " + CStr(swCustPropMgr.Count("6"))

Debug.Print "No_article", "", "200", "Text"

 

'Namen = swCustPropMgr.GetNames("2000")


Ende, wenn

Ende Sub*

 

Ich habe diese Methode auch ausprobiert und stecke in der Leitung fest:

Debug.Print "Anzahl der benutzerdefinierten Eigenschaften = 28 " + CStr(swCustPropMgr.Count("6"))

mit dem Fehler "Artikel erforderlich" 

Nr. : http://help.solidworks.com/2012/English/api/sldworksapi/Get_Custom_Properties_for_Cut-list_Item_Example_VB.htm

um zu sehen, ob ich es geschafft habe, auf das Eigentum an meinem Stück zuzugreifen.

 

 

Hallo

Es tut mir leid, Ihnen das sagen zu müssen, aber ich kann nicht einmal Ihren Code lesen, weil die Objekte und Funktionen durcheinander gebracht werden, ohne ihre Eigenschaften und Funktionen zu berücksichtigen. Versuchen Sie nicht, etwas über Solidworks Makros zu lernen, indem Sie die Schritte überspringen?

Herzliche Grüße

2 „Gefällt mir“

Ich bin ein bisschen verloren für diesen VBA, ich weiß nicht wirklich, wie ich das anstellen soll

Bevor Sie über VBA Solidworks nachdenken, denke ich, dass Sie sich bereits für die Programmiersprache selbst interessieren sollten, um zu verstehen, wie sie funktioniert, es gibt eine ganze Reihe von Kursen, die bereits beim Einstieg helfen können, wie zum Beispiel HIER oder HIER, ja, es ist für Excel, aber es spielt keine Rolle, die Philosophie ist die gleiche: objektorientierte Programmierung. Dann und nur dann können Sie sich direkt hier in der Online-Hilfe für die Solidworks-spezifischen APIs interessieren.

Am Anfang braucht es Zeit und es mag ein bisschen mühsam erscheinen, aber das ist der Anfang...

Herzliche Grüße

2 „Gefällt mir“

Okay, es wäre nützlich für mich, ich werde versuchen, eine Version nach dem Studium von all dem wieder vorzuschlagen, danke.