I have written a Function to copy and paste from autocad that will allow someone to paste to original coordinates within the same drawing. To do this, I had to ignore the current copyclip and pasteclip and write new ones. One of the problems I am having is when pasting, I wish to be able to see the objects (dragmode). I have used sendcommand for this, but when I use the middle mouse button to pan, the function continues on and screws up the insertion. Anybody have any suggestions? Here is the code I have for now Public RegPt(0 To 2) As Double Public Function MJCopy(CopyType As String) ' This sub returns a bounding box of entities selected on screen. Dim lBox, uBox As Variant, pfss As AcadSelectionSet, ss1 As AcadSelectionSet Dim x1, y1, x2, y2 As Double Dim I As Long, MinX As Double, MinY As Double, MinXY(0 To 1) As Double, MaxX As Double, MaxY As Double Dim TempPath As String, TempTime As String, TempFilename As String Dim OldInsBaseVal As Variant, NewPoint As Variant OldInsBaseVal = ThisDrawing.GetVariable("Insbase") Set pfss = ThisDrawing.PickfirstSelectionSet If pfss.count = 0 Then ' Add a selection set, if it already exists, set it to be active On Error Resume Next Set ss1 = ThisDrawing.SelectionSets.Add("CopySet") If Err Then Set ss1 = ThisDrawing.SelectionSets("CopySet") End If On Error GoTo 0 ss1.Clear ' Add entities to a selection set by prompting user to select on the Screen ss1.SelectOnScreen Else Set ss1 = pfss End If ' Get the bounding box of the first item in the selection set (if Sel Set is not empty) If ss1.count > 0 Then ss1(0).GetBoundingBox lBox, uBox MinX = lBox(0) MinY = lBox(1) MaxX = uBox(0) MaxY = uBox(1) End If ' Iterate through the objects in the selection set ' (first one has already been done so start at one) For I = 1 To ss1.count - 1 ' Get the bounding box of the current object ss1(I).GetBoundingBox lBox, uBox ' Get the Lower (x, y) of the bounding box of the entity x1 = lBox(0) y1 = lBox(1) ' Get the Upper (x, y) of the bounding box of the entity x2 = uBox(0) y2 = uBox(1) ' grow the group's bounding box to include the object's If x1 < MinX Then MinX = x1 If y1 < MinY Then MinY = y1 If x2 > MaxX Then MaxX = x2 If y2 > MaxY Then MaxY = y2 Next 'i MinXY(0) = MinX: MinXY(1) = MinY TempPath = ThisDrawing.GetVariable("tempprefix") TempTime = ThisDrawing.GetVariable("cdate") TempTime = Mid(TempTime, 1, 8) & Mid(TempTime, 10, Len(TempTime)) TempFilename = TempPath & TempTime & ".dwg" SaveSetting "AutoDesk Applications", "MJCopyClip", "InsertionPointX", MinX SaveSetting "AutoDesk Applications", "MJCopyClip", "InsertionPointY", MinY SaveSetting "AutoDesk Applications", "MJCopyClip", "TempFile", TempFilename If CopyType = "CopyBase" Or CopyType = "CutBase" Then NewPoint = ThisDrawing.Utility.GetPoint(, "Select Base Point:") Else NewPoint = MinXY End If ThisDrawing.Wblock TempFilename, ss1 If CopyType = "CutClip" Or CopyType = "CutBase" Then ss1.Erase End If End Function Public Function MJPaste(PasteType As String) Dim InsFilename As String, InsPt As Variant Dim Insblk As AcadBlockReference, Insblkname As String RegPt(0) = GetSetting("AutoDesk Applications", "MJCopyClip", "InsertionPointX") RegPt(1) = GetSetting("AutoDesk Applications", "MJCopyClip", "InsertionPointY") RegPt(2) = 0 InsFilename = GetSetting("AutoDesk Applications", "MJCopyClip", "TempFile") If ThisDrawing.GetVariable("ctab") = "Model" Then Set Insblk = ThisDrawing.ModelSpace.InsertBlock(RegPt, InsFilename, 1, 1, 1, 0) Else Set Insblk = ThisDrawing.PaperSpace.InsertBlock(RegPt, InsFilename, 1, 1, 1, 0) End If Insblkname = Insblk.Name If PasteType <> "PasteOrig" Then ThisDrawing.SendCommand "move" & vbCr & "last" & vbCr & vbCr & RegPt(0) & "," & RegPt(1) & "," & RegPt(2) & vbCr End If If PasteType <> "PasteBlock" Then Insblk.Explode Insblk.Delete ThisDrawing.Blocks(Insblkname).Delete Exit Function End If End Function Sub CopyClip() CopyType = "CopyClip" MJCopy (CopyType) End Sub Sub CopyBase() CopyType = "CopyBase" MJCopy (CopyType) End Sub Sub CutClip() CopyType = "CutClip" MJCopy (CopyType) End Sub Sub CutBase() CopyType = "CutBase" MJCopy (CopyType) End Sub Sub Pasteclip() PasteType = "PasteClip" MJPaste (PasteType) End Sub Sub PasteOrig() PasteType = "PasteOrig" MJPaste (PasteType) End Sub Sub PasteBlock() PasteType = "PasteBlock" MJPaste (PasteType) End Sub