乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 99|回复: 5

快速选取一层的所有对象,进行相应的操作

[复制链接]

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-5-19 09:15:00 | 显示全部楼层 |阅读模式
Sub QSelLayerControl()
'程序功能:快速选取一层的所有对象,进行相应的操作
                         Dim i         As AcadEntity
                         Dim ss As AcadSelectionSet
                         Dim ft(0) As Integer, fd(0)
                         Dim pLayer As String
                         Dim pControl As String
                         pLayer = ThisDrawing.Utility.GetString(0, vbCrlLf & "请输入层名:")
                         ft(0) = 8: fd(0) = pLayer
                         Set ss = ThisDrawing.ActiveSelectionSet
                         ss.Clear
                         ss.Select acSelectionSetAll, , , ft, fd
                         If ss.Count = 0 Then
                                                         ss.Delete
                                                         ThisDrawing.Utility.Prompt "层内没有对象或层不存在!"
                         Else
                                                         ThisDrawing.Utility.InitializeUserInput 1, "Move Copy Erase"
                                                         pControl = ThisDrawing.Utility.GetKeyword(vbCr & "请输入操作名[Move(移动)/Copy(复制)/Erase(删除)]:")
                                                         ThisDrawing.SendCommand "." & pControl & vbCr & "p" & vbCr & vbCr
                         End If
'附:将下列代码Copy到acad200?doc.lsp中,执行命令QSLC
'                         (defun CSLC()
'                         (setvar "cmdecho" 0)
'                         (command "-vbarun" "qsellayercontrol")
'                         (setvar "cmdecho" 1)
'                         (princ)
'                         )
End Sub
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
6
发表于 2004-6-3 15:40:00 | 显示全部楼层
你好!
         我是一个菜鸟,我不太会用你这个程序,能否给我指点一下?谢谢了。我的E :woshiyu1217@126.com
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-6-3 16:01:00 | 显示全部楼层
上面是VBA代码,你要把它Copy到VBA的代码窗口里保存,在加载应用程序的启动组把保存的dvb文件加入,再把下面的Lisp代码Copy到acad200?doc.lsp中
(defun CSLC()
(setvar "cmdecho" 0)
(command "-vbarun" "qsellayercontrol")
(setvar "cmdecho" 1)
(princ)
)
回复

使用道具 举报

11

主题

39

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2004-7-15 20:08:00 | 显示全部楼层
修改以下看看 Sub qselect()
Dim tsel As AcadSelectionSet
Dim entry As AcadEntity
Dim tpic As Variant
Dim layerstr As String
On Error Resume Next
Set tsel = ThisDrawing.SelectionSets("topirolss")
If Err Then
Err.Clear
Set tsel = ThisDrawing.SelectionSets.Add("topirolss")
tsel.Clear
End If
ThisDrawing.Utility.GetEntity entry, tpic, "选择实体:"
If Err Then
Err.Clear
Exit Sub
End If
layerstr = entry.Layer
                 Dim FilterType(0) As Integer
                 Dim FilterData(0) As Variant
                 FilterType(0) = 8
                 FilterData(0) = layerstr
                 tsel.Select acSelectionSetAll, , , FilterType, FilterData
                 tsel.Highlight (True)
                 If tsel.Count = 0 Then
                 tsel.Delete
                 Else
                 ThisDrawing.Utility.InitializeUserInput 1, "Move Copy Erase"
                 pControl = ThisDrawing.Utility.GetKeyword(vbCr & "请输入操作名[Move(移动)/Copy(复制)/Erase(删除)]:")                 ThisDrawing.SendCommand "." & pc & vbCr & "p" & vbCr & vbCr
                 End If
End Sub
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 2004-7-18 20:49:00 | 显示全部楼层
我不喜欢输入层名,我一般就愿意选层实体
  1. (defun c:ssl (/ el)
  2.    (if (setq el (entsel "\n选层实体:"))
  3.          (sssetfirst (setq ss (ssget "x" (list(assoc 8 (entget (car el)))))) ss)
  4.    )
  5. )
运行后,再输入copy,mirror,align,move(当然用简写命令啦,呵呵)。。。好像几乎所以的(没有对话框的)编辑命令都支持预选
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-7-18 21:02:00 | 显示全部楼层
^_^,抓VBA的痛脚,PickFrist选择集,VBA实现起来比较变 态
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-8-19 01:49 , Processed in 0.936076 second(s), 65 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表