Ik wil een kleur toepassen op het laatste lichaam dat door macro is gemaakt
Het probleem is dat, hoewel de macro lijkt te werken, het beeld zwart is
Bijvoorbeeld hier groene kleur gekozen via 3 aangepaste eigenschappen, in de instellingen is het groen, maar visueel is het zwart, alleen als ik het bestand sluit en opnieuw open wordt de kleur goed weergegeven
Wie heeft een idee?
Sub coul()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim valout As String
Dim R As String
Dim G As String
Dim B As String
Dim vProp As Variant
Dim bool As Boolean
Dim swModelDocExt As ModelDocExtension
Dim swCustPropMgr As SldWorks.CustomPropertyManager
Dim swFeat As SldWorks.Feature
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension
Set swCustPropMgr = swModelDocExt.CustomPropertyManager("")
Set swFeat = swModel.Extension.GetLastFeatureAdded
'vProp = swFeat.GetMaterialPropertyValues2(swInConfigurationOpts_e.swThisConfiguration, Empty)
vProp = swFeat.GetMaterialPropertyValues2(1, Empty)
bool = swCustPropMgr.Get4("couleur_R", False, R, valout)
bool = swCustPropMgr.Get4("couleur_G", False, G, valout)
bool = swCustPropMgr.Get4("couleur_B", False, B, valout)
vProp(0) = R / 255
vProp(1) = G / 255
vProp(2) = B / 255
'vProp(3) = 0 'Ambient
'vProp(4) = 0 'Diffuse
'vProp(5) = 0 'Specularity
'vProp(6) = 0 'Shininess
'vProp(7) = 0 'Transparency
'vProp(8) = 0 'Emission
'swFeat.SetMaterialPropertyValues2 vProp, swInConfigurationOpts_e.swAllConfiguration, Empty
swFeat.SetMaterialPropertyValues2 vProp, swAllConfiguration, Empty
swModel.ClearSelection2 True
End Sub
Zou de anomalie te wijten kunnen zijn aan het feit dat de SolidWorks-functie waarop de macro betrekking heeft, een zwart lichaam is in de fysische zin van het woord, aangezien er geen lichtwaarde aan wordt toegekend? De bijbehorende instellingen zijn standaard ingesteld op 0. Het zou voldoende moeten zijn om waarden te geven aan de variabelen vProp(3) tot vProp(8) om het lichaam te verlichten. Ik stel me voor dat bij het opnieuw laden van het bestand het lichaam de lichtwaarden van de kamer krijgt toegewezen, waardoor de kleur opnieuw verschijnt.
Er wordt geen kleur toegepast voordat de macro wordt gestart, alleen door het bestand op te slaan, te sluiten en opnieuw te openen zijn de kleuren aanwezig
Het probleem is hetzelfde als ik precies deze macro uitvoeren (door het bestandspad te wijzigen), met betrekking tot de kleur van de functies
Zoals m.blt uitlegde , is er geen licht (de vProp(3) waarden tot 8 staan standaard op -1 dus = geen licht).
Ik heb getest met de onderstaande code, het geeft me veel groen op de laatste extrusie. Aan de andere kant is de code zoals geschreven van toepassing op de functie en niet op het lichaam.
Sub coul()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim valout As String
Dim R As String
Dim G As String
Dim B As String
Dim vProp As Variant
Dim bool As Boolean
Dim bret As Boolean
Dim swModelDocExt As ModelDocExtension
Dim swCustPropMgr As SldWorks.CustomPropertyManager
Dim swFeat As SldWorks.Feature
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension
Set swCustPropMgr = swModelDocExt.CustomPropertyManager("")
Set swFeat = swModel.Extension.GetLastFeatureAdded
'vProp = swFeat.GetMaterialPropertyValues2(swInConfigurationOpts_e.swThisConfiguration, Empty)
vProp = swFeat.GetMaterialPropertyValues2(1, Empty)
bool = swCustPropMgr.Get4("couleur_R", False, R, valout)
bool = swCustPropMgr.Get4("couleur_G", False, G, valout)
bool = swCustPropMgr.Get4("couleur_B", False, B, valout)
R = 0
G = 255
B = 0
vProp(0) = R / 255
vProp(1) = G / 255
vProp(2) = B / 255
vProp(3) = 1 'Ambient
vProp(4) = 1 'Diffuse
vProp(5) = 0.5 'Specularity
vProp(6) = 0 'Shininess
vProp(7) = 0 'Transparency
vProp(8) = 0 'Emission
swFeat.SetMaterialPropertyValues2 vProp, swInConfigurationOpts_e.swAllConfiguration, Empty
'swFeat.SetMaterialPropertyValues2 vProp, swAllConfiguration, Empty
swModel.ForceRebuild3 False
swModel.ClearSelection2 True
End Sub
Als ik macro de bovenstaande instellingen toe te passen en open om handmatig de spiegel/vervaging dispersie te wijzigen in gewijzigde waarde: 0.004999999999
Als ik met de hand de juiste waarde op 0,6875 zet, is de groene kleur niet meer hetzelfde als wanneer ik de groene kleur handmatig zonder macro had gekozen, het is een donkergroene
Als ik de hoeveelheid reflectie verander in 0.2 door macro, wanneer ik het open wordt geschreven 0.1
Ik denk dat we ons begeven in de mysteries van SW en het beheer van bepaalde parameters. Wanneer je nu al het verschil in gedrag ziet tussen 2020 en 2021.
Daarna maakt hij waarschijnlijk zelf aanpassingen om het licht op het object in balans te brengen.