- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
*Moderator restored to original text- please see message 1 for additional information.
What i mistake this program
1) I want A(P1),B(P2),C(P3) triangle
2) Existing Lenght AB
3)Find P3 Point & A to C Angle Using this formula ∠A = arccos(b2 + c2 - a2) / 2bc
4) I pick 2 points and side values
5) Mistake for this program not correct dimension and angles
(defun c:tri( / unit mxv v^v transptucs transptwcs p1 p2 loop g p h gp p3 )
(defun acos ( x )
(if (<= -1.0 x 1.0)
(atan (sqrt (- 1.0 (* x x))) x)
)
)
(defun unit ( v / d )
(mapcar '(lambda ( x y ) (/ x y)) v (list (setq d (distance '(0.0 0.0 0.0) v)) d d))
)
(defun mxv ( m v )
(mapcar '(lambda ( r ) (apply '+ (mapcar '* r v))) m)
)
(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)))
)
)
(defun transptucs ( pt p1 p2 p3 / ux uy uz )
(setq uz (unit (v^v (mapcar '- p2 p1) (mapcar '- p3 p1))))
(setq ux (unit (mapcar '- p2 p1)))
(setq uy (unit (mapcar '- p3 p1)))
(mxv (list ux uy uz) (mapcar '- pt p1))
)
(defun transptwcs ( pt pt1 pt2 pt3 / pt1n pt2n pt3n )
(setq pt1n (transptucs '(0.0 0.0 0.0) pt1 pt2 pt3))
(setq pt2n (transptucs '(1.0 0.0 0.0) pt1 pt2 pt3))
(setq pt3n (transptucs '(0.0 1.0 0.0) pt1 pt2 pt3))
(transptucs pt pt1n pt2n pt3n)
)
(setq p1 (getpoint "\nPick or specify start point : "))
(setq p2 (getpoint "\nPick or specify end point : " p1))
(SETQ
TA(GETSTRING "\n ENTER START POINT OF TEXT:");A
TB(GETSTRING "\n ENTER END POINT OF TEXT:");B
TC(GETSTRING "\n ENTER THIRD POINT OF TEXT:");C
AB(GETDIST(STRCAT TA "<----->" TB " LENGTH"));AB - C
BC(GETDIST(STRCAT TB "<----->" TC " LENGTH"));BC - A
CA(GETDIST(STRCAT TC "<----->" TA " LENGTH"));CA - B
B2(* CA CA) C2(* AB AB) A2(* BC BC) CV(* 2 CA AB) CB(* 2 BC AB) CC(* 2 BC CA)
ANGA(/(-(+ B2 C2)A2)CV)
ANSA(acos anga);ANGLE A
)
(setq loop t)
(while loop
(setq g (grread t 15 0))
(if (eq (car g) 5)
(progn
(setq p (mapcar '(lambda ( a b ) (/ (+ a b) 2.0)) p1 p2))
(setq h (/ (distance p1 p2) (* 2.0 (sqrt 3.0))))
(setq gp (cadr g))
(if (not (minusp (cadr (transptucs gp p1 (polar p1 (angle p1 p2) 1.0) (polar p1 (+ (angle p1 p2) (* 0.5 pi)) 1.0)))))
(progn
(redraw)
(setq p3 (polar p ANSA CA))
(grdraw p1 p2 1 1)
(grdraw p2 p3 1 1)
(grdraw p3 p1 1 1)
)
(progn
(redraw)
(setq p3 (polar p (- ANSA) CA))
(grdraw p1 p2 1 1)
(grdraw p2 p3 1 1)
(grdraw p3 p1 1 1)
)
)
)
(progn
(entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(90 . 3) (if (eq (getvar 'plinegen) 1) '(70 . 129) '(70 . 1)) (cons 38 (caddr (trans p1 1 (trans '(0.0 0.0 1.0) 1 0 t)))) (cons 10 (list (car (trans p1 1 (trans '(0.0 0.0 1.0) 1 0 t))) (cadr (trans p1 1 (trans '(0.0 0.0 1.0) 1 0 t))))) (cons 10 (list (car (trans p2 1 (trans '(0.0 0.0 1.0) 1 0 t))) (cadr (trans p2 1 (trans '(0.0 0.0 1.0) 1 0 t))))) (cons 10 (list (car (trans p3 1 (trans '(0.0 0.0 1.0) 1 0 t))) (cadr (trans p3 1 (trans '(0.0 0.0 1.0) 1 0 t))))) (cons 210 (trans '(0.0 0.0 1.0) 1 0 t))))
(setq loop nil)
)
)
)
(redraw)
(princ (RTOS ANSA))
)
Solved! Go to Solution.