找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 847|回复: 0

[每日一码] ldata词典应用

[复制链接]

已领礼包: 201个

财富等级: 日进斗金

发表于 2021-1-29 11:14:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 a117034423 于 2021-2-3 08:34 编辑
  1. (defun c:xbtt ( / ss2)
  2.   (setq ss2 (ssget '(
  3.                      (-4 . "<or")
  4.                      (-4 . "<AND")
  5.                      (0 . "LWPOLYLINE")
  6.                      (8 . "板轮廓线")
  7.                      (-4 . "AND>")
  8.                      (-4 . "or>")
  9.                             )
  10.                    ))
  11.   (xbttt ss2)
  12.   )
  13. (defun xbttt (ss0 / i tt1 form-txt form-pt ty1 n pt1)
  14.   (defun form-txt (pt1 str1 clr /) ;创建文字函数
  15.     (entmake (list
  16.                '(0 . "TEXT")
  17.                '(100 . "AcDbEntity")
  18.                '(8 . "构件信息")
  19.                '(100 . "AcDbText")
  20.                '(7 . "tssd_rein")
  21.                '(41 . 0.7)
  22.                (cons 1 str1)
  23.                (cons 10 pt1)
  24.                (cons 11 pt1)
  25.                (cons 40 80)
  26.                (if clr
  27.                (cons 62 clr)
  28.                (cons 62 256)
  29.                  )
  30.                '(72 . 4)
  31.                ))
  32. )
  33. (defun form-pt (ent1 / ptmin ptmax ptzz mod0 xcc dxy) ;求矩形中心点
  34.   (setq mod0 (vl-remove nil (mapcar  '(lambda (x) (if (= (car x) 10) (cdr x))) (entget ent1)))
  35.         ptmin (apply 'mapcar (cons 'min mod0))
  36.         ptmax (apply 'mapcar (cons 'max mod0))
  37.         dxy  (mapcar '- ptmax ptmin)
  38.         ptzz  (mapcar '+ ptmax ptmin)
  39.         ptzz  (list (* (car ptzz) 0.5) (* (cadr ptzz) 0.5) 0.0)
  40.         xcc (vlax-ldata-get (vlax-ename->vla-object ent1) "XB")
  41.         xcc (subst (cons "长度" (rtos (max (car dxy) (cadr dxy)) 2 0)) (assoc "长度" xcc) xcc)
  42.         xcc (subst (cons "宽度" (rtos (min (car dxy) (cadr dxy)) 2 0)) (assoc "宽度" xcc) xcc)
  43.         xcc (subst (cons "体积" (rtos (* (vlax-curve-getArea (vlax-ename->vla-object ent1)) (cdr (assoc "厚" xcc)) 1e-9) 2 2)) (assoc "体积" xcc) xcc)
  44.         xcc (subst (cons "重量" (rtos (* (atof (cdr (assoc "体积" xcc))) 2.5) 2 2)) (assoc "重量" xcc) xcc)
  45.         xcc (vlax-ldata-put (vlax-ename->vla-object ent1) "XB" xcc))
  46.   ptzz
  47.   )
  48.   (setq i 0)
  49.   (repeat (sslength ss0)
  50.   (setq ty1 (ssname ss0 i)
  51.         pt1 (form-pt ty1)
  52.         tt1 (append (vlax-ldata-get (vlax-ename->vla-object ty1) "NO") (vlax-ldata-get (vlax-ename->vla-object ty1) "XB"))
  53.         n 0
  54.         i (1+ i)
  55.         )
  56.   (repeat (length tt1)
  57.     (form-txt (list (car pt1) (+ (cadr pt1) (* (length tt1) 50)) 0.0) (strcat (car (nth n tt1)) " : " (if (/= (type (cdr (nth n tt1))) (type "str"))
  58.                                                                                         (rtos (cdr (nth n tt1)) 2 0)
  59.                                                                                         (cdr (nth n tt1)))) 256)
  60.     (setq pt1 (list (car pt1) (- (cadr pt1) 100) 0.0)
  61.           n  (1+ n)
  62.           )
  63.         )
  64.     )
  65.   (princ)
  66.   )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 08:25 , Processed in 0.284269 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表