乐筑天下

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

[求助]访问直线对象的问题

[复制链接]

1

主题

8

帖子

1

银币

初来乍到

Rank: 1

铜币
12
发表于 2008-11-21 15:11:00 | 显示全部楼层 |阅读模式
假设在过程中
Dim SpanLine As AcadLine
但是在运行下面语句时,会遇到类型不匹配错误
For Each SpanLine In ThisDrawing.ModelSpace
如果定义成AcadEntity,则可以运行过去
cad为2009.
我在一本书上看到过完全相同的例子,是定义成acadline的,不知道到底能不能这样
如果不能,应该如何解决访问的问题?谢谢了
回复

使用道具 举报

120

主题

326

帖子

7

银币

中流砥柱

Rank: 25

铜币
806
发表于 2008-11-21 21:16:00 | 显示全部楼层
For Each XX In ThisDrawing.ModelSpace是对ModelSpace空间进行for each操作。
Dim SpanLine As AcadLine这是对CAD线进行定义
在ModelSpace中要对Line操作,需要用选择集方法。
回复

使用道具 举报

1

主题

8

帖子

1

银币

初来乍到

Rank: 1

铜币
12
发表于 2008-11-21 21:27:00 | 显示全部楼层
只能用selectionset?
我只是想对一个层内的所有直线进行操作,因为要提取直线的属性,所以必须定义成line
有没有什么可以不用用户选择就能都直接操作的办法呢
回复

使用道具 举报

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2008-11-22 00:55:00 | 显示全部楼层
Dim i As Integer
For i = 0 To ThisDrawing.ModelSpace.Count - 1
    Debug.Print ThisDrawing.ModelSpace.Item(i).Layer
Next
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2008-11-22 09:26:00 | 显示全部楼层
先定义成AcadEntity,针对每一个对象,先判断对象的.Name属性是不是AcDbLine,再后续的操作。
但还是用选择集好些,虽然对初学者难一些,如果文件大则速度会明显快。
回复

使用道具 举报

1

主题

8

帖子

1

银币

初来乍到

Rank: 1

铜币
12
发表于 2008-11-22 12:18:00 | 显示全部楼层
选择集也不是感觉难,我也做了一个,也测试过了,只不过感觉还要选一下比较麻烦
最后的解决办法是用了一个中间值转换了一下
先定义成entity,然后判断类型是否line,如果是的话赋值给另一个定义成line的变量,就可以了
速度的问题还好,一次性替换了几万个图元,也没花啥时间
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2008-11-22 12:36:00 | 显示全部楼层
选择集并不需要点一下,使用SelectSet.Select方法中的acSelectionSetAll模式再加上过滤器过滤直线就可以。
回复

使用道具 举报

1

主题

8

帖子

1

银币

初来乍到

Rank: 1

铜币
12
发表于 2008-11-25 15:59:00 | 显示全部楼层
谢谢,我再去研究
现在只是任务驱动法,有啥想法再去找解决方案,所以对一般的东西都还没有系统了解
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-3 17:02 , Processed in 1.022104 second(s), 68 queries .

© 2020-2025 乐筑天下

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