Translate

sexta-feira, 8 de julho de 2011

Vb.net - Rotina Move

Vou começar a colocar aqui rotinas básicas de programação .Net para o Autocad, espero que seja útil.

Então assim sendo aqui fica a rotina para mover um objecto, neste caso uma polilinha criada em programação.


Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.Geometry

Public Class Form1
    <CommandMethod("Mover")> _
    Public Sub MoveObjectos()

        Dim myDWG As Document = Application.DocumentManager.MdiActiveDocument
        Dim Db As Database = myDWG.Database

        'Transição para Autocad
        Using Trans As Transaction = Db.TransactionManager.StartTransaction()

            'abrimos o bloco table para lermos
            Dim Block As BlockTable
            Block = Trans.GetObject(Db.BlockTableId, OpenMode.ForRead)

            'abrimos o bloco table para pudermos escrever
            Dim blockRec As BlockTableRecord
            blockRec = Trans.GetObject(Block(BlockTableRecord.ModelSpace), OpenMode.ForWrite)

            Dim linha As Polyline = New Polyline()
            linha.SetDatabaseDefaults()

            linha.AddVertexAt(0, New Point2d(0, 0), 0, 0, 0)
            linha.AddVertexAt(1, New Point2d(0, 1), 0, 0, 0)

            '' Criamos o novo ponto e movemos de (0,0,0) to (10,0,0)
            Dim NovoPonto As Point3d = New Point3d(0, 0, 0)
            Dim MoveLinha As Vector3d = NovoPonto.GetVectorTo(New Point3d(10, 0, 0))

            linha.TransformBy(Matrix3d.Displacement(MoveLinha))

            'adicionar o objecto ao block table
            blockRec.AppendEntity(linha)
            Trans.AddNewlyCreatedDBObject(linha, True)

            'acaba a transição
            Trans.Commit()
        End Using
    End Sub
End Class

Espero que seja uma ajuda, espero comentários.

Boa Programação.

Sem comentários:

Enviar um comentário