明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5874|回复: 5

总是出现方法作用于对象失败,有谁指点一二吧!

[复制链接]
发表于 2004-2-24 10:45:00 | 显示全部楼层 |阅读模式
Dim acadApp As AcadApplication
Dim ssetObj As AcadSelectionSet
Set acadApp = GetObject(, "AutoCAD.Application")
Set ssetObj = acadApp.ActiveDocument.SelectionSets.Add("test")

本帖子中包含更多资源

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

x
发表于 2004-2-24 12:01:00 | 显示全部楼层
1.ActiveDocument是否存在,也就是说是否有打开了的图形中界面中。


2.选择集的名称只能是唯一的,如果你运行了第一次,第二次再运行此程序时,本身图形中已经存在了该名称的选择集,就会出错。所以必须对该名称进行判断。
发表于 2004-2-24 12:10:00 | 显示全部楼层
加上这个代码: Dim i As Integer
For i = 0 To ThisDrawing.SelectionSets.Count - 1
ThisDrawing.SelectionSets.Item(i).Clear
ThisDrawing.SelectionSets.Item(i).Delete
Next
发表于 2004-2-24 12:48:00 | 显示全部楼层
最简单的新建空白选择集的函数:
  1. Function CreatSSet() As AcadSelectionSet
  2.        On Error Resume Next
  3.        ThisDrawing.SelectionSets("mccad").Delete
  4.        Set CreatSSet = ThisDrawing.SelectionSets.Add("mccad")
  5. End Function
 楼主| 发表于 2004-2-24 15:19:00 | 显示全部楼层
也不知道是为什么,现在倒是又不出现方法作用于对象失败的错误了,而是程序没有反应,我的目的是想把图形中选择的实体对象高亮显示,并把坐标信息倒出来,可第一步就实现不了。 Private Sub SelectLayer()
Dim acadApp As AcadApplication
Dim ssetObj As AcadSelectionSet
' On Error Resume Next
Set acadApp = GetObject(, "autoCAD.Application")
' ThisDrawing.SelectionSets("hights").Delete
Set ssetObj = acadApp.ActiveDocument.SelectionSets.Add("hights")
AppActivate acadApp.Caption
Dim FType(0) As Integer
Dim FData(0) As Variant
FType(0) = 0
FData(0) = "line"

Dim filterType As Variant
Dim filterData As Variant
filterType = FType
filterData = FData
ssetObj.Select acSelectionSetAll, , , filterType, filterData
AppActivate UserForm1.Caption

Dim pickedObjs As AcadEntity
For Each pickedObjs In ssetObj
pickedObjs.Highlight (True)
pickedObjs.Update
Next
ssetObj.Delete
End Sub 事先说明一点,已经打开了CAD图形,不过图形的保存位置同dvb工程的位置是不一样的,一直如此都未碰到问题。
发表于 2004-2-26 15:05:00 | 显示全部楼层
我改了一下,好像可以了。关键不要使用update Private Sub main()
Dim acadApp As AcadApplication
Dim ssetObj As AcadSelectionSet
On Error Resume Next
Set acadApp = GetObject(, "autoCAD.Application")
acadApp.ActiveDocument.SelectionSets("hights").Delete
Set ssetObj = acadApp.ActiveDocument.SelectionSets.Add("hights")
AppActivate acadApp.Caption
Dim FType(0) As Integer
Dim FData(0) As Variant
FType(0) = 0
FData(0) = "line"
Dim filterType As Variant
Dim filterData As Variant
filterType = FType
filterData = FData
ssetObj.Select acSelectionSetAll, , , filterType, filterData
'AppActivate userform1.Caption

Dim pickedObjs As AcadEntity
For Each pickedObjs In ssetObj
pickedObjs.Highlight (True)
Next
ssetObj.Delete
End Sub
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-22 16:52 , Processed in 0.185098 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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