Makro SW2020 / Problemy w kodzie VBA

Witam

Nie mogę zmusić tego makra zakodowanego w VBA do działania pomimo wszystkich moich wysiłków.

Moim celem jest zmiana wyglądu części na podstawie obróbki powierzchni, którą wprowadziłem we właściwości niestandardowej "TREATMENT". Chcę utworzyć nową konfigurację o nazwie "REALISTYCZNE KOLORY" i chcę, aby wygląd zmienił się tylko w tej konfiguracji.

Nie mogę też opublikować mojego makra w opisie... Przekraczam dozwolone a priori 6000 znaków... Umieściłem go w komputerze, jeśli ktoś zobaczy, co jest nie tak z moim kodem, byłaby to dla mnie ogromna pomoc!!

 

Dziękuję!!

 


attribuer_traitement_de_surface_a_couleur.swp

Witam

Link do pliku jest uszkodzony

Witam 

Rzeczywiście, to bardzo dziwne... Próbuję tego ponownie tutaj!


attribuer_traitement_de_surface_a_couleur.swp

Nie sądzę, aby można było zmienić stan wyświetlania za pomocą właściwości SelectedFeatureProperties, ponieważ stan wyświetlania nie jest funkcją.

Aby zmienić stan wyświetlania części w zespole, spójrz tutaj: change_color_of_component_in_specific_display_state_example_vb

Aby zmienić kolor samych pomieszczeń, spójrz na to: MaterialPropertyValues

Dobra, w takim razie spróbuję czegoś z tym! 

Kolejne małe pytanie, trudno mi zrozumieć, dlaczego w swoim samouczku SW mnożą funkcję Min/Max Excel przez 16*16, a następnie przez 16*16*16*16?

16x16 = 256, co może odpowiadać interwałowi kolorów [0; 255], ale po co to mnożenie, skoro wartość mojej zmiennej jest już w tym formacie? A jeszcze bardziej niezrozumiałe, po co potem 16x16x16x16?? Nie rozumiem... (Poniżej umieściłem fragment kodu, o którym mowa)

 PeintureBleueRGB = Excel.WorksheetFunction.Max(Excel.WorksheetFunction.Min(PeintureBleueR, 255), 0) + Excel.WorksheetFunction.Max(Excel.WorksheetFunction.Min(PeintureBleueG, 255), 0) * 16 * 16 + Excel.WorksheetFunction.Max(Excel.WorksheetFunction.Min(PeintureBleueB, 255), 0) * 16 * 16 * 16 * 16

 

W ten sposób kolory RGB są łączone we właściwości Color

Witam ponownie Hieronim, 

Bawiłem się twoimi linkami, ale nadal napotykam błąd, który wydaje się pochodzić z wiersza 189 mojego kodu... Ponownie wykorzystałem część twojego kodu, dzięki czemu wygląd zmienia się we wszystkich częściach zestawu i podzbiorach. 

To właśnie ta linia kodu powoduje problemy, ale nie mogę znaleźć przyczyny : 

swApp.ActivateDoc3 swComp.Name2, False, swRebuildOnActivation_e.swRebuildActiveDoc, Empty

 

Umieszczam moje makro w PJ, gdybyś mógł na nie spojrzeć, aby poprowadzić mnie po raz kolejny, byłbym wdzięczny!!

Dziękuję


attribuer_traitement_de_surface_a_couleur.swp

ActivateDoc3 wymaga nazwy części (<ModelDoc2>. GetTitle lub <ModelDoc2>. GetPathName) zamiast nazwy składnika  (swComp.Name2)