999999 发表于 2022-4-6 22:16:27

(求助)请教一下各位大神<两曲线平行等分>能否可以实现

1.选择需要均分的线(均分的线为当前图层)2.请输入均分的数量


各位路过的大神,有空的话,看看是否可以帮小弟实现这个功能



guohq 发表于 2022-4-6 22:16:28


(defun c:T0406( / COUNT NUM S1 S2 OS1 OS2 Len1 Len2 PTS1PTS2 I J P1 P2 REV)
;使用步骤:
;1.选择曲线1
;2.选择曲线2
;3.输入曲线1 与 曲线2之间的内插根数
;4.如果曲线1 与 曲线2的起点不在一起,提示是否反向时输入 y或Y ,否则输入N或n!!!
;注1:此工具对拆线支持的不太友好
;注2:为方便,此工具对不做过多的类型判断,使用时需要按提示输入

(setvar "osmode" 0)
(setq COUNT 100);等分数 如果觉得画得不够细腻,此值设大一点
(setq S1 (car (entsel "\n选择曲线1:")))
(setq S2 (car (entsel "\n选择曲线2:")))
(setq NUM (getint "\n输入插入根数"))
(setq REV (getstring "\n是否反向某一根线(Y/N):"))
(setq OS1 (vlax-ename->vla-object S1))
(setq OS2 (vlax-ename->vla-object S2))
(setq Len1 (/ (vlax-curve-getDistAtParam OS1 (vlax-curve-getEndParam OS1)) COUNT)) ;获取线1的每份长度
(setq Len2 (/ (vlax-curve-getDistAtParam OS2 (vlax-curve-getEndParam OS2)) COUNT)) ;获取线2的每份长度
(setq Index 1)
(setq PTS1 (list (vlax-curve-getStartPoint OS1)))
(setq PTS2 (list (vlax-curve-getStartPoint OS2)))
(while (< Index COUNT)
    (setq PTS1 (append PTS1 (list (vlax-curve-getPointAtDist OS1 (* Index Len1)))))
    (setq PTS2 (append PTS2 (list (vlax-curve-getPointAtDist OS2 (* Index Len2)))))
    (setq Index (1+ Index))
    )
(setq PTS1 (append PTS1 (list (vlax-curve-getEndPoint OS1))))
(setq PTS2 (append PTS2 (list (vlax-curve-getEndPoint OS2))))
(if (= "Y" (strcase REV))
    (setq PTS2 (reverse PTS2))
    )
(setq I 1NUM(1+ NUM) COUNT (length PTS1))
(while (< I NUM)
    (setq J 0)
    (command "SPLINE")
    (while (< J COUNT)
      (setq P1 (nth J PTS1) P2 (nth J PTS2))
      (command (polar P1 (angle P1 P2) (/ (* (distance P1 P2) I) NUM)))
      (setq J (1+ J))
      )
    (command "")(command "")(command "")   
    (setq I (1+ I))
    )
)




bssurvey 发表于 2022-4-7 08:02:13

感謝guohq分享

bai2000 发表于 2022-4-7 08:56:08

真的,对折线支持不好,有弯曲,希望能改进

999999 发表于 2022-4-7 09:25:13

guohq 发表于 2022-4-6 23:43


谢谢大神出手,非常好用呢,一开始我理解错了反向某根线是什么意思,然后就失败了,后来换一下,就可以用了,谢谢大神

liufii 发表于 2022-4-7 09:40:59

本帖最后由 liufii 于 2022-4-7 09:43 编辑

guohq 发表于 2022-4-6 22:16

多谢分享,这个比之前用的两个要简洁一些,请问连接线能改成多段线连接吗?好了,把SPLINE改成PLINE就可以了。
页: [1]
查看完整版本: (求助)请教一下各位大神<两曲线平行等分>能否可以实现