刘大叔 发表于 2023-12-10 13:29:55

按线型统计长度并输出总长度

本帖最后由 刘大叔 于 2023-12-10 22:43 编辑

之前在“源码共享”版块看到的一个帖子,原帖如下:按线型统计长度,求助 - 源码共享 - AutoCAD论坛 - 明经CAD社区 - Powered by Discuz! (mjtd.com)
原帖的问题说是已解决,由“飞雪神光”修改的lsp代码如下:
<blockquote>(defun c:mm4(/ bf-curve-length jg lm-entmake-text n num1 num2 pt ss ss2 ty xx zc)

我只是修改了输出的字体高度和行距,修改后的代码如下:
(defun c:mm4(/ bf-curve-length jg lm-entmake-text n num1 num2 pt ss ss2 ty xx zc)
(defun BF-curve-Length (curve)
                (vlax-curve-getDistAtParam
                        curve
                        (vlax-curve-getEndParam curve)
                )
      )
      (defun lm-entmake-text(tdata / pt wz gd co tc)
                (mapcar'set '(pt wz gd co tc) tdata)
                (or co (setq co 256))
                (or tc (setq tc (getvar "clayer")))
                (entmake(list '(0 . "text")(cons 8 tc)(cons 62 co)'(50 . 0.0) (cons 10 pt)(cons 11 pt)(cons 1 wz)'(7 . "Standard")(cons 40 gd)'(6 . "Continuous")'(41 . 0.8)'(72 . 1)'(210 0.0 0.0 1.0)'(100 . "AcDbText")'(73 . 2)))
                (entlast)
      )
      (setq ss (ssget '((0 . "*LINE,CIRCLE,ARC") (-4 . "<NOT") (6 . "bylayer") (-4 . "NOT>") (-4 . "<NOT") ( 6 . "byblock") (-4 . "NOT>"))))
(setq pt (getpoint "指定统计结果写入位置:"))
(setq num1 (sslength ss) num2 0)
(while (/= num1 num2)
    (setq
                        ty (ssname ss 0)
                        xx (cdr (assoc 6 (entget ty)))
                        ss2 (ssget "p" (list (cons 6 xx)))
                        zc 0
                        n 0
                )
                (repeat (sslength ss2)
                        (setq ty (ssname ss2 n))
                        (setq zc (+ zc (BF-curve-Length ty)))
                        (setq n (+ n 1))
                )
                (setq jg (strcat xx "=" (rtos (/ zc 1000) 2 2) "米"))
                (lm-entmake-text (list pt jg 350));字体高度
                (setq pt (polar pt (* pi 1.5) 500)) ;行距
                (setq num2 (+ num2 (sslength ss2)))
                (command "Select" ss "R" ss2 "")
                (setq ss (ssget "_P"))
      )
)在cad2023中运行,显示“错误,参数太多”。请大神帮助修改代码,谢谢!
如能达成以下要求最好:
输出的时候能否以表格形式呈现,譬如:


希望能有大神解决问题,第一次发悬赏贴,悬赏的明经币不够的话留言哈。
附件如下:





xj6019 发表于 2023-12-10 13:29:56

玩玩看,是这个意思不

刘大叔 发表于 2023-12-10 22:42:05

xj6019 发表于 2023-12-10 14:24
玩玩看,是这个意思不

就是这个!大神果然厉害!已设置最佳答案,感谢!{:1_1:}

龙山居士 发表于 2023-12-28 13:42:12

xj6019 发表于 2023-12-10 13:29
玩玩看,是这个意思不

可以改个按颜色的吗

664571221 发表于 2024-7-18 11:39:36

xj6019 发表于 2023-12-10 13:29
玩玩看,是这个意思不

可以改个按颜色吗

bai2000 发表于 2024-7-19 10:07:30

怎么我用不了,选不上对象

brucecad 发表于 2024-11-3 15:56:58

學習中
還是無法用
感謝你

锋十七 发表于 前天 12:02

学习中感谢感谢~~~~
页: [1]
查看完整版本: 按线型统计长度并输出总长度