明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1161|回复: 1

什么是组?如何新建和插入组?

[复制链接]
发表于 2013-4-9 22:17:29 | 显示全部楼层 |阅读模式
本帖最后由 介之推 于 2013-4-9 22:19 编辑

大家好,我想同时绘制两条线,但单独绘制两条线时这两条线是各自分开,我想把这两条放在一起,选择时可以被同时选中。我发现做成“组”或“块”好像都可以。请问“组”和“块”有什么区别?
下面是我找到的生成组的代码,我想通过鼠标在选择一个点后就插入一个组。我想请教如何插入一个已经存在的组?
  1. '插入组
  2.     <CommandMethod("InsertGroup")> _
  3.     Public Sub InsertGroup()
  4.         '' Get the current database and start the Transaction Manager
  5.         Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
  6.         Dim acCurDb As Database = acDoc.Database
  7.         Dim acEd As Editor = acDoc.Editor

  8.         Dim pPtRes As PromptPointResult
  9.         Dim pPtOpts As PromptPointOptions = New PromptPointOptions("")

  10.         '' 提示用户选择点
  11.         pPtOpts.Message = vbLf & "选择插入点: "
  12.         pPtRes = acDoc.Editor.GetPoint(pPtOpts)
  13.         Dim InsertPt As Point3d = pPtRes.Value
  14.         

  15.         '' Exit if the user presses ESC or cancels the command
  16.         If pPtRes.Status = PromptStatus.Cancel Then Exit Sub

  17.         Using trans As Transaction = acCurDb.TransactionManager.StartTransaction

  18.             '打开当前数据库的组字典对象以加入新建的组对象
  19.             Dim dict As DBDictionary = trans.GetObject(acCurDb.GroupDictionaryId, OpenMode.ForWrite)

  20.             '定义新建组的名称
  21.             Dim groupName As String = "Name"
  22.             If dict.Contains(groupName) Then
  23.                 '如果已经包含了这个组,则插入这个组,---------------请问这个如何实现----------

  24.             Else
  25.                 ''新建一个组对象
  26.                 Dim gp As New Group(groupName, True)
  27.                 '在组字典中将组对象作为一个新条目加入,并指定它的搜索关键字为groupName
  28.                 dict.SetAt(groupName, gp)

  29.                 '为组添加实体
  30.                 Dim Ids As New ObjectIdCollection()

  31.                 '添加一条竖直直线
  32.                 Dim LineId As ObjectId = AddLine(InsertPt, 90, 200, 2)
  33.                 Ids.Add(LineId)

  34.                 '添加一条水平直线
  35.                 Dim LineIdTwo As ObjectId = AddLine(InsertPt, 0, 200, 2)
  36.                 Ids.Add(LineIdTwo)

  37.                 '在组对象中加入所选择的对象
  38.                 gp.Append(Ids)
  39.                 '通知事务处理完成组对象的加入
  40.                 trans.AddNewlyCreatedDBObject(gp, True)
  41.             End If
  42.             
  43.             trans.Commit()
  44.         End Using

  45.     End Sub



其中绘制直线的函数如下:
  1. Public Shared Function AddLine(ByVal centPt As Point3d, ByVal Ang As Double, _
  2.                                    ByVal Length As Double, ByVal Color As Integer) As ObjectId
  3.         Dim acLine As Line = New Line
  4.         acLine.StartPoint = PolarPoint(centPt, RadToAng(Ang), Length * 0.5)
  5.         acLine.EndPoint = PolarPoint(centPt, RadToAng(Ang) + Math.PI, Length * 0.5)
  6.         acLine.ColorIndex = Color

  7.         'Add the rectangle polyline entity to model space
  8.         Dim acEntId As ObjectId = AppendEntity(acLine)
  9.         Return acEntId
  10.     End Function


发表于 2013-4-10 10:07:32 | 显示全部楼层
定义成块后,插入的每个都是这个块的参照,修改块后,块参照都会随之改变
组只是一些实体的合集,不能用insert的方法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 14:39 , Processed in 0.175474 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表