# Zarządzanie grupami punktów

<figure><img src="https://2069116583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FT8P36P8hlroW5MOSGuXc%2Fuploads%2Fgit-blob-860970db9cbdf8a33d24ec6d1e14a5883672005b%2FSurvey_CreatePointGroups_Player.gif?alt=media" alt=""><figcaption></figcaption></figure>

Praca z punktami COGO i grupami punktów w programie Civil 3D jest podstawowym elementem wielu procesów realizowanych od pola do zakończenia. Dodatek Dynamo naprawdę sprawdza się w przypadku konieczności zarządzania danymi. W tym przykładzie zademonstrujemy jeden potencjalny przypadek zastosowania.

## Cel

> :dart: Utworzenie grupy punktów dla każdego niepowtarzalnego opisu punktu COGO.

## Kluczowe pojęcia

> * Praca z listami
> * Grupowanie podobnych obiektów za pomocą węzła **List.GroupByKey**
> * Wyświetlanie niestandardowych danych wyjściowych w Odtwarzaczu Dynamo

## Zgodność wersji

{% hint style="success" %}
Ten wykres będzie działać w programie **Civil 3D 2020** i w nowszych wersjach.
{% endhint %}

## Zestaw danych

Najpierw pobierz pliki przykładów poniżej, a następnie otwórz plik DWG i wykres dodatku Dynamo.

{% file src="<https://2069116583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FT8P36P8hlroW5MOSGuXc%2Fuploads%2Fgit-blob-68c592610d9a8821d43a6a5e7cc5a1a9aab62cb5%2FSurvey_CreatePointGroups.dyn?alt=media>" %}

{% file src="<https://2069116583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FT8P36P8hlroW5MOSGuXc%2Fuploads%2Fgit-blob-56020caa20760d9eef2dd6a67c62f283400c283b%2FSurvey_CreatePointGroups.dwg?alt=media>" %}

## Rozwiązanie

Poniżej przedstawiono przegląd logiki na tym wykresie.

> 1. Pobieranie wszystkich punktów COGO w dokumencie
> 2. Grupowanie punktów COGO na podstawie opisu
> 3. Tworzenie grup punktów
> 4. Wyprowadzanie danych z podsumowaniem do Odtwarzacza Dynamo

Zacznijmy!

### Pobieranie punktów COGO

Pierwszym krokiem jest pobranie wszystkich grup punktów w dokumencie, a następnie pobranie wszystkich punktów COGO w każdej grupie. Dzięki temu otrzymamy *listę zagnieżdżoną* lub „listę list”, z którą łatwiej będzie pracować później, jeśli spłaszczymy wszystko do pojedynczej listy za pomocą węzła **List.Flatten**.

{% hint style="info" %}
Jeśli nie zdarzyło Ci się jeszcze pracować z listami, skorzystaj z sekcji [2-working-with-lists](https://primer2.dynamobim.org/pl/5_essential_nodes_and_concepts/5-4_designing-with-lists/2-working-with-lists "mention").
{% endhint %}

<figure><img src="https://2069116583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FT8P36P8hlroW5MOSGuXc%2Fuploads%2Fgit-blob-b6d5829e6972d7bcf560913c4c888b076f0b8c63%2FSurvey_CreatePointGroups_GetPoints.png?alt=media" alt=""><figcaption><p>Pobieranie wszystkich grup punktów i punktów COGO</p></figcaption></figure>

### Grupowanie punktów na podstawie opisu

Mamy już wszystkie punkty COGO. Teraz musimy rozdzielić je na grupy na podstawie ich opisów. Właśnie do tego służy węzeł **List.GroupByKey**. Zasadniczo grupuje on wszystkie elementy o tym samym kluczu.

<figure><img src="https://2069116583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FT8P36P8hlroW5MOSGuXc%2Fuploads%2Fgit-blob-1dc33f106d1fe23c1ddcfaf5d44981bb93c5e073%2FSurvey_CreatePointGroups_GroupPoints.png?alt=media" alt="" width="563"><figcaption><p>Grupowanie punktów COGO na podstawie opisu</p></figcaption></figure>

### Tworzenie grup punktów

Najcięższą pracę mamy już za sobą. Ostatnią czynnością jest utworzenie nowych grup punktów programu Civil 3D na podstawie zgrupowanych punktów COGO.

<figure><img src="https://2069116583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FT8P36P8hlroW5MOSGuXc%2Fuploads%2Fgit-blob-c00a6e7ad8cf938ca43602d6f0305bc93ebfd5ac%2FSurvey_CreatePointGroups_CreatePointGroups.png?alt=media" alt="" width="371"><figcaption><p>Tworzenie nowych grup punktów</p></figcaption></figure>

### Podsumowanie danych wyjściowych

Po uruchomieniu wykresu w podglądzie tła dodatku Dynamo niczego nie ma, ponieważ nie pracujemy z żadną geometrią. Dlatego jedynym sposobem sprawdzenia, czy wykres jest wykonywany poprawnie, jest sprawdzenie obszaru narzędzi lub podglądów danych wyjściowych węzłów. Jeśli jednak wykres zostanie uruchomiony za pomocą **Odtwarzacza Dynamo**, można przekazać więcej informacji na temat wyników wykresu, drukując podsumowanie utworzonych grup punktów. Wystarczy kliknąć prawym przyciskiem myszy węzeł i skonfigurować dla niego ustawienie *Is Output* (Dane wyjściowe). W tym przypadku użyjemy węzła **Watch** o zmienionej nazwie, aby wyświetlić wyniki.

<figure><img src="https://2069116583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FT8P36P8hlroW5MOSGuXc%2Fuploads%2Fgit-blob-70ccd96998b9092870379ff76ce2f158216df4c5%2FSurvey_CreatePointGroups_Output.png?alt=media" alt="" width="437"><figcaption><p>Skonfigurowanie węzła jako <em>Is Output</em> (Dane wyjściowe) spowoduje wyświetlenie jego zawartości w danych wyjściowych Odtwarzacza Dynamo</p></figcaption></figure>

### Wynik

Oto przykład uruchomienia wykresu za pomocą **Odtwarzacza Dynamo**.

<figure><img src="https://2069116583-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FT8P36P8hlroW5MOSGuXc%2Fuploads%2Fgit-blob-860970db9cbdf8a33d24ec6d1e14a5883672005b%2FSurvey_CreatePointGroups_Player.gif?alt=media" alt=""><figcaption><p>Uruchamianie wykresu za pomocą Odtwarzacza Dynamo i wyświetlanie wyników w obszarze narzędzi</p></figcaption></figure>

{% hint style="info" %}
Jeśli nie znasz jeszcze Odtwarzacza Dynamo Player, skorzystaj z sekcji [dynamo-player](https://primer2.dynamobim.org/pl/dynamo-for-civil-3d/dynamo-player "mention").
{% endhint %}

> :tada: Misja wykonana!

## Pomysły

Oto kilka pomysłów na rozszerzenie możliwości tego wykresu.

{% hint style="info" %}
Zmodyfikuj grupowanie punktów tak, aby było oparte na **pełnym opisie**, a nie na opisie nieprzetworzonym.
{% endhint %}

{% hint style="info" %}
Grupuj punkty na podstawie innych wybranych **wstępnie zdefiniowanych kategorii** (na przykład „Ground shots”, „Monuments” itp.)
{% endhint %}

{% hint style="info" %}
Automatycznie twórz powierzchnie TIN dla punktów w niektórych grupach.
{% endhint %}
