Civil 3d - Tutoriais - 11.1 - Canal

Vamos fazer o seguinte, Um canal, com escavação em rocha e solo. As paredes tem inclinações, banquetas já conhecidas, deste exemplo. Basicamente é isto:

Veja que para dar certo, precisaremos ter as superfícies do terreno natural e precisamos conhecer a espessura da camada de solo. Bem... o terreno natural é fácil, vem do levantamento topográfico e isso você já deve ter. no meu exemplo, eu "criei" uma topografia fictícia, com duas 3DPOLY, usando-as como breaklines.
Baixe-as.

Feito isso, criei a surface TERRENO, e adicionei estas breaklines. Se bem que seria interessante usar a SUA própria topografia, ok?

O passo seguinte, será fazer a surface da rocha, para isso imagine que nossas sondagens acusam uma camada de solo de cerca de 5 metros de espessura... bem... será que podemos considerar uma camada uniforme? Isso é você quem decide ai no seu projeto, para efeito de exemplo, a minha cada é de 5 metros e fim de papo, hehehe

Vamos lá, crie agora outra surface, chame-a de ROCHA. Agora cole o terreno dentro dela.

Opáááááá!!! Como assim Bial????
Assim:


Expanda "Surfaces/ROCHA/Definition/Edits" e clique o botão direito do mouse sobre o o "Edits" e escolha "Paste Surface". Escolha a surface TERRENO e clique OK:

Agora, vamos fazer a surface ROCHA estar 5 metros abaixo desta, para isso, no menu anterior ("Surfaces/ROCHA/Definition/Edits", botão direito) escolha "Raise/Lower Surface". O civil 3D irá pedir para informar quanto mover na direção "Z", vertical, como preferir. Informe 5 negativo, para que a surface da ROCHA desça.
Pronto você já deve ter algo parecido com isso:

É, tosco, eu sei... mas baixe assim mesmo, hehehe!!!

Crie o alinhamento e o perfil do canal:




Viu como o perfil da ROCHA ficou 5 metros abaixo do perfil do TERRENO?
O greide do undo do canal eu arbitrei uns 10 metros de profundidade, com caimento de 0,26%.
Baixe o alinhamento com o perfil

Agora, a perte "difícil":
Modelar a seção tipo. Veja a primeira imagem:

Na verdade, são dois taludes escalonados, apenas isso...
Para fazer o fundo, vou usar a SUBASSEMBLY "LinkWidthAndSlope" e as paredes serão feitas com "DaylightBench", um para a rocha e outro "pendurado" a este para o solo. Veja que tomei o cuidado de nomear cada SUBASSEMBLY, na hora de setar os TARGETs do corridor (sim, modelaremos um corridor!!!).



Veja ainda que o SUBASSEMBLY "DaylightBench" tem "CUT" e "FILL", como se trata de um canal, não vou usar a parte "FILL" deles. Por isso o SUBASSEMBLY "DaylightBench" correspondente ao terreno está pendurado na parte "CUT" do "DaylightBench" da rocha.

Os valores dos parâmetros de cada subassembly é por sua conta!!! Exercite isto tentando imitar a seção dada!!
Veja como fica.

Então, vamos modelar o corridor!!!
A tela principal:


Os "targets":


A surface dos códigos "Datum":


E sua "boundary" pelo "DayLigth" mais externo:


E pronto, uma vista superior:


Estará certo isso??? Vamos fazer umas seções pra ver!!!

Escolhi seções de 20m em 20m, com 30m para cada lado e desenhei as "sections views":


É... deu certo, vamos pintar as seções com os cortes em solo e em rocha?
Para isso, acesse as propriedades das "SAMPLE LINE GROUPS" e vá na aba "Material List", crie duas como na figura:


E o resultado:


Agora, use o comando ADDMATERIALVOLUMETABLE:


Escolha o material "CORTE SOLO", depois repita para "CORTE ROCHA":


A tabela eu usei o estilo "Standard", só tirei o preenchimento....
Pra finalizar, o canal em 3D:


Veja o resultado final

NETLOAD - que saco!!

Fez sua ".net" dll e toda vez que vai usar ela tem que usar o netload? Resolveu ela com lisp:
(command "netload" "c:/testenet.dll")???
Credo!!! Eu também já me encomodei com isso... em fim, eu fiz uma gambiarra aqui que pode te ser util, primeiro pegue aquele pequeno teste de vb.net, ou copia este:

mais...


Public Class teste
'o autocad em si
Public acadApp AsIAcadApplication

Public Sub New()
'17.0? = cad 2007
'17.1 = cad 2008
'17.2 = cad 2009
acadApp = GetObject(, "Autocad.Application.17.1")

'adiciona o loader ao registro:

'calcula a chave de registro:
Dim acadkey As String = SystemObjects.DynamicLinker.ProductKey & _
"\Applications"

'monta a string da localização da DLL:
Dim loader As String = My.Application.Info.DirectoryPath & "\" & _
My.Application.Info.AssemblyName & ".dll"

'cria e/ou abre uma chave para sua aplicação:
Dim key As RegistryKey = Registry.CurrentUser. _
OpenSubKey(acadkey, True). _
CreateSubKey("TESTE")

'caso voce mude a pasta onde está instalada, deve atualizar no registro:
If key.GetValue("LOADER") <>loader Then
With key
.SetValue("DESCRIPTION", "TESTE,este é um teste de AUTOLOAD")

'estes valores não mudam:
.SetValue("LOADCTRLS", 12, RegistryValueKind.DWord)
.SetValue("MANAGED", 1, RegistryValueKind.DWord)
.SetValue("LOADER", loader)

'aqui, adiciona a lista os comandos criados:
With .CreateSubKey("Commands")
Dim mtr() AsObject = {"DESENHALINHA","TESTE"}
ForEach k In mtr
.SetValue(k, k)
Next
End With
End With
End If

End Sub

<CommandMethod("TESTE")> _
Public Sub TESTE()
MsgBox("OLÁ MUNDO!")
End Sub
'expoe a sub como um novo comando do autocad
<CommandMethod("DESENHALINHA")> _
Public Sub desenhalinha()
Dim Thisdrawing As IAcadDocument = acadApp.ActiveDocument
Dim pt1(2), pt2(2) AsDouble
Dim linha As AcadLine
Dim lay As AcadLayer

'pede o primeiro ponto:
pt1 = Thisdrawing.Utility.GetPoint(, "Entre com o primeiro ponto")

'pede o segundo ponto:
pt2 = Thisdrawing.Utility.GetPoint(pt1,"Entre com o segundo ponto")

'desenha uma linha:
linha = Thisdrawing.ModelSpace.AddLine(pt1, pt2)

'troca o layer, criando se ele nao existe:
Try
linha.Layer = "layer_teste"
Catch
lay = Thisdrawing.Layers.Add("layer_teste")
linha.Layer = "layer_teste"
End Try

End Sub

End Class

A idéia é usar o registro do windows, como descrito aqui

Este exemplo, gerou estas linhas no registro:


Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.2\ACAD-7000:409\Applications\TESTE]
"DESCRIPTION"="TESTE, este é um teste de AUTOLOAD"
"LOADCTRLS"=dword:0000000c
"MANAGED"=dword:00000001
"LOADER"="I:\\vbnet\\TESTE\\teste\\bin\\Release\\teste.dll"

[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.2\ACAD-7000:409\Applications\TESTE\Commands]
"DESENHALINHA"="DESENHALINHA"
"TESTE"="TESTE"



Veja que adicionei algumas linhas na sub "NEW" da minha classe, que faz o trabalho de adicionar ao registro os parâmetros necessários ao autoload.

Assim, só é necessário UM netload, que acaba funcionando como uma instalação. Se você fechar o autocad e abrir novamente, bastará digitar o nome do comando que você criou na sua dll, basta apenas que a inclua naquela lista, deste exemplo:
Dim mtr() AsObject = {"DESENHALINHA","TESTE"}
"DESENHALINHA" e "TESTE" são os nomes dos comandos implementados nesta dll.

Se quiser, baixe aqui o código fonte para o cad 2009. Caso tenha anteriores, apenas troque as referências:

Itaipu - A obra

Opa pessoal!!!, sei que faz um tempo que não posto algo sobre o Civil 3d ou lisp, mas é que estou de férias hehehe, logo que voltar eu posto, blz?
Enquanto isso, baba:

Até emprestei um "brinquedinho" hehehehe:



Itaipu


Eu já estive lá diversas vezes, mas não te como não se impressionar!!!

Quando você for lá, vá na visita mais cara, pois compensa!!

E se você tiver tempo, faça um estágio de férias, pois os turistas não vêem nada da grandiosidade da ITAIPU!!! Hehehehe