找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1241|回复: 5

[LISP程序]:计算PL线的长度

[复制链接]
发表于 2002-10-14 11:31:36 | 显示全部楼层 |阅读模式

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

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

×
;;;计算PL线的长度
(defun c:ppl ()
(setq dist 0 t-dist 0)
(setq enta(entsel "\nPick a pline:"))
(setq enta(entnext))
(setq ent-list (entget enta))
(while (/=(cdr(assoc 0 ent-list)))
   (setq para (abs(cdr(assoc 42 ent-list))))
   (setq point1 (cdr(assoc 10 ent-list)))
   (setq enta (entnext enta))
   (setq ent-list (entget enta))
      (if (/= (cdr(assoc 0 ent-list))
(progn
        (setq point2 (cdr (assoc 10 entlist)))
        (setq dist(distance point1 point2))
      (if (/= para 0)
(progn (setq para (* 4 (atan para)))
        (setq ang (/ (abs(- para pi)) 2))
        (setq rad (/ dist 2.0 (cos ang))))
        (setq dist (* rad para))
       )
  )
         (setq t-dist (+ t-dist dist))
      )
     )
      )
   (princ "/n 长度= ")
   (princ t-dist)
   (princ "/n")
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-14 11:35:55 | 显示全部楼层

Re: [LISP程序]:计算PL线的长度

最初由 zemehua 发布
[B];;;计算PL线的长度
(defun c:ppl ()
(setq dist 0 t-dist 0)
(setq enta(entsel "\nPick a pline:"))
(setq enta(entnext))
(setq ent-list (entget enta))
(while (/=(cdr(assoc 0 ent-list)))
   (setq pa... [/B]


使用XDRX_API很方便求任意曲线的长度




  1. [FONT=courier new]
  2. 82. xdrx_getarea

  3. 功能:求AutoCAD AcDbCurve(曲线)类的面积和周长(长度)。

  4. 调用格式:(xdrx_getarea <实体图元名>)

  5. 说明:1.<实体图元名>可是AcDbCurve类的:AcDbPolyline(lwpolyline),AcDbArc,AcDbCircle,AcDbEllipse,
  6.                 AcDbSpline
  7.      2.若曲线不封闭,则把开始点和终止点连线求面积,并且返回的是曲线的长度。
  8.      
  9. 返回值:成功返回LISP表(面积 周长),失败返回NIL.            

  10. 示例:求SPLINE的面积和周长
  11.      
  12.      (if (setq en (xdrx_entsel "\n请点取一个Spline实体<退出>:" '((0 . "SPLINE"))))
  13.         (progn
  14.            (setq en (car en))
  15.            (setq info (xdrx_getarea (car en)))
  16.            (prompt (strcat "Spline的面积:" (rtos (car info) 2 2) "周长:" (rtos (cadr info) 2 2)))
  17.         )
  18.      )
  19.            
  20. [/FONT]



  1. [FONT=courier new]
  2. 245. xdrx_curve_getDistAtPoint

  3. 功能:获得曲线上任一点到曲线起点的距离或者曲线上两点间的距离

  4. 调用格式:(xdrx_curve_getDistAtPoint <曲线实体名> <曲线上任一点> [曲线任一点])

  5. 返回值:实数

  6. 说明:若给一点,返回到起点的距离,给两点,返回两点间的距离。[/FONT]
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-11-19 18:22:14 | 显示全部楼层

Re: Re: [LISP程序]:计算PL线的长度

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-19 19:06:21 | 显示全部楼层

Re: Re: Re: [LISP程序]:计算PL线的长度

最初由 fjw_ok 发布
[B][XD可以把这个求曲线上点到起点长度的原码公布一下吗,有点过分! [/B]


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

使用道具 举报

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-19 19:37:22 | 显示全部楼层
最初由 fjw_ok 发布
[B]谢谢晓东:就要解决了! [/B]


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-19 20:43 , Processed in 0.174594 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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