乐筑天下

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

[编程交流] Vla GetInterfaceObject什么是

[复制链接]

78

主题

207

帖子

129

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
395
发表于 2022-7-5 16:16:00 | 显示全部楼层 |阅读模式
这是我目前正在使用的创建MleaderStyle的代码
 
  1. ;; original code by VVA
  2. (defun Create_MleaderStyle        (mleaderstylename
  3.                          MldScale
  4.                          /
  5.                         ; acaddoc
  6.                         ; mldrdict
  7.                         ; newldrstyle
  8.                          ;objcolor
  9.                         )
  10. (vl-load-com)
  11. (setq acadobj                (vlax-get-acad-object)
  12. acaddoc                (vla-get-activedocument acadobj)
  13. mldrdict        (vla-item (vla-get-dictionaries acaddoc) "ACAD_MLEADERSTYLE")
  14. ) ;_ end of setq
  15. (setq        newldrstyle (vlax-invoke-method  mldrdict 'addobject mleaderstylename "AcDbMLeaderStyle"
  16. ) ;_ end of vlax-invoke-method
  17. ) ;_ end of setq
  18. (setq        objcolor (vla-getinterfaceobject acadobj (strcat "AutoCAD.AcCmColor." (substr (getvar "acadver") 1 2)) ;_ end of strcat
  19.            ) ;_ end of vla-getinterfaceobject       [b][color="red"];;what is vla-getinerfaceobject, and what am i retreiving?[/color][/b]
  20. ) ;_ end of setq
  21. (vla-put-colorindex objcolor 2)
  22. (vla-put-textcolor newldrstyle objcolor)      [color="red"][b];;howcome I have to set color this way instead of the alternate in code below[/b][/color]
  23. (vla-put-colorindex objcolor 0)
  24. (vla-put-leaderlinecolor newldrstyle objcolor)
  25. (foreach item
  26.    (list
  27.      
  28.      '("AlignSpace" 0.18)
  29.      '("Annotative" 0)
  30.      '("ArrowSize" 0.125)
  31.      ;'("ArrowSymbol" "")
  32.      '("BitFlags" 0)
  33.      ;'("Block" "")
  34.      '("BlockConnectionType" 0)
  35.      '("BlockRotation" 0.0)
  36.      '("BlockScale" 1.0)
  37.      '("BreakSize" 0.125)
  38.      '("ContentType" 2)                ;mtext
  39.      '("Description" "")
  40.      '("DoglegLength" 0.125)
  41.      '("DrawLeaderOrderType" 0)
  42.      '("DrawMLeaderOrderType" 1)
  43.      '("EnableBlockRotation" -1)
  44.      '("EnableBlockScale" -1)
  45.      '("EnableDogleg" -1)
  46.      '("EnableFrameText" 0)
  47.      '("EnableLanding" -1)
  48.      '("FirstSegmentAngleConstraint" 0)
  49.      '("LandingGap" 0.09)
  50.      '("LeaderLineType" 1)
  51.      '("LeaderLineTypeId" "ByBlock")
  52.      '("LeaderLineWeight" -2)
  53.      '("MaxLeaderSegmentsPoints" 0)
  54.      (list "ScaleFactor" MldScale)
  55.      '("SecondSegmentAngleConstraint" 0)
  56.      '("TextAlignmentType" 0)
  57.      '("TextAngleType" 0)
  58.      '("TextAttachmentDirection" 0)
  59.      '("TextBottomAttachmentType" 0)
  60.      '("TextHeight" 0.09375)
  61.      '("TextLeftAttachmentType" 1)
  62.      '("TextRightAttachmentType" 1)
  63.      '("TextString" "")
  64.      '("TextStyle" "StyleName")                        ;need to add check for existing
  65.      '("TextTopAttachmentType" 0)
  66.    ) ;_ end of list
  67.    (vlax-put newldrstyle (car item) (cadr item))
  68. ) ;_ end of foreach
  69. newldrstyle
  70. ) ;_ end of defun

 
怎么会这样?我试过了,它不起作用。
 
  1. (vlax-put-property (vlax-get-property newldrstyle 'Textcolor) 'ColorIndex 5)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:38:47 | 显示全部楼层
查看“acadver”,它为每个版本的Autocad等返回不同的数字有时在打开Autocad数据库时,您必须在版本中使用正确的数字。因此,我有一些代码可以在打开CIV3D数据库之前检查哪个版本正在运行。
 
  1. ((vl-string-search "R20.0" vrsn)(setq appstr "10.4"));;2015
  2. ((vl-string-search "R20.1" vrsn)(setq appstr "10.5"));;2016     
  3. ((vl-string-search "R21.0" vrsn)(setq appstr "11.0"));;2017   
回复

使用道具 举报

78

主题

207

帖子

129

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
395
发表于 2022-7-5 17:09:09 | 显示全部楼层
是的,我明白了
 
所以这条线本质上是这样计算的。
 
  1. (setq objcolor (vla-getinterfaceobject acadobj "AutoCAD.AcCmColor.21") )

 
这给了我这个
 
  1. objcolor = '#<VLA-OBJECT IAcadAcCmColor 000001607b35b8b0>

 
这是什么?这是一种颜色吗?这个颜色属于哪个物体?这里是这样用的
  1. (vla-put-colorindex objcolor 2)
  2. (vla-put-textcolor newldrstyle objcolor)      
  3. (vla-put-colorindex objcolor 0)
  4. (vla-put-leaderlinecolor newldrstyle objcolor)

 
为什么我不能这么做
 
  1. (vlax-put-property (vlax-get-property newldrstyle 'Textcolor) 'ColorIndex 5)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:16:21 | 显示全部楼层
使用vlax dump对象并查看结果。它可能有助于了解发生了什么,样式可以依赖于不同级别的更改,而不是沿着树结构往下走。我确实发现了一些东西,指出了你可以直接做的地方,我将不得不再做一次。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 17:00 , Processed in 0.449888 second(s), 71 queries .

© 2020-2025 乐筑天下

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