找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1152|回复: 1

[讨论]:选择集在VBA中的操作

[复制链接]

已领礼包: 181个

财富等级: 日进斗金

发表于 2002-12-9 19:20:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
先介绍几个关于选择集的删除操作吧。
1、Clear::Clear方法是清空选择集。选择集依然存在,但不包含任何实体对象。这些实体对象仍驻留在图形数据库中,只是不再与该选择集关联。
2、RemoveItems:RemoveItems方法是从选择集中清除一个或者多个实体对象。这些被清除的实体对象仍旧驻留在图形数据库中,只是不再与该选择集关联。
3、Erase:Erase方法是删除选择集中的所有实体,选择集仍然存在,但不包含任何实体对象。被删除的实体对象也将在图形数据库中清除,即在图上已经消失。
4、Delete:Delete方法是删除选择集本身连同所有的实体对象,选择集将不再存在,但被删除的实体对象仍旧驻留在图形数据库中。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 181个

财富等级: 日进斗金

 楼主| 发表于 2002-12-9 19:59:20 | 显示全部楼层
下面介绍几个对选择集操作的函数,就像对单个实体那样,VBA没有提供对选择集中的所有实体进行操作的功能。


  1.   [FONT=courier new]
  2. ' 圆形阵列
  3. Sub ssetArrayPolar(ByVal ssetObj As AcadSelectionSet, ByVal NumberOfObjects As Long, ByVal AngleToFill As Double, ByVal CenterPoint As Variant)
  4.     Dim i As Integer
  5.    
  6.     On Error GoTo ErrTrap
  7.     For i = 0 To ssetObj.Count - 1
  8.         ssetObj(i).ArrayPolar NumberOfObjects, AngleToFill, CenterPoint
  9.     Next
  10.     Exit Sub
  11.    
  12. ErrTrap:
  13.     On Error GoTo 0
  14. End Sub

  15. ' 矩形陈列
  16. Sub ssetArrayRectangular(ByVal ssetObj As AcadSelectionSet, ByVal NumberOfRows As Long, ByVal NumberOfColumns As Long, ByVal NumberOfLevels As Long, ByVal DistBetweenRows As Double, ByVal DistBetweenCols As Double, ByVal DisBetweenLevels As Double)
  17.     Dim i As Integer
  18.    
  19.     On Error GoTo ErrTrap
  20.     For i = 0 To ssetObj.Count - 1
  21.         ssetObj(i).ArrayRectangular NumberOfRows, NumberOfColumns, NumberOfLevels, DistBetweenRows, DistBetweenCols, DisBetweenLevels
  22.     Next
  23.     Exit Sub
  24.    
  25. ErrTrap:
  26.     On Error GoTo 0
  27. End Sub

  28. ' 镜像
  29. Sub ssetMirror(ByVal ssetObj As AcadSelectionSet, ByVal Point1 As Variant, ByVal Point2 As Variant)
  30.     Dim i As Integer
  31.    
  32.     On Error GoTo ErrTrap
  33.     For i = 0 To ssetObj.Count - 1
  34.         ssetObj(i).Mirror Point1, Point2
  35.     Next
  36.     Exit Sub
  37.    
  38. ErrTrap:
  39.     On Error GoTo 0
  40. End Sub

  41. ' 三维镜像
  42. Sub ssetMirror3D(ByVal ssetObj As AcadSelectionSet, ByVal Point1 As Variant, ByVal Point2 As Variant, ByVal Point3 As Variant)
  43.     Dim i As Integer
  44.    
  45.     On Error GoTo ErrTrap
  46.     For i = 0 To ssetObj.Count - 1
  47.         ssetObj(i).Mirror3D Point1, Point2, Point3
  48.     Next
  49.     Exit Sub
  50.    
  51. ErrTrap:
  52.     On Error GoTo 0
  53. End Sub

  54. ' 移动
  55. Sub ssetMove(ByVal ssetObj As AcadSelectionSet, ByVal FromPoint As Variant, ByVal ToPoint As Variant)
  56.     Dim i As Integer
  57.    
  58.     On Error GoTo ErrTrap
  59.     For i = 0 To ssetObj.Count - 1
  60.         ssetObj(i).Move FromPoint, ToPoint
  61.     Next
  62.     Exit Sub
  63.    
  64. ErrTrap:
  65.     On Error GoTo 0
  66. End Sub

  67. ' 旋转
  68. Sub ssetRotate(ByVal ssetObj As AcadSelectionSet, ByVal BasePoint As Variant, ByVal RotationAngle As Double)
  69.     Dim i As Integer
  70.    
  71.     On Error GoTo ErrTrap
  72.     For i = 0 To ssetObj.Count - 1
  73.         ssetObj(i).Rotate BasePoint, RotationAngle
  74.     Next
  75.     Exit Sub
  76.    
  77. ErrTrap:
  78.     On Error GoTo 0
  79. End Sub

  80. ' 三维旋转
  81. Sub ssetRotate3D(ByVal ssetObj As AcadSelectionSet, ByVal Point1 As Variant, ByVal Point2 As Variant, ByVal RotationAngle As Double)
  82.     Dim i As Integer
  83.    
  84.     On Error GoTo ErrTrap
  85.     For i = 0 To ssetObj.Count - 1
  86.         ssetObj(i).Rotate3D Point1, Point2, RotationAngle
  87.     Next
  88.     Exit Sub
  89.    
  90. ErrTrap:
  91.     On Error GoTo 0
  92. End Sub

  93. ' 比例缩放
  94. Sub ssetScaleEntity(ByVal ssetObj As AcadSelectionSet, ByVal BasePoint As Variant, ByVal ScaleFactor As Double)
  95.     Dim i As Integer
  96.    
  97.     On Error GoTo ErrTrap
  98.     For i = 0 To ssetObj.Count - 1
  99.         ssetObj(i).ScaleEntity BasePoint, ScaleFactor
  100.     Next
  101.     Exit Sub
  102.    
  103. ErrTrap:
  104.     On Error GoTo 0
  105. End Sub

  106. ' 矩阵操作
  107. Sub ssetTransformBy(ByVal ssetObj As AcadSelectionSet, ByVal TransformationMatrix As Variant)
  108.     Dim i As Integer
  109.    
  110.     On Error GoTo ErrTrap
  111.     For i = 0 To ssetObj.Count - 1
  112.         ssetObj(i).TransformBy TransformationMatrix
  113.     Next
  114.     Exit Sub
  115.    
  116. ErrTrap:
  117.     On Error GoTo 0
  118. End Sub

  119.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-7 03:50 , Processed in 0.192642 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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