kevinchan 发表于 2004-5-15 23:17:00

如何做中心间距相同大小递增的圆

<BR><FONT face=宋体 size=2>我想在CAD里面画大小递增的圆,应该怎么画?<BR>比如:<BR>我要在同一线段上画最小点是0.1MM,最大点是0.5MM(直径),圆与圆中心间距是0.8MM,画20个,应该怎么操作呢? <BR><BR>我用LISP以下代码做出来的却不行,请老大帮帮忙.<BR>(defun c:dcircle()<BR>(setq 间距(getint"/n请输入间距:"))<BR>(setq 个数(1- (getint"/n请输入排列个数:")))<BR>(setq rr(getreal"/n请输入最小园半径:"))<BR>(setq rrr(getreal"/n请输入最大园半径:"))<BR>(setq ppp(getpoint"/n请确定起始点位置:")) <BR>(setq wy(/ (float 间距) (float 个数)))<BR>(setq bbb(/ (- rrr rr) 个数))<BR>(setq px(car ppp) py (cadr ppp))<BR>(repeat 个数<BR>(command"circle" ppp rr "")<BR>(setq px (+ px wy))<BR>(setq ppp (list px py))<BR>(setq rr(+ rr bbb)) <BR>) <BR>)</FONT>



用VBA应该怎么写?

mccad 发表于 2004-5-16 07:50:00

Sub DCircle()
       Dim Dist As Double
       Dim Cnt As Integer
       Dim MinR As Double
       Dim MaxR As Double
       Dim Pnt As Variant
       Dim Dir As Double
       On Error Resume Next
       '获得各种数据输入
       With ThisDrawing.Utility
               Pnt = .GetPoint(, vbCr & "请确定起始点位置:")
               Dir = .GetAngle(Pnt, vbCr & "请确定方向:")
               Dist = .GetDistance(Pnt, vbCr & "请输入间距:")
               MinR = .GetDistance(Pnt, vbCr & "请输入最小园半径:")
               MaxR = .GetDistance(Pnt, vbCr & "请输入最大园半径:")
               Cnt = .GetInteger(vbCr & "请输入排列个数:")
       End With
       '生成圆
       Dim i As Integer
       Dim Center As Variant
       Dim Radius As Double
       For i = 0 To Cnt - 1
               Center = ThisDrawing.Utility.PolarPoint(Pnt, Dir, Dist * i)
               Radius = MinR + ((MaxR - MinR) / (Cnt - 1)) * i
               ThisDrawing.ModelSpace.AddCircle Center, Radius
       Next i
End Sub

kevinchan 发表于 2004-5-16 11:34:00

谢谢老大,搞定了!
页: [1]
查看完整版本: 如何做中心间距相同大小递增的圆