明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3873|回复: 21

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

[复制链接]
发表于 2014-4-22 14:45 | 显示全部楼层 |阅读模式
101明经币
本帖最后由 品茗新秀 于 2014-4-24 11:38 编辑

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




附件: 您需要 登录 才可以下载或查看,没有账号?注册
发表于 2014-4-22 14:45 | 显示全部楼层
  1. (defun pts-cen (pts / l)
  2.   (setq l (length pts))
  3.   (mapcar '(lambda (x) (/ x l)) (apply 'mapcar (cons '+ pts)))
  4. )
  5. (defun gvp (e)
  6.         (vl-remove nil (mapcar '(lambda (x) (if (= (car x) 10) (trans (cdr x) 0 1))) (entget e)))
  7. )
  8. (defun mktext (la str pt th)
  9.   (entmakex (list '(0 . "TEXT")
  10.                  (cons 8 la)
  11.                  (cons 1 str)
  12.                  (cons 10 pt)
  13.                  (cons 40 th)
  14.                  (cons 11 pt)
  15.                  (cons 71 0)
  16.                  (cons 72 1)
  17.                  (cons 73 2)
  18.            )
  19.   )
  20. )
  21. (defun MJ:rotate_pnt (pnt p1 ang /)
  22.   (polar p1 (+ (angle p1 pnt) ang) (distance p1 pnt))
  23. )
  24. (defun c:tt ( / a e e0 i j l len lene ll pc pts pts sl ss txt)
  25.         (setq ss (ssget '((0 . "LWPOLYLINE"))))
  26.         (repeat (setq i (sslength ss))
  27.                 (setq e (ssname ss (setq i (1- i)))
  28.                         lene (Vlax-Get (Vlax-Ename->Vla-Object e) 'Length )
  29.                         pts (gvp e)
  30.                         pc (pts-cen pts)
  31.                         pts (mapcar '(lambda(x) (MJ:rotate_pnt x pc 0.01)) pts)
  32.                         sl (ssget "f" pts '((0 . "line")))
  33.                         l nil
  34.                 )
  35.                 (if (/= sl nil)
  36.                         (progn
  37.                                 (repeat (setq j (sslength sl))
  38.                         (setq e0 (ssname sl (setq j (1- j)))
  39.                                 len (Vlax-Get (Vlax-Ename->Vla-Object e0) 'Length )
  40.                                 l (cons len l)
  41.                         )
  42.                 )
  43.                 (setq l (apply '+ l)
  44.                         ll (rtos (- lene l) 2 2)
  45.                         txt (mktext "tmp" (strcat (rtos lene 2 2) "-" (rtos l 2 2) "=" ll) pc (* 1e3 (getvar "dimtxt")))
  46.                 )
  47.                         )
  48.                         (mktext "tmp" (rtos lene 2 2) pc (* 1e3 (getvar "dimtxt")))
  49.                 )
  50.         )
  51. )
回复

使用道具 举报

发表于 2014-4-22 17:15 | 显示全部楼层
  轻轻飘过
回复

使用道具 举报

发表于 2014-4-22 17:27 | 显示全部楼层
本帖最后由 tengte 于 2014-4-22 17:32 编辑

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

点评

直线在多线上,具体详见测试图  发表于 2014-4-22 18:05

评分

参与人数 1明经币 +1 收起 理由
品茗新秀 + 1

查看全部评分

回复

使用道具 举报

发表于 2014-4-22 18:14 | 显示全部楼层
直线必须与多段线完全重叠才考虑吗?
回复

使用道具 举报

发表于 2014-4-22 18:37 | 显示全部楼层
实在没啥难度,闪过……
回复

使用道具 举报

 楼主| 发表于 2014-4-22 20:25 | 显示全部楼层
xyp1964 发表于 2014-4-22 18:37
实在没啥难度,闪过……

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

使用道具 举报

发表于 2014-4-22 21:59 | 显示全部楼层
就是扣去那4红3蓝后的总长?
选取时可会有其他的背景图元干扰

点评

这个实在是太难了  发表于 2014-4-22 22:22
是的,并且在多线上的红蓝线是直线  发表于 2014-4-22 22:18
回复

使用道具 举报

发表于 2014-4-22 23:22 | 显示全部楼层
给出算式:

本帖子中包含更多资源

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

x

点评

不错,发出来让初学者们学习一下  发表于 2014-4-22 23:32
回复

使用道具 举报

 楼主| 发表于 2014-4-23 01:04 | 显示全部楼层
xyp1964 发表于 2014-4-22 23:22
给出算式:

给人的感觉是取得多线的长度,取得各多线的顶点,然后排序,再选择得对应的直线,取得直线的长度,然后两数相减,得差值。具体怎样,实在想不起来
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-20 06:53 , Processed in 0.334743 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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