品茗新秀 发表于 2014-4-22 14:45:45

求各个多线的总长度,同时减去对应多线上直线的长度

本帖最后由 品茗新秀 于 2014-4-24 11:38 编辑

求各个多线的总长度,同时减去对应多线上直线的长度




q3_2006 发表于 2014-4-22 14:45:46

(defun pts-cen (pts / l)
(setq l (length pts))
(mapcar '(lambda (x) (/ x l)) (apply 'mapcar (cons '+ pts)))
)
(defun gvp (e)
        (vl-remove nil (mapcar '(lambda (x) (if (= (car x) 10) (trans (cdr x) 0 1))) (entget e)))
)
(defun mktext (la str pt th)
(entmakex (list '(0 . "TEXT")
               (cons 8 la)
               (cons 1 str)
               (cons 10 pt)
               (cons 40 th)
               (cons 11 pt)
               (cons 71 0)
               (cons 72 1)
               (cons 73 2)
         )
)
)
(defun MJ:rotate_pnt (pnt p1 ang /)
(polar p1 (+ (angle p1 pnt) ang) (distance p1 pnt))
)
(defun c:tt ( / a e e0 i j l len lene ll pc pts pts sl ss txt)
        (setq ss (ssget '((0 . "LWPOLYLINE"))))
        (repeat (setq i (sslength ss))
                (setq e (ssname ss (setq i (1- i)))
                        lene (Vlax-Get (Vlax-Ename->Vla-Object e) 'Length )
                        pts (gvp e)
                        pc (pts-cen pts)
                        pts (mapcar '(lambda(x) (MJ:rotate_pnt x pc 0.01)) pts)
                        sl (ssget "f" pts '((0 . "line")))
                        l nil
                )
                (if (/= sl nil)
                        (progn
                                (repeat (setq j (sslength sl))
                        (setq e0 (ssname sl (setq j (1- j)))
                                len (Vlax-Get (Vlax-Ename->Vla-Object e0) 'Length )
                                l (cons len l)
                        )
                )
                (setq l (apply '+ l)
                        ll (rtos (- lene l) 2 2)
                        txt (mktext "tmp" (strcat (rtos lene 2 2) "-" (rtos l 2 2) "=" ll) pc (* 1e3 (getvar "dimtxt")))
                )
                        )
                        (mktext "tmp" (rtos lene 2 2) pc (* 1e3 (getvar "dimtxt")))
                )
        )
)

llsheng_73 发表于 2014-4-22 17:15:51

轻轻飘过

tengte 发表于 2014-4-22 17:27:42

本帖最后由 tengte 于 2014-4-22 17:32 编辑

问题和要求未描述清楚!
直线与多段线怎样的位置关系?什么样的需要考虑?都没有说清楚。

tengte 发表于 2014-4-22 18:14:37

直线必须与多段线完全重叠才考虑吗?

xyp1964 发表于 2014-4-22 18:37:26

实在没啥难度,闪过……

品茗新秀 发表于 2014-4-22 20:25:30

xyp1964 发表于 2014-4-22 18:37 static/image/common/back.gif
实在没啥难度,闪过……

没难度,看看高手的杰作,让初学者学习一下

Andyhon 发表于 2014-4-22 21:59:32

就是扣去那4红3蓝后的总长?
选取时可会有其他的背景图元干扰

xyp1964 发表于 2014-4-22 23:22:17

给出算式:

品茗新秀 发表于 2014-4-23 01:04:41

xyp1964 发表于 2014-4-22 23:22 static/image/common/back.gif
给出算式:

给人的感觉是取得多线的长度,取得各多线的顶点,然后排序,再选择得对应的直线,取得直线的长度,然后两数相减,得差值。具体怎样,实在想不起来
页: [1] 2 3
查看完整版本: 求各个多线的总长度,同时减去对应多线上直线的长度