找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2232|回复: 10

[建议]:请晓东做一个XDTB_CurveLength.LSP的flash教学。

[复制链接]
发表于 2002-12-8 15:36:23 | 显示全部楼层 |阅读模式

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

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

×
我在设计中经常要算道路的长度之和,道路可能是用line/pline/spline/arc画的,这个程序很方便,可惜现在还是用起来好象总有问题,得到的数值总和我用list命令算的不一样,上次发了一个贴也没人理,能做一个flash指点一下吗,多谢了!!!下面是你的程序:
;|
   命令:XDTB_CurveLength
   功能:计算曲线(LINE,ARC,ELLIPSE,*POLYLINE,SPLINE,CIRCLE)长度,M可以多选,
   否则计算单个曲线部分长度或总长
|;
(defun c:zc (/ e p1 p2 ss cur_dist)
  (xdrx_sysVar_Push  "osmode")
  (initget "M")
  (setq e (xdrx_entsel "\n请选取计算长度的曲线实体[多选-M]<退出>:"))
  (setq cur_dist 0)
  (cond
    ((= e "M")
      (if (setq ss (ssget '((0 . "*line,circle,arc,ellipse"))))
        (progn
          (xdrx_setsstodb ss 0)
          (while (setq e (xdrx_getentdata 0))
            (setq cur_dist (+ cur_dist (cadr (xdrx_getarea e))))
          )
        )
      )
    )
    ((and e (listp e))
      (setq e (car e))
      (setvar "osmode" 512)
      (if (and
            (setq p1 (getpoint "\n曲线间第一点<结束取总长>:"))
            (setq p2 (getpoint "\n曲线间第二点<结束取总长>:"))
          )
        (progn
          (setq p1 (xdrx_curve_getClosestPoint e p1)
                p2 (xdrx_curve_getClosestPoint e p2)
          )
          (setq cur_dist (abs (xdrx_curve_getdistatpoint e p1 p2)))
        )
        (setq cur_dist (abs (cadr (xdrx_getarea e))))
      )
    )
  )
  (xdrx_sysvar_pop)
  (if (/= cur_dist 0)
    (prompt (strcat "\n曲线长度值: " (rtos cur_dist 2 2)))
  )
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-12-8 16:10:37 | 显示全部楼层

晓东工具箱-曲线-测量长度 教学演示

你在下载下下面的程序,遇到计算不对的图形,请把部分(不对)的曲线做成DWG文件,压缩后传到论坛来吧。

并说下你是怎么操作的。


晓东工具箱-曲线-测量长度 教学演示


下载地址:http://www.xdcad.net/tech/xd_tbox/xdtb_curvelength.swf

<embed src=http://www.xdcad.net/tech/xd_tbox/xdtb_curvelength.swf quality=high width=512 height=482 loop=true type="application/x-shockwave-flash">
</embed>

下面是程序:

  1. [font=courier new]
  2. ;|
  3.    命令:XDTB_CurveLength
  4.    功能:计算曲线(LINE,ARC,ELLIPSE,*POLYLINE,SPLINE,CIRCLE)长度,M可以多选,
  5.    否则计算单个曲线部分长度或总长
  6. |;
  7. (defun c:XDTB_CurveLength (/ e p1 p2 ss cur_dist)
  8.   (xdrx_sysVar_Push "osmode")
  9.   (initget "M")
  10.   (setq e (xdrx_entsel "\n请选取计算长度的曲线实体[多选-M]<退出>:"))
  11.   (setq cur_dist 0)
  12.   (cond
  13.     ((= e "M")
  14.       (if (setq ss (ssget '((0 . "*line,circle,arc,ellipse"))))
  15.         (progn
  16.           (xdrx_setsstodb ss 0)
  17.           (while (setq e (xdrx_getentdata 0))
  18.             (setq cur_dist (+ cur_dist (cadr (xdrx_getarea e))))
  19.           )
  20.         )
  21.       )
  22.     )
  23.     ((and
  24.        e
  25.        (listp e)
  26.      )
  27.       (setq e (car e))
  28.       (setvar "osmode" 512)
  29.       (if (and
  30.             (setq p1 (getpoint "\n曲线间第一点<结束取总长>:"))
  31.             (setq p2 (getpoint p1 "\n曲线间第二点<结束取总长>:"))
  32.           )
  33.         (progn
  34.           (setq p1 (xdrx_curve_getClosestPoint e p1)
  35.                 p2 (xdrx_curve_getClosestPoint e p2)
  36.           )
  37.           (setq cur_dist (abs (xdrx_curve_getdistatpoint e p1 p2)))
  38.         )
  39.         (setq cur_dist (abs (cadr (xdrx_getarea e))))
  40.       )
  41.     )
  42.   )
  43.   (xdrx_sysvar_pop)
  44.   (if (/= cur_dist 0)
  45.     (prompt (strcat "\n曲线长度值: " (rtos cur_dist 2 2)))
  46.   )
  47.   (princ)
  48. )
  49. [/font]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-12-8 21:02:07 | 显示全部楼层
晓东:
我用最简单的一条直线(line)来测,还是不对。
1.dwg在win98、R14中的情况如下:
我先用list命令测量这条直线的长度:
Command: LIST
Select objects: 1 found

Select objects:
                  LINE      Layer: 0
                            Space: Model space
                   Handle = 21
              from point, X= 174.7048  Y=  56.5125  Z=   0.0000
                to point, X= 453.9020  Y= 110.1375  Z=   0.0000
          [U]Length = 284.3004, [/U] Angle in XY Plane =     11
                  Delta X = 279.1972, Delta Y =   53.6250, Delta Z =   0.0000

[U]list命令显示长度为284.3004[/U]

用XDTB_CurveLength程序进行测量:
Command: XDTB_CurveLength

请选取计算长度的曲线实体[多选-M]<退出>:
曲线间第一点<结束取总长>:(此处回车)

曲线长度值: 282.8

[U]长度值和list命令测量的不一样。[/U]


在ACAD2002中的情况:
用list命令显示和R14版本中一样。
用XDTB_CurveLength程序进行测量:
Command: XDTB_CurveLength

请选取计算长度的曲线实体[多选-M]<退出>:
曲线间第一点<结束取总长>:(此处回车)

曲线长度值: 5.90E+99
[U]测量单位变成了“科学”计数方式,[/U]和我list命令显示的不同,而我用units命令设置的是“小数”计数方式。
换一台机器,cad2002版显示的数值和R14一样,都比list命令测量的数值要小。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2002-12-8 21:22:42 | 显示全部楼层
最初由 冰火 发布
[B]晓东:
我用最简单的一条直线(line)来测,还是不对。
1.dwg在win98、R14中的情况如下:
我先用list命令测量这条直线的长度:
Command: LIST
Select objects: 1 found

Select objects:
                  ... [/B]

误差出自

  1. (setq p1 (xdrx_curve_getClosestPoint e p1)
  2.                 p2 (xdrx_curve_getClosestPoint e p2)
  3.           )

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-12-8 21:43:31 | 显示全部楼层
最初由 冰火 发布
[B]晓东:
我用最简单的一条直线(line)来测,还是不对。
1.dwg在win98、R14中的情况如下:
我先用list命令测量这条直线的长度:
Command: LIST
Select objects: 1 found

Select objects:
                  ... [/B]


这是我测试的你上面的图:

你用的工具箱是最新的版本0.26吗? 如果还不对,你到下载中心,下载XDRX_API最新版本,覆盖到SYS目录下同名文件。

  1. <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="650" id="AutoNumber1" height="498">
  2.   <tr>
  3.     <td width="100%" height="489">
  4.       <iframe name="I1" width="100%" height="100%" src="http://www.xdcad.net/down/show.php?id=237">
  5. 浏览器不支持嵌入式框架或配置为不显示嵌入式框架
  6.       </iframe>
  7.     </td>
  8.   </tr>
  9. </table>
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-12-9 19:57:05 | 显示全部楼层
晓东:
我装的是0。26版的晓东工具箱,而且今天我按照重新下载XDRX_API最新版本,覆盖到SYS目录下同名文件了,结果还是不对,数值都没有变。我在单位换了几台计算机,都不行。而且在cad2002版中显示的结果都是“5.90E+99”。这是为什么呢?:(
看来要发动群众,看看别的机器有没有遇到这个情况?否则我不会甘心的,一定要把革命进行到底。:)
另有建议:1、取消捕捉,特别是最近点捕捉,一般绘图我们自己都会设好需要的捕捉,程序里另带好象没有必要。而且最近点捕捉并不能得到一个准确的点,没有什么意义。
          2、这个程序一般情况下应该是用来测多条曲线的汇总,用来测单个实体的情况或两点间的长度会比较少,所以他的缺省状态应该是多选,不应该多敲一个“M”键,少数服从多数嘛。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-12-11 02:43:18 | 显示全部楼层
最初由 冰火 发布
[B]晓东:
我装的是0。26版的晓东工具箱,而且今天我按照重新下载XDRX_API最新版本,覆盖到SYS目录下同名文件了,结果还是不对,数值都没有变。我在单位换了几台计算机,都不行。而且在cad2002版中显示的结果都是“5.9... [/B]


多选默认的问题,因为如果那样,程序没有办法进行关键字判断,SSGET不能使用关键字的。敲下M吧。或者为了这个单独在写个程序,但没有必要吧。

捕捉你可以任意使用自己的定义,加最近点是为了你不用捕捉的情况下,能保证点在曲线上,否则程序就错误了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-12-15 12:50:24 | 显示全部楼层
问题还是没有解决,各位大侠也试一下,看看是不是个别问题,既是为晓东工具箱出一点力,最重要的是让我......不要胡思乱想了! :(
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2009-9-4 10:21:15 | 显示全部楼层
看起来蛮复杂的哦
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-20 12:25 , Processed in 0.207602 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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