kevinchan 发表于 2005-3-21 14:19:00

如何画三角交叉排列的递增圆?

<FONT face=宋体 size=2>如图所示:如何能根据输入ABC三个点的直径大小和XY的间距画出递增的圆?<BR>A---B递增<BR>A--C递增<BR>B--C递增<BR>然后AC间的点------BC间的点递增.</FONT>


kevinchan 发表于 2005-3-21 20:06:00

能帮帮忙吗?

kevinchan 发表于 2005-3-22 15:47:00

mjcad大哥帮帮忙啊!!

kevinchan 发表于 2005-3-23 10:17:00

真没有人能帮我<BR>做到吗?

雪山飞狐_lzh 发表于 2005-3-23 14:12:00

什么数据也没有怎么做?每层的比例关系如何,距离,个数....

kevinchan 发表于 2005-3-23 15:23:00

是A-C       A-B B-C AC-BC都是等差的关系,个数根据人工输入,距离是均等的.<FONT face=宋体 size=2>ljpnb大哥已经用LISP帮我做出来了,但我想用VBA做,能帮我编译一下吗?</FONT>


<FONT face=宋体 size=2>;;;圆随形阵列,程序by ljpnb<BR>(defun c:test ()<BR>(setq ent1 (entget (car (entsel "\n选择一个圆: ")))) <BR>(setq ent2 (entget (car (entsel "\n选择另一个圆: "))))<BR>(setq ent3 (entget (car (entsel "\n选择另一个圆: "))))<BR>(setq n (getint "\n输入一个阵列的数目: "))<BR>(setq r1 (cdr (assoc 40 ent1))<BR>p1 (cdr (assoc 10 ent1))<BR>r2 (cdr (assoc 40 ent2))<BR>p2 (cdr (assoc 10 ent2))<BR>r3 (cdr (assoc 40 ent3))<BR>p3 (cdr (assoc 10 ent3))<BR>)<BR>(setq dis12 (distance p1 p2)<BR>dis13 (distance p1 p3)<BR>dis23 (distance p2 p3)<BR>ang12 (angle p1 p2)<BR>ang13 (angle p1 p3)<BR>ang23 (angle p2 p3)<BR>)<BR>(setq len12 (/ dis12 (* n 2))<BR>len13 (/ dis13 n)<BR>len23 (/ dis23 n)<BR>r12 (/ (- r2 r1) (* n 2))<BR>r13 (/ (- r3 r1) n)<BR>r23 (/ (- r3 r2) n)<BR>)<BR>(setq j 0)<BR>(setvar "cmdecho" 0)<BR>(setq os(getvar "osmode"))<BR>(setvar "osmode" 0)<BR>(repeat n<BR>(setq k (* (- n j) 2))<BR>(setq i 1)<BR>(repeat (1- k)<BR>(setq p0 (polar p1 ang12 (* len12 i)))<BR>(command "circle" p0 (+ r1 (* r12 i)))<BR>(setq i (1+ i))<BR>)<BR>(if (/= (setq j (1+ j)) n)<BR>(progn<BR><BR>(setq p1 (polar p1 ang13 len13))<BR>(setq p2 (polar p2 ang23 len23))<BR>(setq ang12 (angle p1 p2))<BR><BR>(setq len12 (/ (distance p1 p2) (* (- n j) 2)))<BR>(setq r1 (+ r1 r13)<BR>r2 (+ r2 r23)<BR>)<BR>(setq r12 (/ (- r2 r1) (* (- n j) 2)))<BR>(command "circle" p1 r1)<BR>(command "circle" p2 r2)<BR>)<BR>)<BR>)<BR>(setvar "osmode" os)<BR>(setvar "cmdecho" 1)<BR>(princ)<BR>)</FONT>
页: [1]
查看完整版本: 如何画三角交叉排列的递增圆?