Aangepaste eigenschap

Hallo.

Ik wil graag een of twee aangepaste eigenschappen van een onderdeel wijzigen (opgenomen in mijn assemblage zonder deze te openen)  

Het doel zou zijn  om dit alles te controleren vanuit een extel macro. 

Ik heb alleen deze gevonden die correct werkt: Part.CustomInfo("No_article) = 200020

Maar je moet de kamer openen :/ .

Zou je me kunnen helpen 

Hallo

U kunt de aangepaste eigenschappen van een SolidWorks-document bewerken zonder het te openen met behulp van de Document Manager-API's. Dit zijn de API's die worden gebruikt door applicaties zoals MyCadTools.

Persoonlijk heb ik een applicatie gemaakt die de eigenschappen van de componenten van een assemblage koppelt en wijzigt om de stuklijsten te beheren en de koppeling met ons ERP te verzekeren.

Om dit te doen, moet u een licentie aanvragen in uw klantenzone.

Dan volgen hier enkele voorbeelden.

Goede code...

2 likes

Hallo

Wat is het dat u niet in SW wilt openen? Uw onderdeel of uw assemblage?

kijk door ICI, de vraag ziet er een beetje (of zelfs veel) uit.

Vriendelijke groeten

1 like

Bedankt voor je antwoord, ik wil mijn onderdelen niet openen, mijn montage zou actief zijn  .

En ja, D.Roger , ik probeer me te laten inspireren door deze persoon, maar ik heb nog steeds wat zorgen.

Dim swApp als object

Deel dimmen als object
Dim boolstatus als Booleaanse
Dim longstatus As Long, longwarnings As Long

Sub Modif_art2()

'Stel swApp in = _
'Toepassing.SldWorks

'Deel instellen = swApp.ActiveDoc
Stel swApp = CreateObject("SldWorks.Application") in
Stel swModelDoc in = swApp.ActiveDoc

boolstatus = Part.Extension.GetModelDoc2("XXXXXD06-1@XXXXX_630S_chgt_D_bavette-1", "COMPONENT", 0, 0, 0, Onwaar, 0, Niets, 0)
Deel.CustomInfo("No_article") = 200


' werkt in een kamer
'boolstatus = Part.AddCustomInfo3("", "No_article", 1, "")
'Deel.CustomInfo("No_article") = 2000200
Einde Sub
 

Maar hier is mijn probleem op dit moment.

Runtime fout 91 

Objectvariabele of Bloc Met variabele niet gedefinieerd

Hallo

U maakt een Solidworks-object: Set swApp = CreateObject("SldWorks.Application")

U krijgt het huidige document: Set swModelDoc = swApp.ActiveDoc

Maar tussen de 2 zou je een document in Solidworks moeten openen, anders probeer je een object te herstellen dat niet bestaat, vandaar het bericht "object niet gedefinieerd" omdat ik denk dat het in de debug-modus op deze regel is dat het vastloopt.

Vriendelijke groeten

1 like

Mijn assembly zou actief zijn , het zou worden gegenereerd en dan zou ik dit dialoogvenster aanroepen, dus het zou alleen nodig zijn om

Stel swModelDoc in = swApp.ActiveDoc

maar het vertelt me altijd variabel object of blok niet gedefinieerd :/

Excuseer me voor mijn kleine expertise op dit niveau^^

Ik was in staat om iets meer vooruitgang te boeken op het gebied van

 

Dim swApp als object

Deel dimmen als object
Dim boolstatus als Booleaanse
Dim longstatus As Long, longwarnings As Long

Sub Modif_art2()
Stel swApp = CreateObject("SldWorks.application") '_ in
Deel instellen = swApp.ActiveDoc
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------


'------------------------------------------------------------------------------------------------------------------------------------------------------------------------
swApp.ActivateDoc2 "xxxxx.SLDASM", False, longstatus
Deel instellen = swApp.ActiveDoc
boolstatus = Part.Extension.GetModelDoc2("XXXXXD06-1@XXXXX_630S_chgt_D_bavette-1", "COMPONENT", 0, 0, 0, Onwaar, 0, Niets, 0)
Deel.CustomInfo("No_article") = 2003700


Einde Sub

 

Runtime-fout 438 (op de vetgedrukte regel)

Eigenschap of methode die niet wordt ondersteund door dit object 

 

Ja, dit is normaal aangezien de functie GetModelDoc2 een functie is die behoort tot de Icomponent2-objecten , terwijl u deze in uw code probeert aan te roepen via een IModelDoc2-object.

Tegelijkertijd heb je een andere vraag geopend die HIER te vinden is, maar het lijkt dezelfde vraag te zijn, welke moet worden beantwoord?

Een voorbeeld van het gebruik van de functie GetModelDoc2 vindt u HIER.

Vriendelijke groeten

1 like

Bedankt voor je antwoord, ik heb deze vraag geopend om mijn vraag te herformuleren, ik vind dat ik me slecht had uitgedrukt, dit is zeker niet erg nuttig, sorry .

Dan begrijp ik niet zo goed wat het punt is (1.-1)

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

 

Kijk HIER in de paragraaf "Parameters", en aarzel niet om wat onderzoek te doen (naar elke gebruikte functie) in de help over de Solidworks API's, deze zijn zeer goed gedocumenteerd...

Vriendelijke groeten

1 like

Dim swApp als object

Deel dimmen als object
Dim BoolStatus als Booleaanse
Dim longstatus As Long, longwarnings As Long
Zon swSelMgr As SldWorks.SelectionMgr
Dim swSelObj als object
Dim swSelComp als SldWorks.Component2
 Dim swEnt As SldWorks.Entity


Sub Modif_art2()

 Stel swApp = CreateObject("SldWorks.Application") in
    Stel swModel = swApp.ActiveDoc in
    Stel swSelMgr = swModel.SelectionManager in
    
Stel swSelComp = swSelMgr.GetSelectedObjectsComponent3(1, -1) in

Stel swSelComp = swEnt in. XXXXXD06 (naam van mijn stuk)

        Deel.CustomInfo("No_article") = 20037
Einde Sub

 

Dit blokkeert in de naam van mijn onderdelen die ik een slechte manipulatie heb gemaakt?

Uitvoeringsfout '91'

Objectvariabele of Bloc Met variabele niet gedefinieerd

 

Dimfunctie Als functie

Dim boolstatus als variant

Deel dimmen als object

Dim longstatus As Long, longwarnings As Long

Sub Modif_art2()


Stel swApp = CreateObject("SldWorks.Application") in

Model instellen = swApp.ActiveDoc

 

' Selecteer de functie met de naam "Extrude1"
Deel instellen = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("Baas.-Extru.1@XXXXXD06-1@XXXXX_0000_00_D_111", "BODYFEATURE", 0, 0, 0, False, 0, Niets, 0)

 

" Als de selectie succesvol was, d.w.z. "Extrude1" was

' geselecteerd en het is een "BODYFEATURE", dan krijg je die functie; anders

' duiden op een storing

Als boolstatus = Waar Dan

    Sun SelMgr Als SelectieMgr

    Stel SelMgr = Model.SelectionManager in

    Functie instellen = SelMgr.GetSelectedObject6(1, 0)
    
    
    
Stel swCustPropMgr in = swCutlistItem.CustomPropertyManager("No_article")

Foutopsporing.Print "No_article"

Debug.Print "Aantal aangepaste eigenschappen = 28 " + CStr(swCustPropMgr.Count("6"))

Foutopsporing.Print "No_article", "", "200", "Tekst"

 

'Namen = swCustPropMgr.GetNames("2000")


Einde als

Einde Sub*

 

Ik heb deze methode ook geprobeerd en ik zit vast aan de lijn:

Debug.Print "Aantal aangepaste eigenschappen = 28 " + CStr(swCustPropMgr.Count("6"))

met de foutmelding 'Artikel vereist' 

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

om te zien of het me lukte om toegang te krijgen tot het eigendom van mijn stuk.

 

 

Hallo

Het spijt me je dit te moeten vertellen, maar ik kan je code niet eens lezen omdat de objecten en functies door elkaar worden gehaald zonder rekening te houden met hun kenmerken en werking. Probeer je niet meer te weten te komen over Solidworks-macro's door de stappen over te slaan?

Vriendelijke groeten

2 likes

Ik ben een beetje verdwaald voor deze vba, ik weet niet echt hoe ik het moet aanpakken

Voordat ik aan VBA Solidworks denk, denk ik dat je al interesse moet hebben in de programmeertaal zelf om te begrijpen hoe het werkt, er zijn een heleboel cursussen die al kunnen helpen om te beginnen, zoals bijvoorbeeld HIER of HIER, ja het is voor Excel, maar het maakt niet uit, de filosofie is hetzelfde: objectgeoriënteerd programmeren. Dan en alleen dan kunt u geïnteresseerd zijn in de Solidworks-specifieke API's op de online help direct hier.

In het begin kost het tijd en lijkt het misschien een beetje vervelend, maar dat is het begin...

Vriendelijke groeten

2 likes

Oké, het zou nuttig voor mij zijn, ik zal proberen een versie opnieuw voor te stellen na bestudering van dit alles, bedankt