好的,我整理出了我想要使用的代码。它工作良好:
- (defun _3DEllipse ( cen minp majp )
- (entmake
- (list
- '(0 . "ELLIPSE")
- '(100 . "AcDbEntity")
- '(100 . "AcDbEllipse")
- (cons 010 cen)
- (cons 011 (mapcar '- majp cen))
- (cons 040 (/ (distance minp cen) (distance majp cen)))
- (cons 210 (v^v (mapcar '- minp cen) (mapcar '- majp cen)))
- )
- )
- )
- ;; Vector Cross Product - Lee Mac
- ;; Args: u,v - vectors in R^3
- (defun v^v ( u v )
- (list
- (- (* (cadr u) (caddr v)) (* (cadr v) (caddr u)))
- (- (* (car v) (caddr u)) (* (car u) (caddr v)))
- (- (* (car u) (cadr v)) (* (car v) (cadr u)))
- )
- )
- (_3DEllipse (trans hp44 1 0) (trans p2701 1 0) (trans hoogp 1 0))
- (_3DEllipse hp44 p2701 hoogp)
另一个对象是线:
- (setq hoogte75 (* hoogte 0.75))
- (setq hp45 (list (car p45) (cadr p45) (- (caddr p45) hoogte75)))
- (command "line" p45 hp45 "")
我想要这些物体的交点。存储为变量。
所以我想我必须首先选择这样的椭圆:
- (setq ell (entlast)) ; im not sure this is the right way
- (setq ell (vlax-ename->vla-object ell)) ; converting
线路相同:
- (setq l1 (entlast))
- (setq l1 (vlax-ename->vla-object l1))
然后:
- (setq i45 (vlax-invoke <VLA-Object l1> 'intersectwith <VLA-Object ell> acextendnone))
它不起作用。也许我忘记了一件小事,或者只是我的方式。 |