代码在这里
Public Class Jig_CCopy
' 从DrawJig类继承.
Inherits DrawJig
' 声明全局变量.
Dim sourcePt, targetPt, curPt As Point3d
Dim keyword As String
Dim i, k, few As Integer
Dim entCopy(,), entCopy1(), oldEnt() As Entity, ids As ObjectId()
Dim db As Database = HostApplicationServices.WorkingDatabase
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim ed As Editor = doc.Editor
Sub testCCopy()
keyword = "C"
Dim res As PromptSelectionResult
Dim sSet As SelectionSet
Dim opt As New PromptSelectionOptions
res = ed.SelectImplied()
If res.Status = PromptStatus.OK Then
sSet = res.Value
ids = sSet.GetObjectIds()
Else
' 选择集交互操作
opt.MessageForAdding = "请选择对象:"
opt.AllowDuplicates = True
res = ed.GetSelection(opt)
If res.Status PromptStatus.OK Then Return
sSet = res.Value
ids = sSet.GetObjectIds()
End If
' 得到基点
Dim optPoint As New PromptPointOptions(vbCrLf & "请输入基点:")
optPoint.AllowNone = True
Dim resPoint As PromptPointResult = ed.GetPoint(optPoint)
If resPoint.Status PromptStatus.OK Then Return
sourcePt = resPoint.Value
ReDim entCopy1(ids.Length - 1)
ReDim oldEnt(ids.Length - 1)
'获取对象
Using trans As Transaction = db.TransactionManager.StartTransaction()
For i = 0 To ids.Length - 1
oldEnt(i) = trans.GetObject(ids(i), OpenMode.ForWrite)
Next
trans.Commit()
End Using
Dim lop As Boolean = True
'循环
Do While lop = True
For i = 0 To ids.Length - 1
' 将源对象设置为高亮
oldEnt(i).Highlight()
' 复制
entCopy1(i) = oldEnt(i).Clone()
Next
' 设置目标点和拖拽临时点
targetPt = sourcePt
curPt = targetPt
' 开始拖拽.
Dim jigRes As PromptResult = ed.Drag(Me)
If jigRes.Status = PromptStatus.OK Then
For i = 0 To ids.Length - 1
AppendEntity(entCopy1(i))
Next
ElseIf keyword = "A" Then
targetPt = sourcePt
curPt = targetPt
' 开始拖拽.
jigRes = ed.Drag(Me)
If jigRes.Status = PromptStatus.OK Then
For k = 0 To few - 1
For i = 0 To ids.Length - 1
AppendEntity(entCopy(k, i))
Next
Next
' 取消源对象的高亮状态.
For i = 0 To ids.Length - 1
oldEnt(i).Unhighlight()
Next
'结束循环
lop = False
ElseIf keyword = "F" Then
targetPt = sourcePt
curPt = targetPt
' 开始拖拽.
jigRes = ed.Drag(Me)
If jigRes.Status = PromptStatus.OK Then
For k = 0 To few - 1
For i = 0 To ids.Length - 1
AppendEntity(entCopy(k, i))
Next
Next
' 取消源对象的高亮状态.
For i = 0 To ids.Length - 1
oldEnt(i).Unhighlight()
Next
lop = False
Else
lop = False
' 取消源对象的高亮状态.
For i = 0 To ids.Length - 1
oldEnt(i).Unhighlight()
Next
End If
Else
lop = False
' 取消源对象的高亮状态.
For i = 0 To ids.Length - 1
oldEnt(i).Unhighlight()
Next
End If
Else
lop = False
' 取消源对象的高亮状态.
For i = 0 To ids.Length - 1
oldEnt(i).Unhighlight()
Next
End If