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:
'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