Imports System Imports Autodesk.AutoCAD.Runtime Imports Autodesk.AutoCAD.EditorInput Imports Autodesk.AutoCAD.Geometry Imports Autodesk.AutoCAD.DatabaseServices Imports Autodesk.AutoCAD.GraphicsInterface Imports Autodesk.AutoCAD.ApplicationServices Public Class JigExample Inherits DrawJig Private objPrevCursorPos As Point3d Private objCurCursorPos As Point3d Private objBlockRef As BlockReference Private objPromptPtRes As PromptPointResult _ Public Sub StartJig() 'make sure latest block def exists in drawing using activex Dim objAcadApp As Autodesk.AutoCAD.Interop.AcadApplication = Application.AcadApplication Dim dblInsPt(2) As Double dblInsPt(0) = 0 dblInsPt(1) = 0 dblInsPt(2) = 0 Dim objTempBlockRef As Autodesk.AutoCAD.Interop.Common.AcadBlockReference = objAcadApp.ActiveDocument.ModelSpace.InsertBlock(CType(dblInsPt, Object), "Z:\RAA_UTIL07\SDPMARKER.dwg", 1, 1, 1, 0) objTempBlockRef.Delete() 'end make sure latest block def exists in drawing using activex Dim objDB As Database = HostApplicationServices.WorkingDatabase Dim objTrans As Transaction = objdb.TransactionManager.StartTransaction Dim objBT As BlockTable = CType(objTrans.GetObject(objDB.BlockTableId, OpenMode.ForRead, False), BlockTable) Dim objID As ObjectId = objBT("SDPMARKER") objPrevCursorPos = New Point3d(0, 0, 0) objBlockRef = New BlockReference(New Point3d(0, 0, 0), objID) Application.DocumentManager.MdiActiveDocument.Editor.Drag(Me) If objPromptPtRes.Status = PromptStatus.OK Then Dim objBTR As BlockTableRecord = CType(objTrans.GetObject(objBT(BlockTableRecord.ModelSpace), OpenMode.ForWrite, False), BlockTableRecord) objBTR.AppendEntity(objBlockRef) objTrans.AddNewlyCreatedDBObject(objBlockRef, True) objTrans.Commit() objTrans.Dispose() Else objTrans.Commit() objTrans.Dispose() End If End Sub Protected Overrides Function Sampler(ByVal prompts As JigPrompts) As SamplerStatus objPromptPtRes = prompts.AcquirePoint("Select Insertion Point") objCurCursorPos = objPromptPtRes.Value If objCurCursorPos objPrevCursorPos Then objBlockRef.TransformBy(Matrix3d.Displacement(objPrevCursorPos.GetVectorTo(objCurCursorPos))) objPrevCursorPos = objCurCursorPos Return SamplerStatus.OK Else Return SamplerStatus.NoChange End If End Function Protected Overrides Function WorldDraw(ByVal draw As WorldDraw) As Boolean draw.Geometry.Draw(objBlockRef) Return True End Function End Class