乐筑天下

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

使用vba编辑draworder

[复制链接]

5

主题

10

帖子

2

银币

初来乍到

Rank: 1

铜币
30
发表于 2004-8-20 14:01:12 | 显示全部楼层 |阅读模式
我想知道是否可以使用vba控制提款顺序。我似乎找不到哪个属性控制提取顺序
  1. Sub Block2Front()
  2. Dim BlockSSet As AcadSelectionSet
  3. Dim VarBlock As Variant
  4. Set BlockSSet = ThisDrawing.SelectionSets.Add("block")
  5. BlockSSet.SelectOnScreen
  6. For Each VarBlock In BlockSSet
  7. VarBlock.XXXXXXX = "Front"
  8. Next
  9. BlockSSet.Delete
  10. End Sub

感谢Devitg为我指点沼泽。我以为在卡达洛关闭论坛后我失去了这个。顺便说一句,他们(新的所有者)认为论坛将完好无损。这是不是太干扰了他们的商业思想?

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

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

使用道具 举报

0

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
2
发表于 2004-8-20 17:50:24 | 显示全部楼层

您好…
您使用SendCommand进行测试:
  1. Sub Block2Front()
  2. Dim BlockSSet As AcadSelectionSet
  3. Dim VarBlock As Variant
  4. Set BlockSSet = ThisDrawing.SelectionSets.Add("block")
  5. BlockSSet.SelectOnScreen
  6. ThisDrawing.SendCommand "_.draworder" & vbCr & "_p" & vbCr & vbCr & "_Front" & vbCr
  7. BlockSSet.Delete
  8. End Sub

回复

使用道具 举报

5

主题

10

帖子

2

银币

初来乍到

Rank: 1

铜币
30
发表于 2004-8-20 20:42:13 | 显示全部楼层
这是设置提款单的一个很好的解决方案。Thx<br>但是,提款单必须存储在某个值中。是否可以捕获此值并将其存储在变量表中。
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2004-8-21 12:23:25 | 显示全部楼层

从SORTENTSTABLE上的DXF引用:
看来VBA/ActiveX无法访问保存在此表中的数据。Lisp可以使用它:
  1. (setq layouts (vla-get-layouts *doc*))
  2. (setq ms (vla-item layouts "Model"))
  3. (setq blk (vla-get-block ms))
  4. (if (= :vlax-true (vla-get-hasextensiondictionary blk))
  5.   (progn
  6.     (setq dict (vla-getextensiondictionary blk))
  7.     (setq item (vla-item dict 0))
  8.     (setq ename (vlax-vla-object->ename item))
  9.     (entget ename)
  10.     )
  11.   )

HTH
回复

使用道具 举报

4

主题

50

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
66
发表于 2004-8-21 15:31:03 | 显示全部楼层
为什么在VBA中不可用?对我来说看起来很容易访问...只需从Application对象获取当前文档,其余代码将是与您的帖子等效的VBA...
值得一提的是,您可以直接从活动文档中获取模型空间(您在代码中称为
blk
):
  1. (setq ms (vla-get-modelSpace *doc*))
  2. (if (= :vlax-true (vla-get-hasExtensionDictionary ms))
  3.    ...
  4. )

回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2004-8-21 23:15:40 | 显示全部楼层

我知道我可以直接获得MS,但是如果您想要查找任何布局的draworder,您需要与该布局相关联的块......
返回DXF代码的VBA等价函数(entget)是什么?如果查看用dict.item(0)返回的对象,没有任何东西与之相关联......
回复

使用道具 举报

5

主题

10

帖子

2

银币

初来乍到

Rank: 1

铜币
30
发表于 2004-8-23 03:48:06 | 显示全部楼层
我觉得这很容易。
回复

使用道具 举报

0

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
3
发表于 2005-12-21 21:06:31 | 显示全部楼层
杰夫,我一直在尝试编写一个VB应用程序来控制图层的绘制顺序。看来这是正确的讨论主题。用LISP看起来更容易,但我无法让它写回绘图,这样下次我运行例程时,它就会回忆起上次的绘图顺序。但再说一次,我不是VB专家。有人在这方面成功过吗?
从SORTENTSTABLE上的DXF参考:
似乎无法使用VBA/ActiveX访问此表中保存的数据。它可用于Lisp:
  1. (setq layouts (vla-get-layouts *doc*))
  2. (setq ms (vla-item layouts "Model"))
  3. (setq blk (vla-get-block ms))
  4. (if (= :vlax-true (vla-get-hasextensiondictionary blk))
  5.   (progn
  6.     (setq dict (vla-getextensiondictionary blk))
  7.     (setq item (vla-item dict 0))
  8.     (setq ename (vlax-vla-object->ename item))
  9.     (entget ename)
  10.     )
  11.   )

HTH
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2005-12-22 00:35:25 | 显示全部楼层
嗨,CAD女,
你没有说你使用的是什么版本。从2004年或2005年开始,SorentsTable被放入Acad API中。我在之前讨论中的所有经验都是基于2002年的。如果您有更新的版本,我将首先查看ActiveX Developer对SorentsTable的帮助。
回复

使用道具 举报

0

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
3
发表于 2005-12-22 02:30:18 | 显示全部楼层
我用Vlisp写了一个解决方案,应该可以翻译成VBA:
访问我的主页->免费的东西,然后搜索“VxSetDrawOrder”
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-5 00:38 , Processed in 0.695466 second(s), 72 queries .

© 2020-2025 乐筑天下

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