乐筑天下

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

[编程交流] 标记对象

[复制链接]

4

主题

10

帖子

6

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 17:18:17 | 显示全部楼层 |阅读模式
大家好!几天来,我一直在寻找解决我遇到的问题的方法。我见过几个人问了一个非常类似的问题,但没有找到答案。
 
我的图纸中有数百条多段线,代表钢筋。。。我想使用数据提取来获取这些多段线的长度,对其进行一些简单的算术运算,并将这些信息导出到表格或excel电子表格中,以便显示切割长度、延伸率等。。。我遇到的问题是,我无法识别哪些多段线是哪些。我需要一种命名多段线的方法(即Tendon_1、Tendon_2等)因此,多段线的长度对我很有用。长度通常是许多不同的值。查看多段线的数据提取集,我可以使用几个类别,例如注释、主题、标题。。。虽然我不知道如何将此属性指定给特定的多段线。
 
所以我猜我需要一个lisp例程来用某种标记标记多段线???有人有什么想法吗?
 
非常感谢你。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 17:54:24 | 显示全部楼层
试试下面我编的两个口吃
请随意将两者都换成你的西装
 
  1. ;; AXD.lsp
  2. ;; set xdata
  3. (vl-load-com)
  4. (defun C:AXD (/ acapp adoc appname counter obj ss xtype xvalue)
  5. (setq acapp    (vlax-get-acad-object)
  6.              adoc     (vla-get-activedocument acapp)
  7. )
  8. ;; define application name
  9. (setq appname "STEEL_ENFORCE")
  10. ;; register application, if this registered earlier,
  11. ;; just ignore it
  12. (vl-catch-all-apply
  13.    (function (lambda()
  14.         (regapp appname)))
  15. (alert (strcat "Select steel enforcement,\n
  16. then enter data for them,\n
  17. then repeat the same for next one"))
  18. ;;
  19. (setq counter 1)
  20. (while ; loop
  21.    (setq ss (ssget "_+.:S:E" (list (cons 0 "*POLYLINE");|(cons 8 "M-STEEL-DETAIL")|));<==change layer name if you need it
  22.      (progn
  23.        (setq obj (vlax-ename->vla-object (ssname ss 0))
  24.              xtype    (list 1001;|appname|;
  25.                      1000;|Tendon#|;
  26.                      1041;|length|;
  27.                      1041;|elongation|;
  28.                      1040;|diameter|;
  29.                      1000;|subject|;
  30.                      1000;|comments|;
  31.                      1000;|title|;
  32.                      )
  33.       )
  34.             (setq xvalue   (list appname
  35.                   (strcat "Tendon_" (itoa counter))
  36.            (vlax-curve-getdistatparam obj (vlax-curve-getendparam obj))
  37.            (getreal (strcat "\nEnter elongation for Tendon#"  (itoa counter) ": "))
  38.            (getreal "\nEnter diameter: ")                  
  39.                   (getstring T "\nEnter subject description (less than 256 characters!): ")
  40.            (getstring T "\nEnter comments (less than 256 characters!) : ")
  41.            (getstring T "\nEnter title : ")
  42.   
  43.                  )
  44.        )
  45.        (vlax-invoke
  46.          obj
  47.          'SetXdata
  48.          xType
  49.          xvalue
  50.        )
  51. (setq counter (1+ counter))
  52. (setq xvalue nil)
  53. )
  54.    )
  55. )
  56. (princ)
  57. )
  58. (princ "\nType AXD to add xdata")
  59. (princ)

 
  1. ;; XDT.lsp
  2. ;; read xdata and write it in .CSV file (comma separated)
  3. (vl-load-com)
  4. (defun C:XDT  (/ appname data en fdesc fn obj ss xdv)
  5. (setq appname "STEEL_ENFORCE")
  6. (setq fn (strcat (getvar "dwgprefix") (vl-filename-base (getvar "dwgname")) ".csv"))
  7. (if (not (findfile fn))
  8. (setq fdesc (open fn "w"))
  9. (setq fdesc (open fn "a"))
  10. )
  11. (setvar "cmdecho" 0)
  12. (write-line "Name,Length,Elongation,Diameter,Subject,Description,Comments,Title" fdesc)
  13. (setq ss (ssget "_X" (list (list -3 (list appname)))))
  14. (while (setq en (ssname ss 0))
  15.    (setq obj (vlax-ename->vla-object (ssname ss 0)))
  16.    (vla-getXdata
  17.      obj
  18.      appname
  19.      'xtp
  20.      'xdv
  21.      )
  22.    (setq data
  23.    (cdr (mapcar 'vlax-variant-value
  24.            (vlax-safearray->list xdv)
  25.            )
  26.         )
  27.   )
  28.    (ssdel en ss)
  29.    (write-line (strcat (car data) ","
  30.                 (rtos (cadr data) 2 2) ","
  31.                 (rtos (caddr data) 2 2) ","
  32.                 (rtos (cadddr data) 2 2) ","
  33.                 (nth 4 data) ","
  34.                 (nth 5 data) ","
  35.                 (nth 6 data))
  36.                 fdesc)
  37.    )
  38. (close fdesc)
  39. (setvar "cmdecho" 1)
  40. (princ)
  41. )
  42. (princ "\nType XDT to write xdata to file")
  43. (princ)

 
~'J'~
回复

使用道具 举报

4

主题

10

帖子

6

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 18:04:32 | 显示全部楼层
非常感谢菲索。我以前从未使用过扩展数据,学习它对我来说是件好事。
 
再次感谢你。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 18:25:04 | 显示全部楼层
不客气
快乐计算
 
~'J'~
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 16:51 , Processed in 1.673161 second(s), 60 queries .

© 2020-2025 乐筑天下

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