明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2491|回复: 10

求线上2点之间的长度

[复制链接]
发表于 2010-10-24 19:15:00 | 显示全部楼层 |阅读模式

我想做一个lisp程序,用户获取到一条线后,求出线上离起点长度为 1  的地方的点A,再求出线上到点A长度为 2 的点B !

请高手帮帮我!或者告知下求线上2点之间线长度的函数,谢谢了!

发表于 2010-10-24 19:19:00 | 显示全部楼层

distance pt1 pt2

发表于 2010-10-24 20:17:00 | 显示全部楼层

水平有限基本达到要求,但是书写可能不规范

本帖子中包含更多资源

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

x
发表于 2010-10-25 07:04:00 | 显示全部楼层

谢谢楼上

收藏了,下来学习学习

谢谢

 楼主| 发表于 2010-10-25 18:41:00 | 显示全部楼层
谢谢3楼,我要的是在曲线上工作的,你的只能在直线上,曲线上能实现吗?
发表于 2010-10-25 19:26:00 | 显示全部楼层

楼主的想法很好,如果能实现,很有意义.

看来只能打命令(me)的主意,这只是我的一点想法.

发表于 2010-10-26 01:04:00 | 显示全部楼层

如楼上所说,用measure命令,measure命令产生的点是放在上一个选折集里的,可以用(ssget "p")调用,但以我的水平,没办法判断点的位置是离起点最近的(这个和你的几何图形,及点移动的轨迹有关),只好自欺欺人了,估计对您用处不大,我只能做到这个地步了,还盼高人出手吧

本帖子中包含更多资源

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

x
发表于 2010-10-26 01:07:00 | 显示全部楼层
如楼上所说,用measure命令,measure命令产生的点是放在上一个选折集里的,可以用(ssget "p")调用,但以我的水平,没办法判断点的位置是离起点最近的(这个和你的几何图形,及点移动的轨迹有关),只好自欺欺人了,估计对您用处不大,我只能做到这个地步了,还盼高人出手吧

本帖子中包含更多资源

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

x
发表于 2010-10-27 14:40:00 | 显示全部楼层
You have to revise the code a bit to suit your purpose.
  1. ;;; PTDI.lsp
  2. ;;; Mark points on curve based on input distance to start point
  3. ;;; Note: please set point style to be visible.
  4. ;;; By Alvin LIN 27/10/2010
  5. ;;; email: alin2220@gmail.com
  6. ;;;
  7. (DEFUN C:PTDI (/   sel      en  pickpt    closetpt
  8.         endparam   startparam len closetptdist
  9.         LOOP   distfoundpt  refpt    delta
  10.         dist0   *error*    osmode
  11.        )
  12.   (SETQ SEL (ENTSEL "\nSelect a curve: "))
  13.   (setq en     (car sel)
  14. pickpt (cadr sel)
  15.   )
  16.   (defun *error* (msg)
  17.     (setvar "osmode" osmode)
  18.     (princ msg)
  19.     (princ)
  20.   )
  21.   (setq osmode (getvar "OSMODE"))
  22.   (setvar "OSMODE" 0)
  23.   (setq closestpt (vlax-curve-getclosestpointto en pickpt))
  24.   (setq endparam   (vlax-curve-getendparam en)
  25. startparam (vlax-curve-getstartparam en)
  26.   )
  27.   (if (not (setq len (CurveLength en)))
  28.        (alert (strcat "No length property available for "
  29.         (vla-get-objectname (vlax-ename->vla-object))
  30.         "."
  31.      )
  32.    )
  33.   )
  34.   (setq closetptdist (vlax-curve-getdistatpoint en closestpt))
  35.   (setq LOOP t
  36. dist0 0
  37.   )
  38.   (if (null delta)
  39.     (setq delta 500)
  40.   )
  41.   (while LOOP
  42.     (princ "\nInput distance from start point <")
  43.     (princ (rtos (+ dist0 delta) 2 4))
  44.     (setq dist (getreal "> [Enter 0 to exit]: "))
  45.     (if (= DIST 0)
  46.       (setq LOOP nil)
  47.       (progn
  48. (if (= dist nil)
  49.    (setq dist (+ dist0 delta))
  50. )
  51. (if (and (> dist 0) (<= dist len))
  52.    (progn
  53.      (if (< closetptdist (* len 0.5))
  54.        (progn
  55.   (setq foundpt (vlax-curve-getpointatdist en dist))
  56.   (command "point" (trans foundpt 0 1))
  57.        )
  58.        (progn
  59.   (setq
  60.     foundpt (vlax-curve-getpointatdist en (- len dist))
  61.   )
  62.   (command "point" (trans foundpt 0 1))
  63.        )
  64.      ) ;if
  65.      (setq delta (- dist dist0))
  66.      (setq dist0 (+ dist0 delta))
  67.    ) ;progn
  68.    (princ (strcat "\nDistance input must be > 0 and <= "
  69.     (rtos len 2 4)
  70.     "."
  71.    )
  72.    )
  73. )
  74.       ) ;progn
  75.     )
  76.   ) ;while
  77.   (setvar "OSMODE" osmode)
  78.   (princ)
  79. )
  80. (defun CurveLength (obj / rtn endparam)
  81.   (if (not (vl-catch-all-error-p
  82.       (setq endparam
  83.       (vl-catch-all-apply 'vlax-curve-getendparam (list obj))
  84.       )
  85.     )
  86.       )
  87.     (if (setq rtn (vlax-curve-getdistatparam obj endparam))
  88.       rtn
  89.       nil
  90.     )
  91.     nil
  92.   )
  93. )
发表于 2010-10-27 15:27:00 | 显示全部楼层

ALIN 强

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

本版积分规则

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

GMT+8, 2025-5-24 19:40 , Processed in 0.203671 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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