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