明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1527|回复: 6

[求助]解决圆渐变阵列的问题

[复制链接]
发表于 2008-4-2 19:41 | 显示全部楼层 |阅读模式

想做个渐变圆阵列的lisp,但是老是出现问题,请高手看看

(defun c:CircleArr()

 (setq Ychange 0)
 (setq CP '(0 0 0))
 (setq Yleth 0)
(while (<= Ychange 8)
  (setq ridus (getpoint "\n请输入圆的半径")
space (getpoint "\n请输入偏移距离")
Times 0
reduce (getpoint "\n请输入递减半径")
X_Cood 0

  )
(setq Yleth (+ Yleth space))


  ( while (<= Times 0)
     (setq X_Cood (+ X_Cood space))
     (setq CP (list X_Cood Yleth 0))
     (setq ridus (- ridus reduce))
     (command "circle" CP ridus)
     (setq Times (+ Times 1))
)
(setq Ychange (+ Ychange 1))
)
)

发表于 2008-4-2 23:34 | 显示全部楼层
将getpoint改成getdist就可以了。
 楼主| 发表于 2008-4-3 09:11 | 显示全部楼层

拜谢版主了

 楼主| 发表于 2008-4-3 09:25 | 显示全部楼层

还有个问题,照这个编写了之后,每输入一个圆都是要输入一个数据。有没有什么办法在之前输入好起始圆的大小,改变距离,和递减半径,递减数量后就可以一次成形了。

(defun c:CircleArr()

 (setq Ychange 0)
 (setq CP '(0 0 0))
 (setq Yleth 0)
(while (<= Ychange 1000)
  (setq ridus (getdist "\n请输入圆的半径")
space (getdist "\n请输入偏移距离")
Times 0
reduce (getdist "\n请输入递减半径")
X_Cood 0

  )
(setq Yleth (+ Yleth space))


  ( while (<= Times 0)
     (setq X_Cood (+ X_Cood space))
     (setq CP (list X_Cood Yleth 0))
     (setq ridus (- ridus reduce))
     (command "circle" CP ridus)
     (setq Times (+ Times 1))
)
(setq Ychange (+ Ychange 1))
)
)

 楼主| 发表于 2008-4-3 15:52 | 显示全部楼层
如何加多一行让距离也可以递增
发表于 2008-4-4 11:16 | 显示全部楼层
这样试试:
  1. (defun c:CircleArr()
  2. (setq Ychange 0)
  3. (setq CP '(0 0 0))
  4. (setq Yleth 0)
  5. (setq ridus (getdist "\n请输入圆的半径 :")
  6.        space (getdist "\n请输入偏移距离 :")
  7.        Times 0
  8.        reduce (getdist "\n请输入递减半径 :")
  9.        X_Cood 0
  10.     n (getint "\n请输入行数 :")
  11.     m (getint "\n请输入列数 :"))
  12. (while (<= Ychange n)
  13.   (setq Yleth (+ Yleth space))
  14.   (while (<= Times m)
  15.    (setq X_Cood (+ X_Cood space))
  16.    (setq CP (list X_Cood Yleth 0))
  17.    (setq ridus (- ridus reduce))
  18.    (command "circle" CP ridus)
  19.    (setq Times (+ Times 1))
  20.   )
  21.   (setq yleth (+ yleth space))
  22.   (setq Ychange (+ Ychange 1))
  23. )
  24. (princ)
  25. )
 楼主| 发表于 2008-4-8 11:26 | 显示全部楼层

现在基本上可以用了,但是有时出来的圆还是有问题,不是每次都成功,不知道什么原因,哪位大侠可以帮忙看看修改一下,还有个问题是这个程序的距离是不可以渐变的,现在想做个渐变的,但是怎么试都不成功,不知道怎么搞

(defun c:2()
    
 (setq Ychange 0)
 (setq CP '(0 0 0))
 (setq Yleth 0)
  (setq ridus (getdist "\n请输入圆的半径")
space (getdist "\n请输入偏移距离")
Times 0
reduce (getdist "\n请输入递增半径")
X_Cood 0
a (getdist "\n请输入偏移个数")
  )
(while (<= Ychange a )
  (setq X_Cood 0)
     (setq CP (list X_Cood Yleth 0))
     (setq ridus (+ ridus reduce))
     (command "circle" CP ridus)
    
   (setq Yleth (+ Yleth space)
)


 
(setq Ychange (+ Ychange 1))
)
)

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

本版积分规则

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

GMT+8, 2024-4-28 07:37 , Processed in 0.257933 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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