明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1391|回复: 9

怎样实现这个曲线

[复制链接]
发表于 2005-4-8 14:33:00 | 显示全部楼层 |阅读模式
图中的基线是已知的,现在知道每间隔一定距离后基线和产生线的距离,怎样自动生成这条产生线

本帖子中包含更多资源

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

x
发表于 2005-4-11 17:33:00 | 显示全部楼层
Sorry!这条线....?       

本帖子中包含更多资源

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

x
发表于 2005-4-11 18:38:00 | 显示全部楼层
看不懂
发表于 2005-4-12 08:40:00 | 显示全部楼层
  1. ;;图中的基线是已知的(但请先连接起来)
  2. ;;现在知道每间隔一定距离后基线和產生线的距离,怎样自动生成这条產生线
  3. ;;BY 龙龙仔(LUCAS)
  4. (defun C:PER_CUR (/       ANG         ANG1         D1             E1             E2
  5.        EE1       EE1PT       EE2           EE2PT       HOLDECHO HOLDEDGE
  6.        HOLDOSMODE         HOLDPROJ N             PT
  7.      )
  8.    (vl-load-com)   ;; Tony Tanzillo.
  9.    ;; (vector-side (origin) (direction) (point))
  10.    ;; Returns an integer code indicating position of (point)
  11.    ;; in relation to the directed vector whose endpoints are
  12.    ;; <origin> and <direction>.
  13.    ;;     Result   Meaning
  14.    ;;       -1         Point is to the right of vector.
  15.    ;;         0         Point is on (colinear with) vector
  16.    ;;         1         Point is to the left of vector.
  17.    ;; usage : (vector-side (getpoint) (getpoint) (getpoint))   (defun VECTOR-SIDE (V1 V2 P / R)
  18.        (setq R (- (* (- (car V2) (car V1)) (- (cadr P) (cadr V1)))
  19.                (* (- (cadr V2) (cadr V1)) (- (car P) (car V1)))
  20.          )
  21.        )
  22.        (cond ((equal R 0.0 1e-8) 0)
  23.      (t (fix (/ (abs R) R)))
  24.        )
  25.    )   (setq HOLDECHO (getvar "CMDECHO"))
  26.    (setvar "CMDECHO" 0)
  27.    (command "_.UNDO" "GROUP")
  28.    (setq HOLDOSMODE (getvar "OSMODE"))
  29.    (setvar "OSMODE" 0)
  30.    (setq HOLDEDGE (getvar "EDGEMODE"))
  31.    (setvar "edgemode" 0)
  32.    (setq HOLDPROJ (getvar "PROJMODE"))
  33.    (setvar "projmode" 0)
  34.    (setq  E1       (vlax-ename->vla-object
  35.     (car (setq EE1 (entsel "\n选基线:")))
  36.              )
  37.   E2       (vlax-ename->vla-object
  38.     (car (setq EE2 (entsel "\n选產生线:")))
  39.              )
  40.   EE1PT (vlax-curve-getstartpoint E1)
  41.   EE2PT (osnap (cadr EE2) "NEA")
  42.              ;|
  43.   N         (getint "\n等分数: ")
  44.   D1       (/ (vlax-curve-getdistatparam E1 (vlax-curve-getendparam E1))
  45.      N
  46.              )|;
  47.   D1       (getdist EE1PT "\n等距偏移: ")
  48.   N         (fix
  49.     (/ (vlax-curve-getdistatparam E1 (vlax-curve-getendparam E1))
  50.          D1
  51.     )
  52.              )
  53.    )
  54.    (setq  ANG (angle '(0 0 0)
  55.          (vlax-curve-getfirstderiv
  56.              E1
  57.              (vlax-curve-getparamatpoint E1 EE1PT)
  58.          )
  59.          )
  60.    )
  61.    (if (= (VECTOR-SIDE EE1PT (polar EE1PT ANG 0.1) EE2PT) 1)
  62.        (setq ANG1 (* 0.5 pi))
  63.        (setq ANG1 (* 1.5 pi))
  64.    )
  65.    (while (not (minusp N))
  66.        (setq ANG (angle '(0 0 0)
  67.              (vlax-curve-getfirstderiv
  68.                  E1
  69.                  (vlax-curve-getparamatdist E1 (* D1 N))
  70.              )
  71.              )
  72.        )
  73.        (command "_.LINE"
  74.            (setq PT (vlax-curve-getpointatdist E1 (* D1 N)))
  75.            (setq PT (polar PT (+ ANG ANG1) 0.1))
  76.            ""
  77.        )
  78.        (command "_.EXTEND" EE2 "" (list (entlast) PT) "")
  79.        (setq N (- N 1))
  80.    )
  81.    (setvar "projmode" HOLDPROJ)
  82.    (setvar "edgemode" HOLDEDGE)
  83.    (setvar "OSMODE" HOLDOSMODE)
  84.    (command "_.UNDO" "END")
  85.    (setvar "CMDECHO" HOLDECHO)
  86.    (princ)
  87. )
 楼主| 发表于 2005-4-19 09:31:00 | 显示全部楼层
to:龙龙仔 你的程序很好用,但是能让生成的线是长短相间的吗,短线长度是相邻两长线的平均值
 楼主| 发表于 2005-4-25 15:58:00 | 显示全部楼层
龙哥


再帮个忙了
发表于 2005-4-26 07:59:00 | 显示全部楼层
短线长度是相邻两长线的平均值??---那就差不多一样长了!


=&gt;看不懂!(贴图说明吧!)
 楼主| 发表于 2005-4-27 16:16:00 | 显示全部楼层
,龙哥,不好意思,上次说错了,我在图中又说明了一次,是相临两长线平均值的一半

本帖子中包含更多资源

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

x
发表于 2005-4-27 17:28:00 | 显示全部楼层
  1. ......(while (not (minusp N))
  2.        (setq ANG (angle '(0 0 0)
  3.              (vlax-curve-getfirstderiv
  4.                  E1
  5.                  (vlax-curve-getparamatdist E1 (* D1 N))
  6.              )
  7.              )
  8.        )
  9.        (command "_.LINE"
  10.            (setq PT (vlax-curve-getpointatdist E1 (* D1 N)))
  11.            (setq PT (polar PT (+ ANG ANG1) 0.1))
  12.            ""
  13.        )
  14.        (command "_.EXTEND" EE2 "" (list (entlast) PT) "")
  15.        ;;----------------------------------增加
  16.        (if  (= 1 (rem N 2))
  17.            (command "_.lengthen"
  18.                "p"
  19.                50
  20.                (list (entlast) (vlax-curve-getendpoint (entlast)))
  21.                ""
  22.            )
  23.        )
  24.        ;;----------------------------------
  25.        (setq N (- N 1))
  26.    ).......
 楼主| 发表于 2005-4-28 09:04:00 | 显示全部楼层
高手就是高手,十分感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 06:31 , Processed in 0.178510 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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