shiyan001 发表于 2013-5-4 17:31:10

如何按多段线上的任意点为准定距等分

MEASURE命令只能按端点进行定距等分,如何用lisp实现指定多段线上的任意一点(不一定是顶点),以这个点为等分的起点,将多段线定距等分。求高人指点。

x_s_s_1 发表于 2013-5-6 10:18:52

要插块什么的自己改(vl-load-com)
;;;by x_s_s_1@163.com
(defun c:test1 (/ old_os en pts pt dis pts-start pt-start n)
(setq old_os (getvar "osmode"))
(setq en (car (entsel "\n选择需等分线:")))
(setvar "osmode" 15359)
(setq pts (getpoint "\n选择等分起始点:"))
(setvar "osmode" 512)
(setq pt (getpoint "\n选择等分方向:"))
(setq dis (getreal "\n输入等分距离:"))
(setq pts-start (vlax-curve-getDistAtPoint en pts))
(setq pt-start (vlax-curve-getDistAtPoint en pt))
(setq n 1)
(if (> pt-start pts-start)
    (while (setq pt (vlax-curve-getPointAtDist en (+ pts-start (* n dis))))
      (entmake (list '(0 . "point") (cons 10 pt)))
      (setq n (1+ n))
    )
    (while (setq pt (vlax-curve-getPointAtDist en (- pts-start (* n dis))))
      (entmake (list '(0 . "point") (cons 10 pt)))
      (setq n (1+ n))
    )
)
(setvar "pdmode" 3)
(setvar "osmode" old_os)
(princ)
)

Johnspring 发表于 2024-6-10 10:30:15

x_s_s_1 发表于 2013-5-6 10:18
要插块什么的自己改

厉害 正式需要的 感谢

技术工作室 发表于 2022-9-24 21:41:04

学习了顶一个

shiyan001 发表于 2013-5-4 17:45:57

补充:目的是取等分点。

Gu_xl 发表于 2013-5-4 19:19:05

shiyan001 发表于 2013-5-4 17:45 static/image/common/back.gif
补充:目的是取等分点。

使用 Vlax-curve-getpointatdist 等vlax-curve-族函数即可!相关代码论坛里找找,好多的!

alin 发表于 2013-5-6 09:17:35

先把多段线打断不就行了。

shiyan001 发表于 2013-5-7 10:59:58

谢谢各位,已经解决。

yzf710905 发表于 2014-4-17 13:24:21

shiyan001 发表于 2013-5-7 10:59 static/image/common/back.gif
谢谢各位,已经解决。

能导出等分点坐标到excel就更完美了

yzf710905 发表于 2014-4-17 13:25:02

x_s_s_1 发表于 2013-5-6 10:18 static/image/common/back.gif
要插块什么的自己改

能导出等分点坐标到excel就更完美了

yzf710905 发表于 2014-4-17 13:27:30

x_s_s_1 发表于 2013-5-6 10:18 static/image/common/back.gif
要插块什么的自己改

能导出等分点坐标到excel就更完美了,设定0不导出,1导出为txt,2为excel

yzf710905 发表于 2014-4-17 13:30:27

x_s_s_1 发表于 2013-5-6 10:18 static/image/common/back.gif
要插块什么的自己改

能导出定距等分、定数等分点坐标到excel就更完美了,设定0不导出,1导出为txt,2为excel
改写后,能传个在邮箱;13883235807@qq.com吗。
页: [1] 2
查看完整版本: 如何按多段线上的任意点为准定距等分