找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 576|回复: 2

[求助] [求助]:请高手帮忙修改这个程序

[复制链接]
发表于 2005-3-26 16:05:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
从网上下载的曲线等分相连程序很好用,如上图所示,因我不会编程,恳求高手能否将程序修改成如下图所示增加一斜线连接,我不懂编程见笑了,如不行就增加一个补上斜线的程序也可以的,先谢谢了,原程序如下:

;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)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-3-26 16:53:58 | 显示全部楼层
程序里的东西我基本上没有用过,但照猫画虎,将原作者的东西试着改了几次,应该能达到楼主的要求了!



  1. (defun c:rul (
  2. ;;;              /        msp el1        el2 e1 e2 n m d1 d2 sd1        sd2 key        m
  3.               )
  4.   (vl-load-com)
  5.   (vl-cmdf ".undo" "be")
  6.   (setq        msp (vla-get-modelspace
  7.               (vla-get-activedocument
  8.                 (vlax-get-acad-object)
  9.               )
  10.             )
  11.         el1 (entsel "\n第一条曲线:")
  12.         el2 (entsel "\n第二条曲线:")
  13.         e1  (vlax-ename->vla-object
  14.               (car el1)
  15.             )
  16.         e2  (vlax-ename->vla-object
  17.               (car el2)
  18.             )
  19.         n   (getint "\n等分数:")
  20.         m   n
  21.         d1  (vlax-curve-getDistAtparam
  22.               e1
  23.               (vlax-curve-getendparam e1)
  24.             )
  25.         d2  (vlax-curve-getDistAtparam
  26.               e2
  27.               (vlax-curve-getendparam e2)
  28.             )
  29.         sd1 (vlax-curve-getDistAtpoint
  30.               e1
  31.               (vlax-curve-getClosestPointTo
  32.                 e1
  33.                 (cadr el1)
  34.               )
  35.             )
  36.         sd2 (vlax-curve-getDistAtpoint
  37.               e2
  38.               (vlax-curve-getClosestPointTo
  39.                 e2
  40.                 (cadr el2)
  41.               )
  42.             )
  43.         key (if        (or (and (< (/ sd1 d1) 0.5)
  44.                          (< (/ sd2 d2) 0.5)
  45.                     )
  46.                     (and (> (/ sd1 d1) 0.5)
  47.                          (> (/ sd2 d2) 0.5)
  48.                     )
  49.                 )
  50.               T
  51.               nil
  52.             )
  53.   )
  54.   (repeat (1+ n)
  55.     (vla-addline
  56.       msp
  57.       (vlax-3d-point
  58.         (vlax-curve-getPointAtDist
  59.           e1
  60.           (* (/ d1 n) m)
  61.         )
  62.       )
  63.       (vlax-3d-point
  64.         (vlax-curve-getPointAtDist
  65.           e2
  66.           (* (/ d2 n)
  67.              (if key
  68.                m
  69.                (- n m)
  70.              )
  71.           )
  72.         )
  73.       )
  74.     )
  75.     (setq m (1- m))
  76.   )
  77.   (setq m n )
  78.   (repeat n
  79.     (vla-addline
  80.       msp
  81.       (vlax-3d-point
  82.         (vlax-curve-getPointAtDist
  83.           e1
  84.           (* (/ d1 n) m)
  85.         )
  86.       )
  87.       (vlax-3d-point
  88.         (vlax-curve-getPointAtDist
  89.           e2
  90.           (* (/ d2 n)
  91.              (if key
  92.                (1- m)
  93.                (1+ (- n m ))
  94.              )
  95.           )
  96.         )
  97.       )
  98.     )
  99.     (setq m (1- m))
  100.   )
  101.   (vl-cmdf ".undo" "e")
  102.   (princ)
  103. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-26 18:48:19 | 显示全部楼层
太谢谢david96007 您了,我就是要这个效果程序,再次感谢您的热心!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 00:37 , Processed in 0.182469 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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