Hi, I have one situation I need to solve...
There are 3 points in 3D space that aren't collinear and 4th point is not coplanar to those 3... (Somehing like tetrahedron, but not neccessary with equal sides...)
It is easy to make 3DSOLID by using SURFSCULPT command...
But, I need it to be working also in BricsCAD that don't have this command...
Here is example operational in AutoCAD :
(defun c:4pt-3dsol ( / collinear-p coplanar-p adoc p1 p2 p3 p4 3df1 3df2 3df3 3df4 s el )
(vl-load-com)
(vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
(defun collinear-p ( p1 p2 p3 )
(
(lambda ( a b c )
(or
(equal (+ a b) c 1e-6)
(equal (+ b c) a 1e-6)
(equal (+ c a) b 1e-6)
)
)
(distance p1 p2) (distance p2 p3) (distance p1 p3)
)
)
(defun coplanar-p ( p1 p2 p3 p4 / l )
(setq l (list p1 p2 p3 p4))
(or
(vl-some (function (lambda ( x ) (apply (function collinear-p) (vl-remove x l)))) l)
(apply (function inters) (append l (list nil)))
(apply (function inters) (append (cdr l) (list (car l) nil)))
)
)
(if
(and
(setq p1 (trans (getpoint "\nFirst point : ") 1 0))
(setq p2 (trans (getpoint "\nSecond point : ") 1 0))
(setq p3 (trans (getpoint "\nThird point : ") 1 0))
(setq p4 (trans (getpoint "\nFourth point : ") 1 0))
(not (coplanar-p p1 p2 p3 p4))
)
(progn
(setq 3df1 (entmakex (list '(0 . "3DFACE") (cons 10 p1) (cons 11 p2) (cons 12 p3) (cons 13 p1))))
(setq 3df2 (entmakex (list '(0 . "3DFACE") (cons 10 p1) (cons 11 p2) (cons 12 p4) (cons 13 p1))))
(setq 3df3 (entmakex (list '(0 . "3DFACE") (cons 10 p2) (cons 11 p3) (cons 12 p4) (cons 13 p2))))
(setq 3df4 (entmakex (list '(0 . "3DFACE") (cons 10 p1) (cons 11 p3) (cons 12 p4) (cons 13 p1))))
(setq s (ssadd))
(ssadd 3df1 s)
(ssadd 3df2 s)
(ssadd 3df3 s)
(ssadd 3df4 s)
(setq el (entlast))
(vl-cmdf "_.REGION" s "")
(setq s (ssadd))
(while (setq el (entnext el))
(ssadd el s)
)
(vl-cmdf "_.SURFSCULPT" s "")
)
)
(vla-endundomark adoc)
(princ)
)
This task is part of my bigger program for which I want to be useful also in BricsCAD as it's faster than AutoCAD...
Any insight or solution is welcomed and appreciated...
Thanks, M.R.