明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1217|回复: 1

[原创]PickFirstSSet改进

[复制链接]
发表于 2008-5-11 21:05:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2008-5-11 21:09:30 编辑

此函数用于VBA程序,先选择后操作 详见 原帖增添了简单的过滤功能
最理想的过滤方式应该是SS.Select acSelectionSetPrevious,,, FilterType, FilterData
就是不知道怎么样把PickfirstSelectionSet变成SelectionSetPrevious
  1. Public Function PickFirstSSet(Optional ByVal Type_Name As String) As AcadSelectionSet
  2.     On Error Resume Next
  3.     Dim SS As AcadSelectionSet
  4.     Dim Ent As AcadEntity
  5.     Set SS = ThisDrawing.PickfirstSelectionSet
  6.     If SS.Count = 0 Then
  7.         ThisDrawing.Utility.Prompt "请选择对象:" & vbCrLf
  8.         SS.SelectOnScreen
  9.     End If
  10.     If Type_Name <> "" Then
  11.         Dim DelSS() As AcadEntity
  12.         Dim i As Integer
  13.         For Each Ent In SS
  14.             If InStr(Type_Name, TypeName(Ent)) <= 0 Then
  15.                 ReDim Preserve DelSS(i)
  16.                 Set DelSS(i) = Ent
  17.                 i = i + 1
  18.             End If
  19.         Next
  20.         SS.RemoveItems DelSS
  21.     End If
  22.     Set PickFirstSSet = SS
  23. End Function
简单示例(只修改文字对象的颜色):
  1. Sub CC()
  2.      Dim Ent As AcadEntity
  3.      Dim SS As AcadSelectionSet
  4.      Set SS = PickFirstSSet("IAcadText2")
  5.      For Each Ent In SS
  6.          Ent.color = acGreen
  7.      Next
  8. End Sub
 楼主| 发表于 2008-5-12 11:40:00 | 显示全部楼层
今天使用时发现错误: Visual LISP command document mismatch: TB
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 08:56 , Processed in 0.140207 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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