乐筑天下

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

VBA 中的查询

[复制链接]

4

主题

10

帖子

2

银币

初来乍到

Rank: 1

铜币
26
发表于 2006-9-19 05:20:47 | 显示全部楼层 |阅读模式
大家好,
我是vba的新手。我对VBA心存疑虑。运行程序后,我想检查结果是否正常。运行lisp后,v就可以用了!检查结果的变量。但是我不知道如何检查。有人能帮我吗?
  1.    Dim ssetObj As AcadSelectionSet
  2.    Dim mode As Integer
  3.    Dim grpCode(1) As Integer
  4.    Dim dataVal(1) As Variant
  5.    
  6.    Set ssetObj = ThisDrawing.SelectionSets.Add("SS01") --- why they had add "SSO1".
  7.    mode = acSelectionSetAll
  8.    grpCode(0) = 0
  9.    dataVal(0) = "LWPOLYLINE"
  10.      grpCode(2) = 8
  11.    dataVal(2) = "route"
  12.    ssetObj.Select mode, , , grpCode, dataVal
  13.    'ssetObj.Erase
  14.    'ssetObj.Delete

添加了编辑代码标签

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2006-9-19 06:07:36 | 显示全部楼层
您可以在调试模式下运行 IDE 并“监视”变量,这与在 Visual Lisp IDE 中相同。
回复

使用道具 举报

16

主题

168

帖子

39

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2006-9-19 06:24:51 | 显示全部楼层
对于您正在尝试做的事情,这里是一个很好的起点。下面的代码将所有块移动到第0层。它首先查看是否存在该名称的选择集,如果存在则将其删除。然后它创建所有实体的选择集,然后根据类型进行过滤。然后将这些实体移动到零层并删除选择集。
希望这能有所帮助...
  1. Option Explicit
  2. Public Sub TestSet(objDoc As AcadDocument)
  3.   Dim objSelSet As AcadSelectionSet
  4.   Dim objSelCol As AcadSelectionSets
  5.   Dim objLayer As AcadLayer
  6.   Dim intType(0) As Integer
  7.   Dim varData(0) As Variant
  8.   Dim objEnt As AcadEntity
  9.   Set objSelCol = objDoc.SelectionSets
  10.   For Each objSelSet In objSelCol
  11.     If objSelSet.Name = "test1" Then
  12.       objSelSet.Delete
  13.       Exit For
  14.     End If
  15.   Next objSelSet
  16.   Set objSelSet = objSelCol.Add("test1")
  17.   intType(0) = 0
  18.   varData(0) = "INSERT"
  19.   objSelSet.Select 5, filtertype:=intType, _
  20.   filterdata:=varData
  21.   For Each objEnt In objSelSet
  22.     Set objLayer = objEnt.Layer
  23.     If Not objLayer.Freeze And objLayer.LayerOn Then
  24.       objEnt.Layer = 0
  25.     End If
  26.   Next objEnt
  27.   Set objSelCol = Nothing
  28.   objSelSet.Delete
  29. End Sub

回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2006-9-19 06:30:07 | 显示全部楼层
那应该是
  1. objEnt.Layer = "0"

? ?
回复

使用道具 举报

16

主题

168

帖子

39

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2006-9-19 06:37:02 | 显示全部楼层
是的,你是对的。它应该是一个字符串
回复

使用道具 举报

4

主题

10

帖子

2

银币

初来乍到

Rank: 1

铜币
26
发表于 2006-9-19 06:40:56 | 显示全部楼层
嗨,克里和亚利桑那州,
感谢您的回复。 您的支持使我在学习VBA方面具有一些共同信心。
实际上,我已经编写了lisp来收集折线的坐标并存储在列表中。我正在通过VBA尝试同样的事情。
在VBA中,我已经到达了通过选择集收集折线的方法。现在我想要2个收集坐标。
感谢您的大力支持
,问候
维韦克
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-9-19 09:24:42 | 显示全部楼层
这只是一个名字,任何名字都会做。
使用亚利桑那州的选择集测试
修复你的代码 - grpCode(2)是没有好的
ctrl+g将打开你的即时窗口
调试.Print将打印到那个
(或使用当地人或观看窗口,如Kerry所说。
在下面添加。
Debug.Print ssetObj.count
ssetObj.Delete
ssetObj.Erase-将删除选择集中的项目-您不希望这样。
ssetObj.Delete-将删除选择集,而不是其中的项目。
现在,您可以使用 for 循环来处理 pline。
创建一个集合以添加坐标。
Dim CoordCol As Collection
Set CoordCol = New Collection
现在将您的光标放在 Collection 之后并点击 F1
,这将带您提供帮助
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-6 13:03 , Processed in 1.109527 second(s), 66 queries .

© 2020-2025 乐筑天下

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