> For the complete documentation index, see [llms.txt](https://docs.geodin.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.geodin.com/geodin-ground/pt/fluxos-de-trabalho-e-integracoes/arcgis-integration/arcgis-pro-attach-reports.md).

# Anexando Relatório às anotações de Furo

{% embed url="<https://www.youtube.com/watch?v=34Gydh4vkws>" %}

> **Capítulos do vídeo:** 0:00 Como o GeoDin organiza as pastas de Relatório de Furo | 0:37 Localizando anotações de Documento | 1:14 Preparando o campo AttachKey | 1:53 Selecionando Perfurações com Documentos ligados | 2:25 Calculando os Valores de AttachKey | 3:33 Ativando e gerando Acerto de anexos | 4:35 Adicionando os anexos | 5:34 Verificando os Relatórios anexados

Quando um desenho do Civil 3D com Perfurações GeoDin® Ground é trazido para o ArcGIS Pro ([tutorial anterior](/geodin-ground/pt/fluxos-de-trabalho-e-integracoes/arcgis-integration/arcgis-pro-ground-model.md)), os Relatório PDF exportados podem ser anexados à anotação de Documento de cada Furo - assim, o Relatório geotécnico correto abre a partir da feature correta. Este tutorial cria uma chave de correspondência e executa as duas ferramentas de geoprocessamento que ligam os PDFs às anotações.

{% hint style="info" %}
Para o mesmo fluxo de trabalho partindo de Camadas de Ponto exportadas pelo GeoDin® (um registo por Furo), veja [Anexar Relatório](https://docs.geodin.com/integrations-and-plug-ins/overview/attach-reports) na documentação do GeoDin®. A Versão abaixo trata da camada de anotação do Civil 3D, onde cada Furo tem **múltiplos** registos de anotação.
{% endhint %}

## Paso 1: Localize o Relatório e confirme as anotações

* Ao Importar, o GeoDin® Ground cria uma Pasta de Documentos ao lado do desenho, estruturada por Projeto: com uma subpasta por Furo, cada uma contendo o Relatório geotécnico desse Furo.
* Copiar os PDFs do Relatório para uma Pasta de trabalho para simplificar a correspondência.

<figure><img src="/files/272b1eb511d8b8fa7bf43b248cad404416202f10" alt=""><figcaption><p>A Pasta de Documentos exportados e o PDF Geotech Soil Log de um Furo</p></figcaption></figure>

* Na Tabela de atributos da camada de anotação, confirme o registo do Documento do Furo: o seu **RefName** lê "1 Documento(s)".

<figure><img src="/files/541e7137e1cdd932aeeb3d9b183c1379c1686eb8" alt=""><figcaption><p>O registo de anotação de Documento na Tabela de atributos</p></figcaption></figure>

## Paso 2: Adicionar um campo-chave

* Abrir a vista de campos da classe de feição e adicionar um Novo campo chamado **AttachKey** com **Típo de dados = Texto**. Guardar as Mudanças.

<figure><img src="/files/5db6006d855543bff3b3a20c497acc0568c52f4f" alt=""><figcaption><p>O campo AttachKey adicionado como Texto</p></figcaption></figure>

## Paso 3: Selecionar apenas as anotações do Documento

* Usa **Selecionar por Atributos** com a cláusula: **RefName contém o Texto** `Documento`.
* Aceitar e verificar a Contagem da Escolha / Seleção antes de continuar - a chave deve ser calculado apenas para estes Registos.

<figure><img src="/files/e8ae51bcef00ae027f7b6d87a1e31e1e5ac97449" alt=""><figcaption><p>Selecionando os registos de anotações do Documento</p></figcaption></figure>

## Paso 4: Calcular a chave

* Com a Escolha / Seleção ativa, clique com o botão direito **AttachKey > Calcular Campo**, defina **Expressão Típo = Python**, Expressão `extract_bh(!Layer!)`, e este Bloco de Código.:

```python
def extract_bh(layer):
    layer = layer.upper()

    # Defina prefixo e sufixo conhecidos
    prefixo = "LOC_BASE-"
    sufixo = "-BASIC"

    se layer.startswith(prefix) e layer.endswith(suffix):
        return layer[len(prefix):-len(suffix)] + " -"

    retornar nenhum
```

<figure><img src="/files/d2789661c59b2f243a4fe3fc917c83e029035435" alt=""><figcaption><p>Calcular Campo aplicado apenas ao/à Registos selecionado</p></figcaption></figure>

* O final `" -"` é intencional: torna a chave suficientemente específica ao/à fazer correspondência por prefixo exatamente com um nome de ficheiro de Relatório, para que Perfurações com nomes semelhantes (BH1 vs. BH1A) não possam fazer correspondência cruzada.

<figure><img src="/files/9224fd53d95f210bf9a675b2c57186504b91d548" alt=""><figcaption><p>A chave preenchida - Nome do furo mais hífen final</p></figcaption></figure>

## Paso 5: Ativar anexos

* Abrir a classe de feição **Propriedades > Gerir** e ativar **Anexos** (os anexos são uma feição da geodatabase - a camada de anotação tem de ser uma classe de feição da geodatabase, e não um shapefile). Guardar.

<figure><img src="/files/4925746e9b208228cde918b51e7584ad2ef44d9d" alt=""><figcaption><p>Anexos ativados na classe de feição</p></figcaption></figure>

## Paso 6: Gerar a tabela de correspondência

* Executar o **Gerar Tabela de Correspondência de Anexos** ferramenta de geoprocessamento:
  * **Conjunto de dados de entrada**: a camada de anotação (registos selecionados).
  * **Pasta de entrada**: a pasta de trabalho com os PDFs.
  * **Campo-chave**: `AttachKey` - **Filtro de Dados de entrada**: `*.pdf` - **Padrão de correspondência**: **Prefixo**.

<figure><img src="/files/663538910323f0366fc8ac8e76b9e9fe345ea43f" alt=""><figcaption><p>Gerar Tabela de Correspondência de Anexos com o Padrão de correspondência definido como Prefixo</p></figcaption></figure>

## Paso 7: Adicionar os anexos

* Executar **Adicionar anexos** com o mesmo conjunto de dados de entrada, **Campo de junção de entrada** `OBJECTID`, a tabela de correspondência do Paso 6, e **Campo de junção de correspondência** `MatchID`.

<figure><img src="/files/9f9a742715f595b8b09db903a993b624842dc75d" alt=""><figcaption><p>Adicionar anexos associando OBJECTID a MatchID</p></figcaption></figure>

## Paso 8: Verificar

* Clique numa anotação de documento na cena e percorra o respetivo pop-up: o Relatório geotécnico aparece como anexo.
* Faça uma verificação pontual de uma ou duas perfurações adicionais para confirmar que a correspondência funcionou de forma consistente.

<figure><img src="/files/f5349fb80ccc653f8c91a58331e744469c9937e1" alt=""><figcaption><p>O Relatório anexado à anotação, verificado no pop-up</p></figcaption></figure>

## Configurações gerais opcionais

* **Âmbito da Escolha / Seleção** - calcular a chave **apenas para os registos de documento selecionados**; calcular em todas as linhas cria acertos incorretos.
* **Especificidade da chave** - se vários Relatório tiverem nomes semelhantes, torne o Formato da chave mais específico antes da correspondência (o sufixo `" -"` existe precisamente para isso).

***

## Trabalhar com a correspondência de anexos

Confirme que os anexos estão ativados antes de executar a correspondência e adicionar ferramentas, e faça uma verificação pontual de uma perfuração após cada etapa (chave calculado, tabela de correspondência gerada, anexos adicionados) para que um desfasamento seja detetado um Paso antes da sua causa, em vez de no Fim.

***

**Próximo Paso:** [Publicar e rever o modelo como uma cena web](/geodin-ground/pt/fluxos-de-trabalho-e-integracoes/arcgis-integration/arcgis-web-scene.md) - os Relatório anexados permanecem Disponível nas janelas pop-up da cena publicada.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.geodin.com/geodin-ground/pt/fluxos-de-trabalho-e-integracoes/arcgis-integration/arcgis-pro-attach-reports.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
