Pasar datos de Excel a Autocad

19/06/2007 - 12:45 por Antonio Jesús | Informe spam
Hola a todos y gracias de antemano. Estoy intentando automatizar una hoja
excel de tal forma que todos los datos me los exporte a dibujo autocad, y
casi lo tengo. He conseguido a través de macros exportar los puntos y unirlos
con polilíneas, pero me falta saber como si insertan bloques. Es decir, yo
abro (desde excel siempre) una plantilla de autocad con todos lo bloques que
necesito de los cuales sus nombres están en una columna de excel. Pues bien,
necesito la rutina que me inserte esos bloques. ¿Alguien me puede ayudar? El
código con el que lo estoy intentando es éste:

Public AcadApp As Object
Public Bloque As Object

Sub AcadConnect()

On Error Resume Next
Set AcadApp = GetObject(, "Autocad.Application")
If Err Then
Err.Clear
Set AcadApp = CreateObject("Autocad.Application")
AcadApp.Visible = True
If Err Then
MsgBox Err.Description
Exit Sub
End If
End If

Dim dwgName As String
dwgName = "c:\datos.dxf" 'ruta donde se encuentra en archivo
If Dir(dwgName) <> "" Then
AcadApp.Documents.Open dwgName
Else
MsgBox "El Archivo " & dwgName & " No se encuentra"
End If

Dim coordenadas(0 To 2) As Double
coordenadas(0) = 1
coordenadas(1) = 1
coordenadas(2) = 0
Dim nombre As String
nombre = Cells(1, 1)

Set Bloque = AcadApp.ActiveDocument.Blocks.Add(coordenadas, nombre)

End Sub

En teoría, debería de insertar un bloque en el punto (1,1,0) con el nombre
que pongamos en la casilla A1.

Por favor que alguien me ayude que estoy desesperado.
 

Leer las respuestas

#1 Juan M
19/06/2007 - 14:40 | Informe spam
"Antonio Jesús" escribió

Hola a todos y gracias de antemano. Estoy intentando automatizar una hoja
excel de tal forma que todos los datos me los exporte a dibujo autocad, y
casi lo tengo. He conseguido a través de macros exportar los puntos y
unirlos
con polilíneas, pero me falta saber como si insertan bloques. Es decir, yo
abro (desde excel siempre) una plantilla de autocad con todos lo bloques
que
necesito de los cuales sus nombres están en una columna de excel. Pues
bien,
necesito la rutina que me inserte esos bloques. ¿Alguien me puede ayudar?
El
código con el que lo estoy intentando es éste:

Public AcadApp As Object
Public Bloque As Object

Sub AcadConnect()

On Error Resume Next
Set AcadApp = GetObject(, "Autocad.Application")
If Err Then
Err.Clear
Set AcadApp = CreateObject("Autocad.Application")
AcadApp.Visible = True
If Err Then
MsgBox Err.Description
Exit Sub
End If
End If

Dim dwgName As String
dwgName = "c:\datos.dxf" 'ruta donde se encuentra en archivo
If Dir(dwgName) <> "" Then
AcadApp.Documents.Open dwgName
Else
MsgBox "El Archivo " & dwgName & " No se encuentra"
End If

Dim coordenadas(0 To 2) As Double
coordenadas(0) = 1
coordenadas(1) = 1
coordenadas(2) = 0
Dim nombre As String
nombre = Cells(1, 1)

Set Bloque = AcadApp.ActiveDocument.Blocks.Add(coordenadas, nombre)

End Sub

En teoría, debería de insertar un bloque en el punto (1,1,0) con el nombre
que pongamos en la casilla A1.

Por favor que alguien me ayude que estoy desesperado.




Hola Antonio Jesús,

cambia la instrucción

Set Bloque = AcadApp.ActiveDocument.Blocks.Add(coordenadas, nombre)



por esta otra

Set Bloque = AcadApp.ActiveDocument.ModelSpace.InsertBlock(coordenadas,
nombre, 1#, 1#, 1#, 0)

Lo que haces con la que has puesto es añadir un nombre mas a los bloques.
Para comprobarlo, pon un nombre que no exista de bloque y ejecuta tu código,
ahora ve al menú insertar bloque y verás que ha aparecido el que acabas de
escribir.

Te paso los parámetros de insertar bloque

object.InsertBlock(InsertionPoint, Name, Xscale, Yscale, ZScale, Rotation [,
Password])

Un saludo,
Juan

Preguntas similares