Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

HQuintas

DXF com POLYLINE E VERTEX

Mensagens Recomendadas

HQuintas

Boas

Alguém pode me ajudar a ler um ficheiro dxf, que contem os comandos POLYLINE E VERTEX

Estou tentando, mas não está desenhando bem o polígono.

Como faço para desenhar o arc (code 42 do VERTEX) ?

Penso que seja por isso que não esteja a colocar as linhas como deve ser.

Dim linetext As IO.StreamReader
	Dim line1 As String
	Dim line2 As String
	Dim x As Double
	Dim y As Double
   Dim filedxf As String = "G:\filedxf.dxf"
	If IO.File.Exists(filedxf) Then
		linetext = New IO.StreamReader(filedxf)
		line1 = linetext.ReadLine 'Code
		line2 = linetext.ReadLine 'Valor
		Dim novo As Boolean = False
		line1 = Trim(line1)
		Dim P As New List(Of PointF)
		While line1 <> Nothing
			Select Case line2
				Case "POLYLINE"
					'Novo Poligono
					P.Clear()
				Case "VERTEX"
					'Novo ponto

					Dim k As Integer = 0
					Do Until line2 = "SEQEND"
						Select Case line1
							Case "10"
								x = FormatNumber(CDbl(Val(line2)), 2)
							Case "20"
								y = FormatNumber(CDbl(Val(line2)), 2)
							Case "42"
								'Draw a arc
							Case "0"
								P.Add(New PointF(x, y))
						End Select

								line1 = Trim(linetext.ReadLine)
								line2 = linetext.ReadLine
								k = k + 1
					Loop
					Application.DoEvents()
					Using g As Graphics = Graphics.FromImage(bm)
						g.PageUnit = GraphicsUnit.Millimeter
						g.ScaleTransform(2, 2) 'Zoom
						'For Each i In P
						'TextBox1.Text = TextBox1.Text & i.ToString & vbCrLf
						'Next
						Dim rand As New Random
						Dim cor As Color = Color.FromArgb(rand.Next(0, 256), rand.Next(0, 256), rand.Next(0, 256))
						g.DrawPolygon(New Pen(cor, 0.5), P.ToArray)
					End Using
					PictureBox1.Image = bm
				Case Else
					'P.Clear()
			End Select

			line1 = Trim(linetext.ReadLine)
			line2 = linetext.ReadLine

		End While
		linetext.Close()
	Else
		MessageBox.Show("Arquivo não existe")
	End If

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HQuintas

Talvez em vez de utilizar drawpolygno deva usar line e arc.

Ainda não entendi como funciona o "Bulge"

Um pedaço do ficheiro:

POLYLINE
8
0
66
1
10
0.000000
20
0.000000
30
0.000000
70
1
0
VERTEX
8
0
10
0.000000
20
197.758926
30
0.000000
0
VERTEX
8
0
10
0.000000
20
0.000000
30
0.000000
0
VERTEX
8
0
10
61.907143
20
0.000000
30
0.000000
0
VERTEX
8
0
10
61.907143
20
77.383926
30
0.000000
0
VERTEX
8
0
10
120.375008
20
77.383926
30
0.000000
42
0.673795
0
VERTEX
8
0
10
0.000000
20
197.758926
30
0.000000
0
SEQEND

Pretendo ler estes ficheiros em dxf para uma picturebox e posteriormente guardar como imagem.

Agradecia ajuda.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
FreiNando

Ainda não entendi como funciona o "Bulge"

Bulge2Arc.png


O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.