乐筑天下

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

[编程交流] 到的多段线的面积和句柄

[复制链接]

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 08:34:41 | 显示全部楼层
越简单越好
 
转到acad控制柄。我发现可以使用以下行代码获取信息:
 
  1. (setq handle (cdr (assoc 5 (entget en))))

 
然而,当试图将setq变量放入属性块时,该变量不起作用。
 
  1. (defun c:test ( / area en nm pt )
  2. (if (setq en (ssget "_:S" '((0 . "LWPOLYLINE") (70 . 1))))
  3. (if (vl-catch-all-error-p
  4.       (setq area (vl-catch-all-apply 'vlax-curve-getarea (list (ssname en 0))))
  5.      )
  6.    (princ "\nInvalid Object.")
  7.    )
  8.   (setq handle (cdr (assoc 5 (entget en))))
  9.   )
  10. (setq area (rtos (/ area 144.0) 2 2))
  11. (if (setq block (ssget "_:S" '((0 . "INSERT"))))
  12. (progn
  13. (setq block (ssname block 0))
  14. (LM:vl-SetAttributeValue (vlax-ename->vla-object block) "NET_SQ_FEET" area)
  15. (LM:vl-SetAttributeValue (vlax-ename->vla-object block) "ACAD_HANDLE" handle)
  16. )
  17. )
  18.    (princ)
  19. )
  20. (vl-load-com) (princ)
  21. ;;----------------=={ Set Attribute Value }==-----------------;;
  22. ;;                                                            ;;
  23. ;;  Populates the first attribute matching the tag specified  ;;
  24. ;;  found within the block supplied with the value specified, ;;
  25. ;;  if present.                                               ;;
  26. ;;------------------------------------------------------------;;
  27. ;;  Author: Lee Mac, Copyright © 2010 - www.lee-mac.com       ;;
  28. ;;------------------------------------------------------------;;
  29. ;;  Arguments:                                                ;;
  30. ;;  block - VLA Block Reference Object                        ;;
  31. ;;  tag   - Attribute TagString                               ;;
  32. ;;  value - Value to which the Attribute will be set          ;;
  33. ;;------------------------------------------------------------;;
  34. ;;  Returns:  Value the attribute was set to, else nil        ;;
  35. ;;------------------------------------------------------------;;
  36. (defun LM:vl-SetAttributeValue ( block tag value )
  37.    (setq tag (strcase tag))
  38.    (vl-some
  39.        (function
  40.            (lambda ( attrib )
  41.                (if (eq tag (strcase (vla-get-TagString attrib)))
  42.                    (progn
  43.                        (vla-put-TextString attrib value)
  44.                        value
  45.                    )
  46.                )
  47.            )
  48.        )
  49.        (vlax-invoke block 'GetAttributes)
  50.    )
  51. )
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:37:27 | 显示全部楼层
请注意,en变量存储的是选择集,而不是实体;还要在IF测试中包含多条语句,请检查PROGN的使用。
  1. 10
回复

使用道具 举报

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 08:42:22 | 显示全部楼层
令人惊叹的谢谢你的帮助。这就是我所需要的设置。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:47:23 | 显示全部楼层
听起来你已经完成了你的代码,这很好。很高兴我能帮助你!完全欢迎你!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:48:39 | 显示全部楼层
我很高兴你能使用我的功能Ohnoto
 
对于此特定任务,您可能需要考虑使用我的“设置属性值”函数,该函数可以通过以下方式调用:
 
  1. 11

 
@米尔恰:一些非常详细和信息丰富的建议,做得好
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 08:53:11 | 显示全部楼层
 
 
也许最好使用Vlax曲线isClosed,或者考虑Plinegen。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:56:51 | 显示全部楼层
如果您能详细介绍该功能将如何改进选择过程,我将不胜感激。
其次,PLINEGEN系统变量与OP的任务-选择闭合多段线无关。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:57:33 | 显示全部楼层
 
考虑闭合LWPolyline的线型生成设置为ON的情况
 
  1. 12
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 09:01:39 | 显示全部楼层
你是对的;我现在理解了这个问题;这也可能来自于在属性中重写系统变量或通过PEDIT命令。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 21:01 , Processed in 0.453306 second(s), 68 queries .

© 2020-2025 乐筑天下

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