Цитата

«Качество надо производить, а не обеспечивать в результате контроля»(с)nmivan

понедельник, 20 февраля 2017 г.

F# Simple autocad app


Сохраню себе тут на всякий случай.

  
module AddLine
 
open Autodesk.AutoCAD.ApplicationServices
open Autodesk.AutoCAD.DatabaseServices
open Autodesk.AutoCAD.EditorInput
open Autodesk.AutoCAD.Geometry
open Autodesk.AutoCAD.Runtime
 
[<CommandMethod("Z1")>]
let z1()=
    let db = HostApplicationServices.WorkingDatabase
    use tr = db.TransactionManager.StartTransaction()
 
    let bt = tr.GetObject(db.BlockTableId, OpenMode.ForWrite) :?> BlockTable
    let ms = tr.GetObject(bt.[BlockTableRecord.ModelSpace], OpenMode.ForWrite):?> BlockTableRecord
 
    let p1 = new Point3d(0., 0., 0.)
    let p2 = new Point3d(10., 20., 0.)
    let acLine = new Line(p1, p2)
    acLine.SetDatabaseDefaults()
 
    let addToDatabase ent =
        ms.AppendEntity(ent) |> ignore
        tr.AddNewlyCreatedDBObject(ent, true)
 
    addToDatabase acLine
    tr.Commit();
Туповатый blogger.com коверкает код, так что прикреплю еще и картинку, как это должно выглядеть:

Комментариев нет: