Checagem de interferência com redes de água no C3DRENESG4

Um cliente (https://esana.com.br/) solicitou que o C3DRENESG4 fizesse a checagem de interferências com redes de água. Agora está disponível:

Curioso que eu não tenha colocado isso a bastante tempo… Talvez porque o C3DRENESG exista desde 2008 e o PressureNetwork surgiu na versão 2013 do Civil 3D (segundo o copilot)

O C3DRENESG foi o primeiro programa de drenagem viável no Civil 3D, mas eu já desenvolvia uma versão em Visual Lisp desde o ano 2000, mais ou menos, que rodava no (acredite!!!) AutoCAD puro!!!! Olha só:

Conhece Visual lisp? As primeiras aparições dessa linguagem foram numa caverna lá na França, hehehe.

Brincadeiras à parte, quem conhece esta linguagem sabe o quão trabalhoso pode ser criar os DCLs (quadros de diálogo), para não falar do código… E olha que o desenho em planta era bem reativo!! Ao mover o PV, o tubo vinha junto, atualizava as “labels”, lia cota na superfície (superfície mesh do AutoCAD), desenhava perfil, criava croquis da planta… Enfim, fazia tudo o que precisava fazer. Dentro do AutoCAD apenas!!!

Aí em 2007 comecei a trabalhar com o Civil 3D. Nossa, outra vida!!! E pensar que eu já havia criado “subrotinas” (era assim que chamávamos no finado site do autolisp) para criar alinhamentos, estaquear, criar perfis, seções… Então portei o código para o Visual Basic (não me julgue, hhehehe) e criei o C3DRENESG:

Esse já usava o Pipenetwork. Levei um ano inteiro para entender o Civil 3D, sua API e esse PipeNetwork… Aliás, os primeiros tutoriais do PartBuilder que existiram em português, são os meus

E gastei mó tempão para “contornar” os problemas dele… Para depois, terceiros venderem como sendo deles…. Enfim, “ligar” as seções dos tubos É A ÚNICA FORMA de desenhar tubo duplo/triplo no pipenetwork, sabia?

Ah, eu usava a API ACTIVEX nesta versão… Pense na dor de cabeça… Aí a API do Civil 3D em DOTNET melhorou muito e fiz o C3DRENESG2:

Esta versão usava a API DOTNET, muito melhor para trabalhar (na minha opinião). Ela existiu entre 2010 e 2013 e já era amplamente aceita no mercado. Não não tinha Gravity Network ainda. Segundo o Copilot, esta ferramenta só surgiu na versão Civil 3D 2020 (Sério???)

Enfim. Como até 2013 não existia o PressureNetwork e quando apareceu, demorou para ser usado, o C3DRENESG nunca havia tomado conhecimento dele….

Aliás, você sabia que o Civil 3D se quer conta com um “Partbuilder” para o PressureNetwork?? Contente-se em adquirir a licença do Inventor para criar peças para ele, ou ainda, crie peças estáticas com sólidos 3d e adicione ao catálogo com o “Infrastructure parts editor“.

Bom, o plugin C3DRENESG4 foi a evolução disso tudo:

Em 2014. Com dimensionamento usando método racional e contribuição em marcha. Citado em diversos TCCs, publicações acadêmicas, termos de referência…. Sim, existiu uma versão 3, mas ela nasceu morta, por assim dizer…

Tenho milhares de clientes que o preferem, mesmo quando comparado ao SOLIDOS. Por isso ele ainda está aí. E hoje ganhou atualização!!! Checagem de interferência com o PressureNetwork.

Poderia ter ocorrido antes? Talvez. Fato é que ninguém havia se preocupado com isso antes… Mas claro que nem tudo são flores… A API do PressureNetwork ainda precisa de algumas funções. Por exemplo: Se o tubo for curvo, como obter a sua curvatura?

Ponto inicial, final, diâmetro, tudo bem. Mas e a curvatura???? Pra variar, aquela gambiarra básica para resolver a questão, heheheh, saca só:

Public Function CalcMidPoint(tubo As PressurePipe) As Point3d
    Using tmpTr = DOC.TransactionManager.StartTransaction
        Dim st As PressurePipeStyle = tmpTr.GetObject(tubo.StyleId, ForWrite)
        For Each en In [Enum].GetValues(GetType(PressurePipeDisplayStylePlanType))
            st.GetDisplayStylePlan(en).Visible = en = PressurePipeDisplayStylePlanType.Centerline
        Next

        Dim dbo As New DBObjectCollection
        tubo.Explode(dbo)
        Dim bref As BlockReference = dbo(0)
        dbo.Clear()
        bref.Explode(dbo)
        Dim curva As Curve = dbo(0)
        Return curva.GetPointAtParameter((curva.StartParam + curva.EndParam) / 2)
    End Using
End Function

A ideia é temporariamente colocar o estilo para representar apenas o eixo do tubo. Então explodir e obter o ponto médio deste eixo. Com o ponto inicial, final e o ponto médio, podemos deduzir o raio da curvatura em planta. Usei este artifício para criar o programa que exporta a tabela do Civil 3d, você viu?

Enfim… Com este pequeno programa e umas poucas adições ao código do C3DRENESG4, agora ele consegue validar interferências com redes de água do PressureNetwork, dentro da planilha!!!

Ah, pode copiar o código. Mas põe os créditos. Não custa nada!!!

Deixe um comentário

Rolar para cima