乐筑天下

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

在ACAD中使用一次选择集?

[复制链接]

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 2007-12-20 11:01:43 | 显示全部楼层 |阅读模式
我在VBA中创建了一个选择集,名为;Im“;但我的问题是,在ACAD中,我仍然可以引用Sset的名称吗
换句话说,在ACAD中,如果我键入Select,我意识到我可以为上一个键入p,但是否仍然需要键入Im,然后在ACAD中将该选择集识别出来
谢谢
标记
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-12-20 11:22:44 | 显示全部楼层
我不知道'我不这么认为
I'我写了一个hack(很难看),能够使用例程中的选择集作为'先前#039;在例程完成写作后。我不知道'我不能把它脱掉,它可能在某个地方的交换处。它涉及到向对象写入虚假扩展数据。
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-12-20 11:30:15 | 显示全部楼层

哎呀!听起来很可怕,这是ACAD中完全没有意义的事情之一
我们可以在VBA中创建所有这些选择集和过滤器等。然而,一旦我们进入ACAD,我们就不能再按名称引用它们了?这太傻了
我想知道分组法?我没有#039;t仔细看了看
同样,在ACAD中,我们可以创建过滤器并按名称引用它们,但我不确定我们是否可以在VBA中创建一个过滤器,然后在ACAD中将其引用
有件事我;五月“;我可以(使用我拥有的函数)将ACAD变量Sset发送到LISP,然后;可以是“;它(选择集)将至少通过使用!ACAD中的Sset,HUMMM
必须有一种方法来引用ACAD中的命名sset
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-12-20 11:31:57 | 显示全部楼层

我的意思是说VBA变量Sset到LISP&nbsp
标记
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-12-20 17:14:59 | 显示全部楼层

正如我和其他人在帖子中所说的,出于所有的意图和目的,不。
回复

使用道具 举报

194

主题

592

帖子

11

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1380
发表于 2007-12-20 18:05:46 | 显示全部楼层
虽然只需要一点点lisp,但它可以在这里完成;s口齿不清:
  1. (defun getVBss (name / ss ssnew)
  2.   (if (not (vl-catch-all-error-p
  3.              (vl-catch-all-apply
  4.                '(lambda        ()
  5.                   (setq        ss (vla-item
  6.                              (vla-get-selectionsets
  7.                                (vla-get-activedocument
  8.                                  (vlax-get-acad-object)
  9.                                )
  10.                              )
  11.                              name
  12.                            )
  13.                   )
  14.                 )
  15.              )
  16.            )
  17.       )
  18.     (progn
  19.       (setq ssnew (ssadd))
  20.       (vlax-for        ent ss
  21.         (ssadd (vlax-vla-object->ename ent) ssnew)
  22.       )
  23.     )
  24.   )
  25.   ssnew
  26. )

记住名为SS#039;s区分大小写。
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-12-20 18:41:15 | 显示全部楼层

杰夫谢谢你的代码
我仍然需要查看它,我必须将其放入VLISP并将其保存到特定的文件类型吗
嘿,你认为有可能把代码直接放到VBA中吗
参考VLISP
  1. Set VL = CreateObject(VL.Application.16)

I和#039;我会说,是的,我们可以
实际上,这甚至可以作为VBA中的一个函数很好地工作,你认为呢
标记
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-12-20 19:30:57 | 显示全部楼层
首先,欢迎您
然而,我认为混合lisp和VBA是一种边界nutzoid…..VLAX。CLS sortof就是一个例子
是的,我展示了一种将ActiveX SS转换为基于ename的SS的方法,但这也意味着Glenn是对的&引用;就所有意图和目的而言,编号”;你不能像你要求的那样在Acad中获得它,你需要一些lisp技巧来做到这一点
我只想把它另存为“;getVBss。lsp“;并通过VBA宏或启动宏时使用的工具栏按钮或I&#039之前的任意数量的东西加载它;d将lisp代码添加到DVB中
我敢问这一切的最终结果是什么?哎呀,为什么不把代码保存在VBA中呢?(顺便说一句,这就是格伦试图引导你的方向。)
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-12-21 11:39:36 | 显示全部楼层

嗨,杰夫,再次谢谢你!当然你可以问我;你可以问任何问题
如果有人说don#039;t做它,它'如果没有举一些例子,那就太疯狂了,那么这并不总是能阻止他们
至于VLAX类,我没有使用它,我也不会使用它。然而,我发布的两个缩小的函数对我来说非常好。我能够将getfield和setq方法与LISP以及VBA代码一起使用,并且我遇到了绝对零的问题
是的!我确实有一个使用“打开文件”对话框方法的版本,但对于如此少的返回,例如用对话框提示用户选择一个文件,这需要很多代码。当然,我'如果可能的话,我宁愿在VBA中完成这一切,这是有意义的。出于其他原因,我也经常使用VBScripting代码;可以是“;这没关系;看起来效果不错
再次感谢您的代码;我会照你的建议去做;我将制作一个单独的例程,并用VBA项目加载它
我本来打算今天早上来试试,然后就是这一切。天哪
杰夫,我不是最有经验的程序员,我只是问它是否可以合并,我很欣赏你的回答,那太难了,没有意义。我只是认为,因为我们可以连接到VLISP类型库,这是可能的;我没有意识到我这样问是疯了,所以我道歉 因此,我不会尝试它,我会去尝试你。lsp例程
谢谢你,马克
回复

使用道具 举报

194

主题

592

帖子

11

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1380
发表于 2007-12-21 12:13:30 | 显示全部楼层

杰夫,我刚刚试过lisp程序;它工作得很好
再次感谢您
标记
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-5 13:56 , Processed in 0.834493 second(s), 72 queries .

© 2020-2025 乐筑天下

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