本帖最后由 作者 于 2010-9-2 8:33:58 编辑
别这样夸我。我会飘飘然的。明经上高人多的是。呵呵,这就是我为什么喜欢来这里的缘故。
你说的竖椭圆,实际上是椭圆的长轴旋转了90度。
-
- (vl-load-com)
- (prompt "\n选取两个椭圆,第一个椭圆必须正置放.")
- (defun c:ccc (/ A1 B1 C1 CEN D1 D2 DIV E1 E2 EPS O1 O2 SOL MAJ)
- (setq eps 1e-8)
- (setq e1 (car (entsel)))
- (setq e2 (car (entsel)))
- (if (and e1
- e1
- (setq d1 (entget e1))
- (setq d2 (entget e2))
- (= (cdr (assoc 0 d1)) "ELLIPSE")
- (= (cdr (assoc 0 d2)) "ELLIPSE")
- )
- (progn
- (setq d1 (entget e1))
- (setq d2 (entget e2))
- (setq a1 (distance '(0 0 0) (cdr (assoc 11 d1))))
- (setq b1 (* a1 (cdr (assoc 40 d1))))
- (setq cen (cdr (assoc 10 d1)))
- (setq maj (cdr (assoc 11 d1)))
- (setq maj (mapcar '/ maj (list a1 a1 a1)))
- (setq ang (angle '(0 0 0) maj))
- (setq nor (cdr (assoc 210 d1)))
- (setq o1 (vlax-ename->vla-object e1))
- (setq o2 (vlax-ename->vla-object e2))
- (if (or (equal (angle '(0 0) maj) (* pi 0.5) eps)
- (equal (angle '(0 0) maj) (* pi 1.5) eps)
- )
- (setq c1 a1
- a1 b1
- b1 c1
- )
- )
-
- (setq div 50)
- (setq sol (find o2 a1 b1 cen div))
- (foreach n sol
- (bsol (car n) (cdr n) o2 a1 b1 cen eps mat)
- )
- )
- )
- (princ)
- )
关于第一种方法,有几个错误,我已经做了修正。请重新下载附件
|