找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4675|回复: 10

[已解决] 求标注曲线(主要是多段线)两点之间的线长的插件

[复制链接]
发表于 2014-3-7 22:39:52 | 显示全部楼层 |阅读模式
悬赏100D豆已解决
本帖最后由 清风明月10 于 2014-3-7 22:42 编辑

我想求一个标注多段线两点之间的长度的插件,这个多段线可以有直线,也可以弧线。当然也可以是针对所有曲线的插件。
我主要是碰到一个问题,例如读匝道的里程时,由于匝道的弯曲半径很小,所以读它的里程如果直接用垂直距离,误差会很大,如果是用两点间多段线的长度,则是从理论上来说,一点误差也没有的

最佳答案

查看完整内容

搞不清你要标哪
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-3-7 22:39:53 | 显示全部楼层
清风明月10 发表于 2014-3-8 08:29
这就是示例。如果直接量垂直线距离,则是极不准确的。非得计算两点之间的多段线长并标出来才是准确的。
...

搞不清你要标哪
  1. (defun c:tt (/ e p1 p2 dis dim)
  2.   (if (setq e (car (xdrx_entsel
  3.                      "\nPick Curve: "
  4.                      '((0 . "*line,arc,circle,ellipse"))
  5.                    )
  6.               )
  7.       )
  8.     (while (and        (setq p1 (getpoint "\nFirst Point On Curve: "))
  9.                 (XD::Doc:DrawCrossHair
  10.                   (setq p1 (xdrx_curve_getclosestpoint e p1))
  11.                   (/ pi 4)
  12.                   0.1
  13.                 )
  14.                 (setq p2 (getpoint p1 "\nSecond Point On Curve: "))
  15.            )
  16.       (setq
  17.         dis (rtos (abs (xdrx_curve_getdistatpoint
  18.                          e
  19.                          p1
  20.                          (setq p2 (xdrx_curve_getclosestpoint e p2))
  21.                        )
  22.                   )
  23.                   2
  24.                   3
  25.             )
  26.       )
  27.       (setq dim        (xdrx_dimension_makerotate
  28.                   p1
  29.                   p2
  30.                   (polar (xdrx_line_midp p1 p2)
  31.                          (+ (angle p1 p2) (/ pi 2))
  32.                          (* 3. (getvar "dimscale") (getvar "dimtxt"))
  33.                   )
  34.                   (angle p1 p2)
  35.                 )
  36.       )
  37.       (xdrx_setpropertyvalue dim "DimText" dis)
  38.     )
  39.   )
  40.   (princ)
  41. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-3-7 23:10:00 来自手机 | 显示全部楼层
附图上来  

点评

请问老师,我想改造一下,将标注炸开,直到标注里面的文字为单行文字,电脑怎么总提示列表有缺陷啊?请教应该如何改造? (defun c:tt (/ e p1 p2 dis dim) ; 来源:2楼 晓东CAD家园-论坛-技术问答【悬赏求助】-  详情 回复 发表于 2014-3-8 09:37
这就是示例。如果直接量垂直线距离,则是极不准确的。非得计算两点之间的多段线长并标出来才是准确的。  详情 回复 发表于 2014-3-8 08:29
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2014-3-8 08:29:54 | 显示全部楼层

这就是示例。如果直接量垂直线距离,则是极不准确的。非得计算两点之间的多段线长并标出来才是准确的。
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:福永互通匝道路基平面图四月读A、C匝道里程偏移.rar 
下载次数:13  文件大小:728.3 KB 
下载权限: 不限 以上  [免费赚D豆]





论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2014-3-8 09:13:15 | 显示全部楼层
谢谢你!我试了,能够得到正确的长度!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2014-3-8 09:37:55 | 显示全部楼层

请问老师,我想改造一下,将标注炸开,直到标注里面的文字为单行文字,电脑怎么总提示列表有缺陷啊?请教应该如何改造?
(defun c:tt (/ e p1 p2 dis dim)
  ; 来源:2楼 晓东CAD家园-论坛-技术问答【悬赏求助】-求标注曲线(主要是多段线)两点之间的线长的插件 - Powered by Discuz!
; http://www.xdcad.net/forum/forum ... read&tid=672847
  (if (setq e (car (xdrx_entsel
                     "\nPick Curve: "
                     '((0 . "*line,arc,circle,ellipse"))
                   )
              )
      )
    (while (and        (setq p1 (getpoint "\nFirst Point On Curve: "))
                (XD::Doc:DrawCrossHair
                  (setq p1 (xdrx_curve_getclosestpoint e p1))
                  (/ pi 4)
                  0.1
                )
                (setq p2 (getpoint p1 "\nSecond Point On Curve: "))
           )
      (setq
        dis (rtos (abs (xdrx_curve_getdistatpoint
                         e
                         p1
                         (setq p2 (xdrx_curve_getclosestpoint e p2))
                       )
                  )
                  2
                  3
            )
      )
      (setq dim        (xdrx_dimension_makerotate
                  p1
                  p2
                  (polar (xdrx_line_midp p1 p2)
                         (+ (angle p1 p2) (/ pi 2))
                         (* 3. (getvar "dimscale") (getvar "dimtxt"))
                  )
                  (angle p1 p2)
                )
      )
      (xdrx_setpropertyvalue dim "DimText" dis)
          
          (command ".EXPLODE" (entlast) "" )
         ( progn
          (setq A 0)
  (setq ss (ssget "P"))
  (SETQ A (SSLENGTH SS))   
(SETQ 第几个 0)
(while (< 第几个 a)
(setq 图元名 (ssname SS 第几个))
(command ".explode" 图元名 "")     
(setq 第几个 (+ 第几个 1))
)
);progn结束
          
    )
  )
  (princ)
)

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-3-8 10:02:06 | 显示全部楼层
本帖最后由 st788796 于 2014-3-8 10:04 编辑

(setq ss (xdrx_entity_explode t dim t))
(mapcar '(lambd (x) (if (wcmatch (xdrx_getpropertyvalue x "IsA") "*Text") (xdrx_entity_explode t t x nil))) (xdrx_pickset->ents ss))

点评

谢谢  发表于 2014-3-8 10:13
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2014-6-29 08:33:11 | 显示全部楼层
老师:我复制代码保存为类lsp文件后,在2011cad里加载这个程序后标注不了,是怎么回事?求指点!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 18:07 , Processed in 0.377455 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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