乐筑天下

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

[编程交流] VLA-*功能帮助(wher

[复制链接]

33

主题

73

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
165
发表于 2022-7-6 15:00:53 | 显示全部楼层 |阅读模式
你好
我知道我可以在vlisp帮助中搜索所有lisp函数。它解释了所有标准lisp函数以及vlax-*函数。
但是在哪里可以获得vla-*函数的帮助呢。我知道我可以使用VLisp的适当方法获得它们的列表,但没有提供此列表的帮助。。。
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 15:57:00 | 显示全部楼层
它不是AutoLISP函数,而是ActiveX对象的属性和方法。您可以在开发人员帮助中的ActiveX和VBA参考中找到它。虽然使用了VBA语法,但在AutoLISP语法中使用它们并不困难。
 
画一条线,在命令行中键入并拾取线:
 
  1. Command: (vl-load-com)
  2. Command: (setq vObj(vlax-ename->vla-object(car(entsel))))
  3. Select object: #<VLA-OBJECT IAcadLine 026386b4>

 
现在你有了你行的ActiveX对象。通过vlax dump对象函数查看所有属性和方法:
 
  1. Command: (vlax-dump-object vObj T)
  2. ; IAcadLine: AutoCAD Line Interface
  3. ; Property values:
  4. ;   Angle (RO) = 0.657912
  5. ;   Application (RO) = #<VLA-OBJECT IAcadApplication 00d73d3c>
  6. ;   Delta (RO) = (584.602 451.76 0.0)
  7. ;   Document (RO) = #<VLA-OBJECT IAcadDocument 090902a8>
  8. ;   EndPoint = (1887.85 1143.92 0.0)
  9. ;   Handle (RO) = "1AD"
  10. ;   HasExtensionDictionary (RO) = 0
  11. ;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 0edfe97c>
  12. ;   Layer = "0"
  13. ;   Length (RO) = 738.815
  14. ;   Linetype = "ByLayer"
  15. ;   LinetypeScale = 1.0
  16. ;   Lineweight = -1
  17. ;   Material = "ByLayer"
  18. ;   Normal = (0.0 0.0 1.0)
  19. ;   ObjectID (RO) = 2130342760
  20. ;   ObjectName (RO) = "AcDbLine"
  21. ;   OwnerID (RO) = 2130337016
  22. ;   PlotStyleName = "ByLayer"
  23. ;   StartPoint = (1303.24 692.161 0.0)
  24. ;   Thickness = 0.0
  25. ;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 0ee0de10>
  26. ;   Visible = -1
  27. ; Methods supported:
  28. ;   ArrayPolar (3)
  29. ;   ArrayRectangular (6)
  30. ;   Copy ()
  31. ;   Delete ()
  32. ;   GetBoundingBox (2)
  33. ;   GetExtensionDictionary ()
  34. ;   GetXData (3)
  35. ;   Highlight (1)
  36. ;   IntersectWith (2)
  37. ;   Mirror (2)
  38. ;   Mirror3D (3)
  39. ;   Move (2)
  40. ;   Offset (1)
  41. ;   Rotate (2)
  42. ;   Rotate3D (3)
  43. ;   ScaleEntity (2)
  44. ;   SetXData (2)
  45. ;   TransformBy (1)
  46. ;   Update ()
  47. T

 
现在获取对象颜色:
  1. Command: (vla-get-color vObj)
  2. 256

 
并将其更改为红色:
 
  1. Command: (vla-put-Color vObj 1)
  2. nil

 
如您所见,vla函数是对象属性。vla get-用于获取属性,vla put-用于更改属性。
 
现在将偏移方法应用于直线:
 
  1. Command: (setq Res(vla-offset vObj -15))
  2. #<variant 8201 ...>

 
变量Res是带有新对象的变量safearray。将其转换为列表:
 
  1. Command: (vlax-safearray->list(vlax-variant-value Res))
  2. (#<VLA-OBJECT IAcadLine 02638954>)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:09:53 | 显示全部楼层
我们为这些方法和属性提供了一些帮助,请参见此处(您可以在下面找到属性列表)。
160058b8zy8qo98ykohpmo.jpg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 21:15 , Processed in 0.796646 second(s), 60 queries .

© 2020-2025 乐筑天下

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