明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2383|回复: 14

[提问] 求一个将多段线等距打断的lisp?或者别的命令

[复制链接]
发表于 2016-3-28 20:28 | 显示全部楼层 |阅读模式
本帖最后由 去去无回 于 2016-3-29 08:38 编辑

请问有没有可以将不等距的多段线按照自己定义的距离打断的lisp,
我之前是把多段线拟合成样条曲线,然后在用常青藤按照一个距离(一般是20m)将样条曲线转换为多段线,但是转化后的多段线与之前的多段线拟合的不是很好,所以想找一个可以将多段线等距离打断的lsp或者别的可以实现的方法。谢谢

本帖子中包含更多资源

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

x
发表于 2019-8-27 15:34 | 显示全部楼层
highflybir 发表于 2016-3-29 22:16
以下是我的理解:

Thank you ^^
发表于 2016-3-28 21:59 | 显示全部楼层
你的要求不是很容易理解,最好能附个图。
 楼主| 发表于 2016-3-29 08:38 | 显示全部楼层
ludaweb 发表于 2016-3-28 21:59
你的要求不是很容易理解,最好能附个图。

好的,谢谢
发表于 2016-3-29 12:49 | 显示全部楼层
发表于 2016-3-29 14:08 | 显示全部楼层
  1. (defun c:tt (/ *error* os cmd e d len pt) (vl-load-com)
  2.   (defun *error* (s)
  3.     (setvar 'osmode os)
  4.     (setvar 'cmdecho cmd)
  5.     (princ s)
  6.   )
  7.   (setq os (getvar 'osmode))
  8.   (setvar 'osmode 0)
  9.   (setq cmd (getvar 'cmdecho))
  10.   (setvar 'cmdecho 0)
  11.   (if (and
  12.         (setq e (car (entsel "\nSelect a Curve:")))
  13.         (setq d (getdist "\nBreak Dist:"))
  14.       )
  15.     (progn
  16.       (command "_zoom" "o" e "")
  17.       (while
  18.         (progn
  19.           (setq        len
  20.                  (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e))
  21.           )
  22.           (< d len)
  23.         )
  24.          (setq pt (trans (vlax-curve-getPointAtDist e d) 0 1))
  25.          (command "_break" (list e pt) "_F" pt "@")
  26.          (setq e (entlast))
  27.       )
  28.       (command "_zoom" "_P")
  29.     )
  30.   )
  31.   (setvar 'osmode os)
  32.   (setvar 'cmdecho cmd)
  33.   (princ)
  34. )
发表于 2016-3-29 16:54 | 显示全部楼层
加载XLRX_API方法:
  1. (defun c:tt1 (/ e d len l pts)
  2.   (if (and
  3.         (setq e (car (entsel "\nSelect a Curve:")))
  4.         (setq d (getdist "\nBreak Dist:"))
  5.       )
  6.     (progn
  7.       (setq len
  8.              (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e))
  9.       )
  10.       (setq l d)
  11.       (while (< l len)
  12.         (setq pts (cons (vlax-curve-getPointAtDist e l) pts)
  13.               l          (+ l d)
  14.         )
  15.       )
  16.       (XLRX-Curve-Split e pts t)
  17.     )
  18.   )
  19.   (princ)
  20. )
 楼主| 发表于 2016-3-29 20:42 | 显示全部楼层
Gu_xl 发表于 2016-3-29 16:54
加载XLRX_API方法:

冒昧的问下,这个怎么使用呢?是复制到txt然后把后缀改为lsp,加载使用么?
 楼主| 发表于 2016-3-29 20:48 | 显示全部楼层
Gu_xl 发表于 2016-3-29 16:54
加载XLRX_API方法:

会用了,谢谢,太给力了
发表于 2016-3-29 22:16 | 显示全部楼层
以下是我的理解:
  1. (defun divide_poly (e d / a l n o p s x)
  2.   ;(setq l (vla-get-length obj))
  3.   (setq l (vlax-curve-getdistatparam e (vlax-curve-getendparam e)))
  4.   (setq o (vlax-ename->vla-object e))
  5.   (setq x 0)
  6.   (setq l (- l 1e-8))
  7.   (while (< x l)
  8.     (setq p (vlax-curve-getpointatdist e x))
  9.     (setq p (trans p 0 e))
  10.     (setq s (cons (car p) s))
  11.     (setq s (cons (cadr p) s))
  12.     (setq x (+ x d))
  13.   )
  14.   (if (not (vlax-curve-isClosed e))
  15.     (setq p (vlax-curve-getendpoint e)
  16.       p (trans p 0 e)
  17.       s (cons (car p) s)
  18.       s (cons (cadr p) s)
  19.     )
  20.   )
  21.   (setq s (reverse s))

  22.   (setq n (cons 0 (1- (length s))))
  23.   (setq a (vlax-make-safearray vlax-vbDouble n))         
  24.   (vlax-make-variant (vlax-safearray-fill a s))
  25.   
  26.   (vla-put-coordinates o a)
  27. )

  28. (defun c:tt(/ d sel i e)
  29.   (initget 7)
  30.   (setq d (getdist "\n等分距离:"))
  31.   (if (setq sel (ssget '((0 . "LWPOLYLINE"))))
  32.     (progn
  33.       (setq i 0)
  34.       (repeat (sslength sel)
  35.     (setq e (ssname sel i))
  36.     (divide_poly e d)
  37.     (setq i (1+ i))
  38.       )
  39.     )
  40.   )
  41. )



本帖子中包含更多资源

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

x
 楼主| 发表于 2016-3-30 08:37 | 显示全部楼层
highflybir 发表于 2016-3-29 22:16
以下是我的理解:

很好,很强大,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 10:57 , Processed in 0.296835 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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