Kolorowanie ścian sześcianu, da się parametrycznie?

Polish forum

Moderators: PrzemoF, kaktus

Forum rules
Regulamin forum i pomocne informacje

WAŻNE! Przeczytaj zanim poprosisz o pomoc
herr3ro
Posts: 3
Joined: Mon May 09, 2022 8:38 am

Kolorowanie ścian sześcianu, da się parametrycznie?

Post by herr3ro »

Cześć, projektuję mebla, takiego z płyty meblowej, niektóre brzegi płyty trzeba oklejać inne zostawić nieoklejone - jest takie narzędzie w Part które umożliwia nadawanie kolorów poszczególnym ściankom, i mogę przypisać jakiś kolor do oznaczenia części nieoklejonych, ale potrzebowałbym nadawać te kolory na podstawie wartości z arkusza Spreadsheet. Czy jest to jakoś możliwie?

Może da się inaczej osiągnąć to aby oznaczać brzegi płyty do oklejenia na podstawie wartości z Spreadsheet'a?
User avatar
NewJoker
Veteran
Posts: 3018
Joined: Sun Oct 11, 2020 7:49 pm

Re: Kolorowanie ścian sześcianu, da się parametrycznie?

Post by NewJoker »

Obawiam się, że Spreadsheet tu nie pomoże. Myślałem żeby użyć skryptu w Pythonie i np. nagrać makro, ale wygląda na to, że narzędzie Part FaceColors nie jest obsługiwane w ten sposób, w przeciwieństwie do Std RandomColor.
User avatar
dprojects
Posts: 721
Joined: Mon Mar 06, 2017 6:02 pm
Location: Poland
Contact:

Re: Kolorowanie ścian sześcianu, da się parametrycznie?

Post by dprojects »

herr3ro wrote: Tue May 10, 2022 9:02 am Cześć, projektuję mebla, takiego z płyty meblowej, niektóre brzegi płyty trzeba oklejać inne zostawić nieoklejone - jest takie narzędzie w Part które umożliwia nadawanie kolorów poszczególnym ściankom, i mogę przypisać jakiś kolor do oznaczenia części nieoklejonych, ale potrzebowałbym nadawać te kolory na podstawie wartości z arkusza Spreadsheet. Czy jest to jakoś możliwie?

Może da się inaczej osiągnąć to aby oznaczać brzegi płyty do oklejenia na podstawie wartości z Spreadsheet'a?
Fajnie że ktoś z Polski też się zajmuje meblami we FreeCADzie, myślałem że sam tylko jestem takim wariatem. A tu proszę ;-)
Generalnie "edgeband", czy jak tam zwał jest we FreeCADzie możliwy do zrealizowania na 3 sposoby.

Drugi raz już czytam o tym że ktoś chce ustawiać edgeband ze spreadsheeta ;-) w sumie to nie wiem za bardzo po co? przecież to bardziej problematyczne niż zaznaczyć konkretny face na modelu 3D i wybrać kolor. W spreadsheecie to musisz znać numery faceów, a problem jest taki że taki array albo MUltiTransform to może mieć tych faceów, setki, a dodatkowo jak zrobisz jakąś transformację na tych obiektach to numerki faceów się pozmieniają.

To oczym piszesz można zrobić, tylko moim zdaniem nie ma to sensu. Byłaby z tym taka grzebanina żeby to poustawiać że szkoda słów ;-)

EDIT:

Zazwyczaj przy meblach, oklejanie krawędzi można podzielić na grupy. Zazwyczaj wszystkie podobne elementy, typu boki, półki, przody mają w podobny sposób oklejane brzegi. Nie ma co do tego dorabiać jakieś niesłychanej teorii ;-) Warto znać przybliżoną wartość długości okleiny żeby wiedzieć ile metrów trzeba kupić w rolkach, albo jak ktoś zamawia płyty przycięte z okleiną to ile będzie trzeba dopłacić.

Thanks
Darek
github.com/dprojects

workbench for woodworking is available at: github.com/dprojects/Woodworking
User avatar
matyk
Posts: 107
Joined: Thu Feb 15, 2018 2:37 pm

Re: Kolorowanie ścian sześcianu, da się parametrycznie?

Post by matyk »

Cześć, wykonałem model sześcianu, który można pokolorować za pomocą makro.
kostka.FCStd
(8.74 KiB) Downloaded 87 times
.
To jest przykładowe makro, kolorujące jedną ścianę sześcianu na czerwono, a cztery na niebiesko.
kostka.FCMacro
(482 Bytes) Downloaded 88 times
.
Jestem zainteresowany tematem kolorowania powierzchni za pomocą arkusza kalkulacyjnego.
Obecnie w celu wykonania takiej gwiazdy, muszę kolorować każdą powierzchnię osobno.
https://youtu.be/2egn0UWuTcQ
Wypróbowanie innego układu barw jest zbyt pracochłonne, więc to sobie zwykle odpuszczam.
.
Każda grupa ścian musi mieć ten sam kolor.
Takich grup zwykle jest kilka, więc kombinacji kolorów do sprawdzenia może być naprawdę sporo.
Najwygodniej to zmieniać w jednym miejscu, czyli w arkuszu kalkulacyjnym, gdzie są dostępne wszystkie inne parametry.
Jaką instrukcją można przenieść wartość z komórki arkusza do makro?
User avatar
kwahoo
Posts: 680
Joined: Fri Nov 29, 2013 3:09 pm
Contact:

Re: Kolorowanie ścian sześcianu, da się parametrycznie?

Post by kwahoo »

matyk wrote: Wed May 11, 2022 10:59 pm Jaką instrukcją można przenieść wartość z komórki arkusza do makro?
Np z komórki B1:

wartosc = App.ActiveDocument.Spreadsheet.get("B1")

https://wiki.freecadweb.org/Spreadsheet ... ypt.C3.B3w

Niezłe "kwiatki" tworzysz;)
User avatar
dprojects
Posts: 721
Joined: Mon Mar 06, 2017 6:02 pm
Location: Poland
Contact:

Re: Kolorowanie ścian sześcianu, da się parametrycznie?

Post by dprojects »

matyk wrote: Wed May 11, 2022 10:59 pm kostka.FCStd
kostka.FCMacro
Spojrzałem na ten przykład i kilka rzeczy mnie zastanawia:

1. Dlaczego używasz Plane a nie Cube?
2. Face dla Cube ustawia się na innym property: .Cube.ViewObject.DiffuseColor, podobnie dla innych obiektów typu Pad.
3. Nie rozumiem schematu tego spreadsheeta, o jakie grupy kolorów chodzi?
4. Jeżeli chcesz używać nazw kolorów typu: "black", "white", "blue" , to potrzebny jest też fragment kodu który zamieni "niebieski" na coś takiego:

Code: Select all

(0.3333333432674408, 0.0, 1.0, 0.0)
(0.3333333432674408, 0.0, 1.0, 0.0)
(0.3333333432674408, 0.0, 1.0, 0.0)
(0.3333333432674408, 0.0, 1.0, 0.0)
(0.3333333432674408, 0.0, 1.0, 0.0)
(0.3333333432674408, 0.0, 1.0, 0.0)
no bo kolory są w takiej postaci trzymane przez FreeCADa.


Mógłbym dodać taki ficzer, bo to pewnie dużo kodu nie jest, pewnie jedna pętla for, tylko fajnie jakby miał jakieś szersze zastosowanie w woodworkingu. Jedyne zastosowanie jakie mi przychodzi do głowy w tej chwili to przykładowo kostka Rubika, żeby sprawdzać kolejne przejścia przy pomocy danych zaimportowanych do spreadsheeta.

Thanks
Darek
github.com/dprojects

workbench for woodworking is available at: github.com/dprojects/Woodworking
User avatar
matyk
Posts: 107
Joined: Thu Feb 15, 2018 2:37 pm

Re: Kolorowanie ścian sześcianu, da się parametrycznie?

Post by matyk »

kwahoo wrote: Thu May 12, 2022 2:45 pm Niezłe "kwiatki" tworzysz;)
Dziękuję.
Tak wygląda 'kwiatek' w praktyce i na modelu CAD.
Star6_.JPG
Star6_.JPG (228.82 KiB) Viewed 2252 times
Nie miałem sznurków w aż tylu różnych kolorach i musiałem kombinować.
Dwa kolory z konieczności zastąpiłem jednym.
Gdybym mógł to sprawdzić na modelu, to może bym zastąpił nie zielonym, a innym kolorem.
Twoje informacje pomogą mi to sprawdzać w przyszłości.
User avatar
dprojects
Posts: 721
Joined: Mon Mar 06, 2017 6:02 pm
Location: Poland
Contact:

Re: Kolorowanie ścian sześcianu, da się parametrycznie?

Post by dprojects »

matyk wrote: Thu May 12, 2022 9:12 pm Tak wygląda 'kwiatek' w praktyce i na modelu CAD.
W twoim przypadku chyba lepiej by było utworzyć jakiś obiekt sznurek i później go kopiować i zmieniać cały kolor obiektu a nie tylko face, coś w tym stylu: https://www.youtube.com/watch?v=Z5TUajGHqxo

Aczkolwiek, temat kostki Rubika mnie zaciekawił i napisałem na szybko taki skrypt który koloruje kostkę Rubika, może się komuś też przyda. Nie testowałem go w innych przypadkach więc nie mam pojęcia czy zadziała w innych przypadkach. Można by jeszcze dodać jakiś skypt obracający kostkę Rubika i można by się bawić pod FreeCADem ;-)

Przy okazji chyba jest znowu jakiś bug we FreeCADzie bo coś mi kolorów faceów nie chce zapisywać. Są one w property ale po otwarciu ponownym pliku kolorów brak.
Image
Attachments
faceColors.py
(877 Bytes) Downloaded 78 times
RubikCube.FCStd
(43.54 KiB) Downloaded 79 times

Thanks
Darek
github.com/dprojects

workbench for woodworking is available at: github.com/dprojects/Woodworking
User avatar
matyk
Posts: 107
Joined: Thu Feb 15, 2018 2:37 pm

Re: Kolorowanie ścian sześcianu, da się parametrycznie?

Post by matyk »

dprojects wrote: Fri May 13, 2022 2:37 pm W twoim przypadku chyba lepiej by było utworzyć jakiś obiekt sznurek i później go kopiować i zmieniać cały kolor obiektu a nie tylko face, coś w tym stylu:
Ja zwykle ustawiam prostopadle do ścieżki, profil przeciągany, bo wtedy lina ładniej wygląda.
Wystarczy zrobić jedną spiralę, a pozostałe dwie można powielić z obrotem.
Z tym akurat nie mam problemu.
lina.jpg
lina.jpg (227.5 KiB) Viewed 2155 times
.
To jest znany żeglarzom grommet. Kiedyś bawiłem się w jego wirtualne wykonanie.
grommet.jpg
grommet.jpg (403.98 KiB) Viewed 2155 times
User avatar
matyk
Posts: 107
Joined: Thu Feb 15, 2018 2:37 pm

Re: Kolorowanie ścian sześcianu, da się parametrycznie?

Post by matyk »

dprojects wrote: Thu May 12, 2022 5:50 pm Spojrzałem na ten przykład i kilka rzeczy mnie zastanawia:
1. Dlaczego używasz Plane a nie Cube?
2. Face dla Cube ustawia się na innym property: .Cube.ViewObject.DiffuseColor, podobnie dla innych obiektów typu Pad.
3. Nie rozumiem schematu tego spreadsheeta, o jakie grupy kolorów chodzi?
4. Jeżeli chcesz używać nazw kolorów typu: "black", "white", "blue" , to potrzebny jest też fragment kodu który zamieni "niebieski" na coś takiego:
.
Rozpatruję bardziej ogólne zagadnienie.
Sześć ścian może tworzyć kostkę, albo kafelki na podłodze, lub jeszcze coś innego.
Kody kolorów pokazują się w oknie Pythona, przy ich zmianie dla danej ściany, więc je sobie bez problemu ustaliłem.
.
Tamte pliki były robocze, niepełne, niedopracowane.
Brakowało mi ważnej instrukcji, którą na szczęście poratował mnie kwahoo :)
.
Teraz wreszcie mogę pokazać działającą, przykładową wersję systemu kodowania kolorów dla sześcianu.
Jest to komplet dwu plików:
kostka1.FCStd
kostka1.FCStd
(9.29 KiB) Downloaded 83 times
i kostka1.FCMacro
kostka1.FCMacro
(947 Bytes) Downloaded 83 times
.
Opis systemu:
W arkuszu Spreadsheet są dwie szare tablice do kodowania za pomocą znaczników logicznych "true".
W pierwszej przypisujemy kolejne ściany do jednej z trzech grup.
W drugiej przypisujemy kolory poszczególnym grupom.
.
Po zakodowaniu wystarczy uruchomić makro i sześcian zostanie pokolorowany zgodnie z naszymi ustawieniami.
.
Ograniczenia:
1. Jedna ściana może należeć tylko do jednej grupy.
2. Jedna grupa może mieć wyłącznie jeden kolor.
3. Grupy są maksymalnie trzy.
.
Pokazuję tylko samą zasadę kodowania, na prostym ograniczonym przykładzie.
Kto chce to może sobie rozbudować system, stosownie do potrzeb.
Można bez problemu zwiększyć liczbę ścian, grup i kolorów.
Post Reply