Exemplo de script de API: Geração de ponto COGO

Cria novos nós no Autodesk Dynamo para Civil 3D a fim de permitir a criação de pontos, a adição de pontos a um grupo de pontos e a criação de uma superfície a partir de um grupo de pontos.

Script de amostra do Dynamo: CoGoPoints.dyn

Projeto de amostra: CoGoPoints.dwg

  1. Crie um novo projeto do C# chamado Biblioteca de classes de pontos CoGo (.Net Framework) usando o .NET Framework 4.7.
  2. Adicione arquivos ao projeto: Point.cs, PointGroup.cs e Surface.cs.
  3. Adicione referências a esses arquivos (por exemplo: AeccDbMgd.dll) a partir do caminho de instalação do Civil 3D.
  4. Crie a solução e, em seguida, gere o arquivo CoGoPoints.dll.
  5. Execute o Civil 3D e abra o CoGoPoints.dwg.
  6. Clique na guia Gerenciar painel Programação visual Dynamo .
  7. Selecione Arquivo Importar biblioteca e, em seguida, selecione CoGoPoints.dll.

    Os nós criados após a importação de CoGoPoints.dll são mostrados na ilustração a seguir.

  8. Abra e execute o script CoGoPoints.dyn.

    Pontos COGO são criados no desenho e adicionados a um grupo de pontos; é criada uma superfície a partir desse grupo de pontos.

São fornecidas duas classes no Dynamo para a criação de novos nós e a adição de um mecanismo de traçamento para os novos nós.
  1. Autodesk.AutoCAD.DynamoNodes.ObjectBase: Fornece o encapsulamento do Autodesk.AutoCAD.DatabaseServices.DBObject
  2. Autodesk.AutoCAD.DynamoNodes.Object: Derivado do Autodesk.AutoCAD.DynamoNodes.ObjectBase para estender propriedades ou funções de acordo com o Autodesk.AutoCAD.DatabaseServices.Object

O Dynamo fornece duas maneiras de executar mecanismos de traçamento. Uma delas é usar o método existente (Estrutura comum) ao criar novos nós. A outra é escrever um código de traçamento usando um modelo.

Para executar um mecanismo de traçamento para novos nós, é necessário que as classes sejam derivadas do Autodesk.AutoCAD.DynamoNodes.ObjectBase ou do Autodesk.AutoCAD.DynamoNodes.Object. Um nó traçado deve ter uma saída da classe de nó criada para tornar o traçamento válido.

Usar método de traçamento (Estrutura comum)

A função Estrutura comum é criada no Autodesk.AutoCAD.DynamoNodes.ObjectBase e no Autodesk.AutoCAD.DynamoNodes.Object.

Autodesk.AutoCAD.DynamoNodes.ObjectBase Autodesk.AutoCAD.DynamoNodes.Object

É possível criar classes para herdar o Autodesk.AutoCAD.DynamoNodes.ObjectBase ou o Autodesk.AutoCAD.DynamoNodes.Object. Você pode usar os métodos acima quando criar novos nós de acordo com a relação de herança. Por exemplo, observe o seguinte nó: PointGroup.CreateFromPoints.

O nó cria um grupo de pontos no Civil 3D a partir de uma lista de pontos.

Autodesk.Civil.DatabaseServices.PointGroup define um grupo de pontos no Civil 3D com base em Autodesk.AutoCAD.DatabaseServices.Object. É necessário criar uma nova classe chamada Grupo de pontos derivada do Autodesk.AutoCAD.DynamoNodes.Objectbase para encapsular o tipo de grupo de pontos do Civil 3D. É possível adicionar o atributo DynamoServices.RegisterForTrace à classe Grupo de pontos para que o mecanismo de traçamento possa ser executado. Isso não é obrigatório, pois o Dynamo oferece suporte a esse mecanismo por padrão, mas é uma boa convenção de codificação.

Agora, o nó Criar a partir de pontos pode ser definido em Grupo de pontos. Devido à relação inerente, é possível chamar a função Estrutura comum no Autodesk.AutoCAD.DynamoNodes.ObjectBase.

O método NóT é o tipo do nó e é necessário para herdar Autodesk.AutoCAD.DynamoNodes.ObjectBase.

Neste exemplo:
TNode = CogoPoints.PointGroup
O objeto ObjetoT é o tipo de objeto do AutoCAD necessário para herdar Autodesk.AutoCAD.DatabaseServices.DBObject.
Neste exemplo:
TObject = Autodesk.Civil.DatabaseServices.PointGroup
A função Criador de objetos cria objetos. Neste exemplo, ela é definida como a criação de um novo grupo de pontos.

A função Atualizador de objetos atualiza objetos. Neste exemplo, ela é definida como a atualização de um grupo de pontos existente.

A função Estrutura comum tenta encontrar objetos existentes a partir do manipulador traçado. Quando encontrados, os objetos são atualizados com o Atualizador de objetos com isExisting==true. Se ocorrer falha na atualização, o Criador de objetos solicitará a criação de um novo objeto e, em seguida, o Atualizador de objetos chamará isExisting==false.

A função Estrutura comum tenta atualizar os objetos existentes no banco de dados com o mesmo valor do manipulador traçado. Se ocorrer falha, será criado um novo objeto. Se o objeto não aceitar atualizações, você poderá retornar isExisting==false. Isso significa que você criará um novo objeto e excluirá o objeto antigo. Nesse caso, a função Estrutura comum ainda tentará manter o mesmo valor de manipulador.

Os códigos de amostra completos são exibidos em PointGroup.cs e o método Estrutura comum do Autodesk.AutoCAD.DynamoNodes.Object equivale ao descrito acima.

Usar modelo de código de traçamento

É possível escrever códigos de traçamento com o modelo a seguir. No entanto, a classe dos novos nós ainda precisa herdar Autodesk.AutoCAD.DynamoNodes.Object ou Autodesk.AutoCAD.DynamoNodes.Entity.

Você pode preencher tanto o código de criação quanto o código de atualização para executar o código de traçamento mostrado no modelo acima.

Sobre Contexto de documento

A função Contexto de documento garante que o bloqueio de documento seja obtido para o acesso de leitura/gravação do banco de dados e quando é realizada uma transação de abertura de objetos de banco de dados. Qualquer nó que deseje ler ou gravar objetos de banco de dados deverá usar o método acima.