I'm working on an Excel spreadsheet to generate a DXF. So far I've been able to generate a function for lines, polylines, polygones, circles and simple text but I'm struggling to code a MTEXT function.
This is what I have at this point:
Function DXF_MTEXTO(ByRef DXF_TEXT As String, ByVal CAPA As String, _
ByVal CX As Single, ByVal CY As Single, ByVal
miTexto As String, _
ByVal miAltura As Single, ByVal ang As Single) As String
DXF_TEXT = DXF_TEXT & 0 & vbCrLf 'Entidad
DXF_TEXT = DXF_TEXT & "MTEXT" & vbCrLf
DXF_TEXT = DXF_TEXT & 100 & vbCrLf 'Subclass marker
DXF_TEXT = DXF_TEXT & "AcDbEntity" & vbCrLf
DXF_TEXT = DXF_TEXT & 100 & vbCrLf 'Subclass marker
DXF_TEXT = DXF_TEXT & "AcDbMText" & vbCrLf
DXF_TEXT = DXF_TEXT & 8 & vbCrLf 'Capa
DXF_TEXT = DXF_TEXT & CAPA & vbCrLf
DXF_TEXT = DXF_TEXT & 10 & vbCrLf 'Coordenada X del texto
DXF_TEXT = DXF_TEXT & CX & vbCrLf
DXF_TEXT = DXF_TEXT & 20 & vbCrLf 'Coordenada Y del texto
DXF_TEXT = DXF_TEXT & CY & vbCrLf
DXF_TEXT = DXF_TEXT & 1 & vbCrLf 'Texto
DXF_TEXT = DXF_TEXT & miTexto & vbCrLf
DXF_TEXT = DXF_TEXT & 40 & vbCrLf 'Altura de texto
DXF_TEXT = DXF_TEXT & miAltura & vbCrLf
DXF_TEXT = DXF_TEXT & 41 & vbCrLf ' Ancho de rectángulo de referencia
DXF_TEXT = DXF_TEXT & 16 & vbCrLf
DXF_TEXT = DXF_TEXT & 71 & vbCrLf ' Punto de anclaje: 1 Top Left
DXF_TEXT = DXF_TEXT & 1 & vbCrLf
DXF_TEXT = DXF_TEXT & 72 & vbCrLf ' Dirección del texto: 5 By Style
DXF_TEXT = DXF_TEXT & 5 & vbCrLf
DXF_TEXT = DXF_TEXT & 50 & vbCrLf ' Rotación del texto
DXF_TEXT = DXF_TEXT & ang & vbCrLf
DXF_TEXT = DXF_TEXT & 90 & vbCrLf ' Background fill: 0 = Off
DXF_TEXT = DXF_TEXT & 0 & vbCrLf
DXF_MTEXTO = DXF_TEXT
End Function
Could anybody please give me a hand? A piece of code, a reference (Different from AutoDesk DXF reference)
Thanks in advance!
I read the DXF references and tried to modify the other functions thinking it would work according to AutoDesk pdf.
For example, this is the function (It works pretty fine) for simple text:
This is the code I use for the begining of the file:
Function DXF_INICIO(ByRef DXF_TEXT As String) As String
DXF_TEXT = 0 & vbCrLf
DXF_TEXT = DXF_TEXT & "SECTION" & vbCrLf
DXF_TEXT = DXF_TEXT & 2 & vbCrLf
DXF_TEXT = DXF_TEXT & "ENTITIES" & vbCrLf
DXF_INICIO = DXF_TEXT
End Function
This is the code I use for the end of the file:
Function DXF_FINAL(ByRef DXF_TEXT As String) As String
DXF_TEXT = DXF_TEXT & 0 & vbCrLf
DXF_TEXT = DXF_TEXT & "ENDSEC" & vbCrLf
DXF_TEXT = DXF_TEXT & 0 & vbCrLf
DXF_TEXT = DXF_TEXT & "EOF" & vbCrLf
DXF_FINAL = DXF_TEXT
End Function
This is the code I use for the simple text (And it works pretty fine)
Function DXF_TEXTO(ByRef DXF_TEXT As String, ByVal CAPA As String, _
ByVal CX As Single, ByVal CY As Single, ByVal miTexto As String, _
ByVal miAltura As Single, ByVal ang As Single) As String
DXF_TEXT = DXF_TEXT & 0 & vbCrLf
DXF_TEXT = DXF_TEXT & "TEXT" & vbCrLf
DXF_TEXT = DXF_TEXT & 8 & vbCrLf
DXF_TEXT = DXF_TEXT & CAPA & vbCrLf
DXF_TEXT = DXF_TEXT & 10 & vbCrLf
DXF_TEXT = DXF_TEXT & CX & vbCrLf
DXF_TEXT = DXF_TEXT & 20 & vbCrLf
DXF_TEXT = DXF_TEXT & CY & vbCrLf
DXF_TEXT = DXF_TEXT & 1 & vbCrLf
DXF_TEXT = DXF_TEXT & miTexto & vbCrLf
DXF_TEXT = DXF_TEXT & 40 & vbCrLf
DXF_TEXT = DXF_TEXT & miAltura & vbCrLf
DXF_TEXT = DXF_TEXT & 50 & vbCrLf
DXF_TEXT = DXF_TEXT & ang & vbCrLf
DXF_TEXTO = DXF_TEXT
End Function
This is the error I got when using the MTEXT function: "Undefined group code 10 for object on line XX. Invalid or incomplete DXF input -- drawing discarded."
This is what the DXF looks like:
0
SECTION
2
ENTITIES
0
POLYLINE
8
001-WALL
66
1
70
1
0
VERTEX
8
001-WALL
70
1
10
3.4742
20
18.7913
0
VERTEX
8
001-WALL
70
1
10
6.0183
20
18.7913
0
VERTEX
8
001-WALL
70
1
10
6.0183
20
19.4579
0
VERTEX
8
001-WALL
70
1
10
3.4742
20
19.4579
0
SEQEND
0
MTEXT
100
AcDbEntity
100
AcDbMText
8
000-TEXT
10
6.079583
20
20.45793
1
#5@48"\PL: 2.55ft t: 8"\PVu: 3 kip\PVu/Vn: 40%
40
0.25
41
16
71
1
72
5
50
0
90
0
0
ENDSEC
0
EOF