05/06/2014
Создание мультиполигона в AutoCAD средствами .NET API
Мультиполигон (MPolygon) – это пользовательский объект созданный для AutoCAD Map 3D. Но он доступен и в чистом AutoCAD и с ним можно работать средствами ObjectARX. Чтобы работать с ним в .NET необходимо добавить добавить ссылку на AcMPolygonMGD.dllи кроме того требуется, чтобы файл AcMPolygonObjNN.dbx (где NN = 19 для AutoCAD 2013 и 2014 и NN = 20 для AutoCAD 2015) загружен в AutoCAD до вызова любого из методов MPolygon. Оба этих файла содержатся в корневом каталоге AutoCAD.
Код - VB.NET: [Выделить]
- Imports Autodesk.AutoCAD.Runtime
- Imports Autodesk.AutoCAD.DatabaseServices
- Imports Autodesk.AutoCAD.ApplicationServices
- Imports Autodesk.AutoCAD.Geometry
- Public Class MPolygonCommandClass
- Implements IExtensionApplication
- Public Sub Initialize() _
- Implements IExtensionApplication.Initialize
- ' Загрузим AcMPolygonObj19.dbx для уверенности, что с MPolygon
- ' можно будет работать. 19 – номер версии для AutoCAD 2013 и 2014
- Autodesk.AutoCAD.Runtime. _
- SystemObjects.DynamicLinker.LoadModule( _
- "AcMPolygonObj19.dbx", False, False)
- End Sub
- Public Sub Terminate() _
- Implements IExtensionApplication.Terminate
- End Sub
- <CommandMethod("CreateMPolygon")> _
- Public Sub CreateMPolygon()
- Dim db As Database = Application. _
- DocumentManager.MdiActiveDocument.Database
- Using transaction As Transaction = _
- db.TransactionManager.StartTransaction()
- Try
- ' Откроем таблицу блоков и пространство модели
- Dim bt As BlockTable = transaction.GetObject( _
- db.BlockTableId, OpenMode.ForRead)
- Dim btr As BlockTableRecord = transaction.GetObject( _
- bt(BlockTableRecord.ModelSpace), _
- OpenMode.ForWrite)
- ' Начнем создавать мультиполигон с
- ' создания его петли
- Dim mPolygonLoop As MPolygonLoop
- mPolygonLoop = New MPolygonLoop()
- mPolygonLoop.Add(New BulgeVertex(New Point2d(2, 2), 0))
- mPolygonLoop.Add(New BulgeVertex(New Point2d(2, 1), 0))
- mPolygonLoop.Add(New BulgeVertex(New Point2d(1, 1), 0))
- mPolygonLoop.Add(New BulgeVertex(New Point2d(1, 2), 0))
- mPolygonLoop.Add(New BulgeVertex(New Point2d(2, 2), 0))
- ' Теперь создадим примитив и добавим его в пространство модели
- Dim mPolygon As MPolygon = New MPolygon()
- mPolygon.AppendMPolygonLoop(mPolygonLoop, False, 0)
- btr.AppendEntity(mPolygon)
- transaction.AddNewlyCreatedDBObject(mPolygon, True)
- transaction.Commit()
- Catch ex As Exception
- Debug.WriteLine(ex.ErrorStatus)
- Debug.WriteLine(ex.Message)
- End Try
- End Using
- End Sub
- End Class
Источник: http://adndevblog.typepad.com/autocad/2012/08/create-a-mpolygon-in-autocad-using-net.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=788
Опубликовано 05.06.2014Отредактировано 07.06.2014 в 01:22:15