Que tal mudar um pouco a cara dos nosso programinhas e tornar a coisa mais interessante? Vamos experimentar o VB.NET então!!! Com ele podemos usar os forms do Framework, bem mais interessantes que os basiquinhos do VBA e MUIIIIIIIITTO melhor que os famigerados DCLs (objectdcl... nome fácil de pegar nojo, hehehe) vamos fazer algo mais que o famoso "Hello World" que todo tutorial faz, vamos já desenhar uma linha!!!
Para isso, usei o VB.NET Express Edition, di grátis no site da M$ e o Autocad, no caso as versões 2008 de ambos
no editor do VB.Net, crie uma nova "Class Library" e colenela este código:
Para isso, usei o VB.NET Express Edition, di grátis no site da M$ e o Autocad, no caso as versões 2008 de ambos
no editor do VB.Net, crie uma nova "Class Library" e colenela este código:
'acadApp depende de:
Imports AutoCAD = Autodesk.AutoCAD.Interop
'objetos do cad (textot, linha, layer, etc..) dependem de:
Imports AcadLib = Autodesk.AutoCAD.Interop.Common
'CommandMethod depende de:
Imports Autodesk.AutoCAD.Runtime
Public Class teste
'o autocad em si
Public acadApp As AutoCAD.IAcadApplication
'documento corrente
Public Thisdrawing As AutoCAD.IAcadDocument
'é executado ao carregar a dll com o NETLOAD
Public Sub New()
'17.0? = cad 2007
'17.1 = cad 2008
'17.2 = cad 2009
acadApp = GetObject(, "Autocad.Application.17.1")
Thisdrawing = acadApp.ActiveDocument
End Sub
'expoe a sub como um novo comando do autocad
_
Public Sub desenhalinha()
Dim pt1(2), pt2(2) As Double
Dim linha As AcadLib.AcadLine
Dim lay As AcadLib.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
Algumas palavras devem aparecer sublinhadas, pois ainda não adicionamos as referências que precisamos, são elas (no caso do cad 2008):
para que possamos criar comandos:
pasta do Autocad\"acmgd.dll"
para que possamos desenhar no cad:
"Autocad 2008 Type Lybrary"
"Autocad/ObjecDBX Commom 17.0 type Libray"
E pronto!!
As partes importantes da classe:
a sub "New" que inicializa qualquer coisa que precisamos ao carregar a dll que será gerada e a linha _ antes da Sub que contem o programa em si
De resto, é algumas adaptações do código VBA para VB.NET, por exemplo:
o tipo "Variant" irá ser o tipo "Object", o legal é que o processo do "copiar/colar" já az essa transformação!!!
No VBA, usamos o Thisdrawing, que no VB não tem, mas aí simulamos ele, como no código acima
E claro, precisamos dos tipos dos objetos do cad ("AcadLayer", "AcadLine", por exemplo) aí fiz outra gambiarra usando o "AcadLib" que aparece no código, veja como criei e usei ele...
Interessante, não?
Compile o código e ele irá gerar o arquivo "teste.dll" na pasta /bin/release ( se você não mudou isso)
Carregue no cad com o comando NETLOAD e na linha de comando chame o novo comando criado: "desenhalinha"
Chique, né?
mais aqui e aqui
para que possamos criar comandos:
pasta do Autocad\"acmgd.dll"
para que possamos desenhar no cad:
"Autocad 2008 Type Lybrary"
"Autocad/ObjecDBX Commom 17.0 type Libray"
E pronto!!
As partes importantes da classe:
a sub "New" que inicializa qualquer coisa que precisamos ao carregar a dll que será gerada e a linha
De resto, é algumas adaptações do código VBA para VB.NET, por exemplo:
o tipo "Variant" irá ser o tipo "Object", o legal é que o processo do "copiar/colar" já az essa transformação!!!
No VBA, usamos o Thisdrawing, que no VB não tem, mas aí simulamos ele, como no código acima
E claro, precisamos dos tipos dos objetos do cad ("AcadLayer", "AcadLine", por exemplo) aí fiz outra gambiarra usando o "AcadLib" que aparece no código, veja como criei e usei ele...
Interessante, não?
Compile o código e ele irá gerar o arquivo "teste.dll" na pasta /bin/release ( se você não mudou isso)
Carregue no cad com o comando NETLOAD e na linha de comando chame o novo comando criado: "desenhalinha"
Chique, né?
mais aqui e aqui
Como faço isso no Autocad Electrical 2011? Meu conhecimento sobre VB é quase nulo. Vc tem algum tutorial explicando de uma forma básica?
ResponderExcluirNeyton,
ResponderExcluirBom dia!
Eu estou treinando VB.net 2010, porém quando instalei o VB para o Autocad do 2010 ao 2012, percebi que a versão assemelçha-se ao VB 6, como posso então trazer os conceitos do VB.net para o Vb do autocad nessas versões, pois a estrutura e componentes do programa difere bastante.
Eu poderia criar a aplicação dentro do VB basic express 2012 e usá-lo no autocad? Como poderia fazer isso, coenhece algum material na net falando ou orientando sobre o assunto?
Agradeço!
Sim, pode.
ResponderExcluirNote que á a interface COM, ou activeX. o vb do autocad, que na verdade é VBA, visual basic for applications, pode ser escrita no VS.
Ja a interface .NET, que é muito melhor que a COM so pode ser escrita no VS e nao no vba do autocad.
Boa tarde. Teria alguma literatura para me indicar, pretendo fazer uma rotina para desenhar no autocad 2013, apartir do visualstudio 2012
ResponderExcluir