什么是组?如何新建和插入组?
本帖最后由 介之推 于 2013-4-9 22:19 编辑大家好,我想同时绘制两条线,但单独绘制两条线时这两条线是各自分开,我想把这两条放在一起,选择时可以被同时选中。我发现做成“组”或“块”好像都可以。请问“组”和“块”有什么区别?
下面是我找到的生成组的代码,我想通过鼠标在选择一个点后就插入一个组。我想请教如何插入一个已经存在的组?'插入组
<CommandMethod("InsertGroup")> _
Public Sub InsertGroup()
'' Get the current database and start the Transaction Manager
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acCurDb As Database = acDoc.Database
Dim acEd As Editor = acDoc.Editor
Dim pPtRes As PromptPointResult
Dim pPtOpts As PromptPointOptions = New PromptPointOptions("")
'' 提示用户选择点
pPtOpts.Message = vbLf & "选择插入点: "
pPtRes = acDoc.Editor.GetPoint(pPtOpts)
Dim InsertPt As Point3d = pPtRes.Value
'' Exit if the user presses ESC or cancels the command
If pPtRes.Status = PromptStatus.Cancel Then Exit Sub
Using trans As Transaction = acCurDb.TransactionManager.StartTransaction
'打开当前数据库的组字典对象以加入新建的组对象
Dim dict As DBDictionary = trans.GetObject(acCurDb.GroupDictionaryId, OpenMode.ForWrite)
'定义新建组的名称
Dim groupName As String = "Name"
If dict.Contains(groupName) Then
'如果已经包含了这个组,则插入这个组,---------------请问这个如何实现----------
Else
''新建一个组对象
Dim gp As New Group(groupName, True)
'在组字典中将组对象作为一个新条目加入,并指定它的搜索关键字为groupName
dict.SetAt(groupName, gp)
'为组添加实体
Dim Ids As New ObjectIdCollection()
'添加一条竖直直线
Dim LineId As ObjectId = AddLine(InsertPt, 90, 200, 2)
Ids.Add(LineId)
'添加一条水平直线
Dim LineIdTwo As ObjectId = AddLine(InsertPt, 0, 200, 2)
Ids.Add(LineIdTwo)
'在组对象中加入所选择的对象
gp.Append(Ids)
'通知事务处理完成组对象的加入
trans.AddNewlyCreatedDBObject(gp, True)
End If
trans.Commit()
End Using
End Sub
其中绘制直线的函数如下:
Public Shared Function AddLine(ByVal centPt As Point3d, ByVal Ang As Double, _
ByVal Length As Double, ByVal Color As Integer) As ObjectId
Dim acLine As Line = New Line
acLine.StartPoint = PolarPoint(centPt, RadToAng(Ang), Length * 0.5)
acLine.EndPoint = PolarPoint(centPt, RadToAng(Ang) + Math.PI, Length * 0.5)
acLine.ColorIndex = Color
'Add the rectangle polyline entity to model space
Dim acEntId As ObjectId = AppendEntity(acLine)
Return acEntId
End Function
定义成块后,插入的每个都是这个块的参照,修改块后,块参照都会随之改变
组只是一些实体的合集,不能用insert的方法
页:
[1]