找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: fengjianwei

[LISP函数]:怎么获得多义线某分段的长度

[复制链接]
发表于 2006-10-26 18:32:01 | 显示全部楼层
感觉上的确如你所说,一般是用数学方法保险(vlisp程序库里面有函数),在此不多说.
但我也想过,如果 是用在程序里面应该没有问题,(entsel和osnap应该是对应的)如果是用在函数里面,那么就还是用求的办法. :P
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-10-26 22:12:46 | 显示全部楼层
从下面的各位老大们抄袭后就出来了:

  1. (vl-load-com)
  2. (defun subSEG2 (ent pt / cen len lst p1 p2 pam pam1 pam2 r sd)
  3.   (setq        pt   (vlax-curve-getclosestpointto ent pt)
  4.         pam1 (fix (vlax-curve-getparamatpoint ent pt))
  5.         pam2 (1+ pam1)
  6.         p1   (vlax-curve-getpointatparam ent pam1)
  7.         p2   (vlax-curve-getpointatparam ent pam2)
  8.         len  (-        (vlax-curve-getdistatparam ent pam2)
  9.                 (vlax-curve-getdistatparam ent pam1)
  10.              )
  11.         pam  (vlax-curve-getparamatpoint ent pt)
  12.         sd   (vlax-curve-getsecondderiv ent pam)
  13.   )
  14.   (if (equal sd '(0 0 0))
  15.     (list '(0 . "line")
  16.           (cons "stp" p1)
  17.           (cons "enp" p2)
  18.           (cons "len" len)
  19.     )
  20.     (setq cen (mapcar
  21.                 (if (> (vla-getbulge (vlax-ename->vla-object ent) pam1) 0)
  22.                   '+
  23.                   '-
  24.                 )
  25.                 pt
  26.                 sd              )
  27.           r   (distance sd '(0 0 0))
  28.           lst (list '(0 . "arc")
  29.                     (cons "cen" cen)
  30.                     (cons "r" r)
  31.                     (cons "stp" p1)
  32.                     (cons "enp" p2)
  33.                     (cons "len" len)
  34.               )
  35.     )
  36.   )
  37. )
  38. (defun c:tt ()
  39.   (mapcar 'print (apply 'subseg2 (entsel)))
  40.   (princ)
  41. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-10-26 23:24:38 | 显示全部楼层
功能:标注多义线各段线长(包括圆弧)
快捷命令:xcbz
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2006-10-28 08:45:08 | 显示全部楼层
不用那么复杂吧?
[php]
(defun c:test ()
  (setq a (entsel "Pick Polyline:"))
  (setq p (vlax-curve-getclosestpointto (car a)(trans (cadr a) 1 0)))
  (setq n (fix (vlax-curve-getparamatpoint (car a) p)))
  (- (vlax-curve-getDistAtParam (car a)(1+ n))
     (vlax-curve-getDistAtParam (car a) n))
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-10-28 10:16:22 | 显示全部楼层
不用那么复杂???
你再细看看为什么要这么复杂
(cons "cen" cen)
(cons "r" r)
(cons "stp" p1)
(cons "enp" p2)
(cons "len" len)
这不只是求分段长了还有起点终点圆心的信息
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-10-28 15:49:13 | 显示全部楼层
21楼:
"1楼楼主说:[LISP函数]:怎么获得多义线某分段的长度"
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2006-10-31 14:03:24 | 显示全部楼层
试了一下,20楼kohi的很好,如果只求长度足够了.不过写法需改进,那个(car a)出现了4次,要用一个变量储存(car a)的值
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-20 20:00 , Processed in 0.433036 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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