乐筑天下

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

DXF代码

[复制链接]

1

主题

18

帖子

7

银币

初来乍到

Rank: 1

铜币
16
发表于 2005-9-15 20:49:45 | 显示全部楼层 |阅读模式
我想从图形中的一个对象获取DXF代码..
我知道使用LISP (entget (car (entsel))可以做到这一点,但是在VBA能做到吗?
如果可能的话,您能发布一些示例代码吗?

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

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

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2005-9-15 21:14:49 | 显示全部楼层
嗨,埃迪,
我找到了这个。 其 VLAX 接口是必需的。
没有亲自尝试过,所以在这里发布作为任何有..
http://www.acadx.com/
GetAssociationList 在 Visual Basic 部分。
我认为这可能是你需要的..
克里
回复

使用道具 举报

1

主题

18

帖子

7

银币

初来乍到

Rank: 1

铜币
16
发表于 2005-9-17 08:45:28 | 显示全部楼层
克里,
我看了一下你发布的链接,看起来它会帮助我....
我只是好奇...与它的视觉lisp部分...如何修改它以使用外部参照?
使用 getubentity ?
修改:
[代码0
]原文代码:
  1. Public Function GetAssociationList(ent As AcadEntity)
  2.     Dim obj As VLAX, ent As AcadEntity, retVal
  3.    
  4.     ThisDrawing.Utility.GetEntity ent, pt, "Select object: "
  5.    
  6.     Set obj = New VLAX
  7.     obj.EvalLispExpression "(defun getEDD (handle / lst) (vlax-safearray-fill (vlax-make-safearray " & _
  8.                            "vlax-vbvariant (cons 0 (1- (length (setq lst (entget (handent handle))))))" & _
  9.                            ") (mapcar '(lambda (x) (vlax-make-variant (vlax-safearray-fill" & _
  10.                            "(vlax-make-safearray vlax-vbvariant '(0 . 1))(list (vlax-make-variant (car x))" & _
  11.                            "(vlax-make-variant(cond ((= (type (cdr x)) 'ENAME) (vla-get-objectid" & _
  12.                            "(vlax-ename->vla-object (cdr x)))) ((= (type (cdr x)) 'LIST) (vlax-safearray-fill" & _
  13.                            "(vlax-make-safearray vlax-vbVariant (cons 0 (1- (length (cdr x))))) (cdr x)" & _
  14.                            ")) (t (cdr x)))))))) lst)))"
  15.     obj.SetLispSymbol "handle", ent.Handle
  16.     retVal = obj.EvalLispExpression("(getedd handle)")
  17.     obj.NullifySymbol "geteed", "handle"
  18.     GetAssociationList = retVal
  19. End Function

回复

使用道具 举报

1

主题

18

帖子

7

银币

初来乍到

Rank: 1

铜币
16
发表于 2005-9-18 19:19:02 | 显示全部楼层
嗨,埃迪,你实际上是想确定哪些属性。
在我看来,直接使用VBA可能更经济。..如果信息可用,我从VBA回来
我不怎么和VBA一起做复杂的工作。如果你能说得更清楚一点,这里的一个勇气可能会有所帮助。我知道Glenn对外部参照做了特别的研究
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2005-9-18 19:43:48 | 显示全部楼层
克里,
物体已经脱离了AutoPLANT管道...对象本身被称为AT_CYLINDER
我已经成功地在其中一个对象上使用了代码,但我真的需要通过外部参照访问对象。
回复

使用道具 举报

1

主题

18

帖子

7

银币

初来乍到

Rank: 1

铜币
16
发表于 2005-9-18 20:00:06 | 显示全部楼层
除非我误解了,这幅画。utility . GetSubEntity object selected,pt,TransMatrix,ContextData," Select object: "
应该可以。
只要小心输入正确选择的对象..
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2005-9-18 20:14:43 | 显示全部楼层
getubentity 可以正常工作,但此部分代码无法从该对象获取信息。
[代码 2]
retval ended empty...
我有一种感觉,它可能与运行它的类模块有关。(从acadx下载)
供您参考:这来自acadx网站
注意:vlax.cls包含在附加的ZIP中
回复

使用道具 举报

1

主题

18

帖子

7

银币

初来乍到

Rank: 1

铜币
16
发表于 2005-9-18 20:35:34 | 显示全部楼层
如果我没记错的话(不是一个好的记录),我记得几年前弗兰克报告说vlax在不同的AutoCAD版本中运行时没有正确运行。
您需要在vlax类构造函数中查找类似以下内容的语句:
ThisDrawing.Application.GetInterfaceObject("VL.Application.1")
并将其更改为正确的版本号,例如:
ThisDrawing.Application.GetInterfaceObject("VL.Application.15")

ThisDrawing.Application.GetInterfaceObject("VL.Application.16")
建议:重写构造函数,使其在任何版本的AutoCAD中运行。
/所有猜测。
编辑:修复拼写错误。
回复

使用道具 举报

1

主题

18

帖子

7

银币

初来乍到

Rank: 1

铜币
16
发表于 2005-9-18 21:02:57 | 显示全部楼层
谢谢你..我会调查的..
回复

使用道具 举报

1

主题

18

帖子

7

银币

初来乍到

Rank: 1

铜币
16
发表于 2005-9-19 01:24:12 | 显示全部楼层
谢谢你澄清了格伦...我在想怎么做,为什么....非常感谢..:kewl:
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-4 14:42 , Processed in 0.915760 second(s), 72 queries .

© 2020-2025 乐筑天下

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