明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1656|回复: 2

请高手帮忙修改这个程序

[复制链接]
发表于 2005-3-26 16:08 | 显示全部楼层 |阅读模式
从网上下载的曲线等分相连程序很好用,如上图所示,因我不会编程,恳求高手能否将程序修改成如下图所示增加一斜线连接,我不懂编程见笑了,如不行就增加一个补上斜线的程序也可以的,先谢谢了,原程序如下:

;rul = 画线等分两条曲线 v2
;避开捕捉造成的错误画线.
;支持无关曲线起点终点. 根据点中曲线的位置画线.! 2004.1.7
;

(defun c:rul ( / msp el1 el2 e1 e2 n m d1 d2 sd1 sd2 key m)
(vl-load-com)
(vl-cmdf ".undo" "be")
(setq
msp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
el1 (entsel "\n第一条曲线:")
el2 (entsel "\n第二条曲线:")
e1 (vlax-ename->vla-object (car el1))
e2 (vlax-ename->vla-object (car el2))
n (getint "\n等分数:")
m n
d1 (vlax-curve-getDistAtparam e1 (vlax-curve-getendparam e1))
d2 (vlax-curve-getDistAtparam e2 (vlax-curve-getendparam e2))
sd1 (vlax-curve-getDistAtpoint e1 (vlax-curve-getClosestPointTo e1 (cadr el1)))
sd2 (vlax-curve-getDistAtpoint e2 (vlax-curve-getClosestPointTo e2 (cadr el2)))
key (if (or (and (< (/ sd1 d1) 0.5 ) (< (/ sd2 d2) 0.5))
(and (> (/ sd1 d1) 0.5 ) (> (/ sd2 d2) 0.5)))
T nil)
)
(repeat (1+ n)
(vla-addline msp (vlax-3d-point (vlax-curve-getPointAtDist e1 (* (/ d1 n) m)))
(vlax-3d-point (vlax-curve-getPointAtDist e2 (* (/ d2 n) (if key m (- n m))))))
(setq m (1- m))
)
(vl-cmdf ".undo" "e")
(princ)
)

本帖子中包含更多资源

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

x
发表于 2005-3-26 17:02 | 显示全部楼层
(defun c:rul (/ msp el1 el2 e1 e2 n m d1 d2 sd1 sd2 key m pt1 pt2 ptold)
(vl-load-com)
(vl-cmdf ".undo" "be")
(setq
msp (vla-get-modelspace
(vla-get-activedocument (vlax-get-acad-object))
)
el1 (entsel "\n第一条曲线:")
el2 (entsel "\n第二条曲线:")
e1 (vlax-ename->vla-object (car el1))
e2 (vlax-ename->vla-object (car el2))
n (getint "\n等分数:")
m n
d1 (vlax-curve-getDistAtparam e1 (vlax-curve-getendparam e1))
d2 (vlax-curve-getDistAtparam e2 (vlax-curve-getendparam e2))
sd1 (vlax-curve-getDistAtpoint
e1
(vlax-curve-getClosestPointTo e1 (cadr el1))
)
sd2 (vlax-curve-getDistAtpoint
e2
(vlax-curve-getClosestPointTo e2 (cadr el2))
)
key (if (or (and (< (/ sd1 d1) 0.5) (< (/ sd2 d2) 0.5))
(and (> (/ sd1 d1) 0.5) (> (/ sd2 d2) 0.5))
)
T
nil
)
)
(setq ptOld nil)
(repeat (1+ n)
(setq pt1 (vlax-3d-point
(vlax-curve-getPointAtDist e1 (* (/ d1 n) m))
))
(setq pt2 (vlax-3d-point
(vlax-curve-getPointAtDist
e2
(* (/ d2 n)
(if key m (- n m))
)
)))

(vla-addline msp pt1 pt2)
(if ptOld
(vla-addline msp ptOld pt1)
)
(setq ptOld pt2)
(setq m (1- m))
)
(vl-cmdf ".undo" "e")
(princ)
)
 楼主| 发表于 2005-3-27 10:27 | 显示全部楼层
谢谢管理员,提高了我工作效率,相当好用.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-29 11:43 , Processed in 0.146695 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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