I have this attached code, it is working fine I just want to change the angles, instead of 120,60, i want it to be 90 degrees. I tried changing the values but doesn't work. Anybody please help me. Thank you in Advance.
|
I have this attached code, it is working fine I just want to change the angles, instead of 120,60, i want it to be 90 degrees. I tried changing the values but doesn't work. Anybody please help me. Thank you in Advance.
You were close by changing the angles, you also needed to set the vertical leader distance to "1.0" (vs 1.1547)
(I also noticed this works correctly in one direction: leader going from right to left to match your image. I you go left to right it does't work)Code:(setq l_ang 270) (setq l_ang1 90) (defun c:q (/ sty nm p1 p2 ateblk p3) (command "cmdecho" "0") (setq osm (getvar "osmode")) (setq ort (getvar "orthomode")) ;(command "osmode" "2") (setq p1 (getpoint "\nPick origin point:)")) (command "osmode" "0") (command "orthomode" "0") (setq p2 (getpoint "\nPick target" p1)) (princ) (if (< (car p1) (car p2)) (progn (if (< (cadr p1) (cadr p2)) (setq p3d (- (cadr p1) (cadr p2))) ) (if (< (cadr p2) (cadr p1)) (setq p3d (- (cadr p2) (cadr p1))) ) (if (< (cadr p2) (cadr p1)) (progn (setq p3 (polar p2 (+ 0.0 (dtr (- l_ang))) (* p3d 1.0))) (command "LEADER" p2 p3 p1 "" "" "n") ) ) (if (< (cadr p1) (cadr p2)) (progn (setq p3 (polar p2 (+ 0.0 (dtr l_ang)) (* p3d 1.0))) (command "LEADER" p2 p3 p1 "" "" "n") ) ) ) ) (if (< (car p2) (car p1)) (progn (if (< (cadr p1) (cadr p2)) (setq p3d (- (cadr p1) (cadr p2))) ) (if (< (cadr p2) (cadr p1)) (setq p3d (- (cadr p2) (cadr p1))) ) (if (< (cadr p2) (cadr p1)) (progn (setq p3 (polar p2 (+ 0.0 (dtr (- l_ang1))) (* p3d 1.0))) (command "LEADER" p2 p3 p1 "" "" "n") ) ) (if (< (cadr p1) (cadr p2)) (progn (setq p3 (polar p2 (+ 0.0 (dtr l_ang1)) (* p3d 1.0))) (command "leader" p2 p3 p1 "" "" "n") ) ) ) ) (command "osmode" osm) (command "orthomode" ort) ) ; (defun dtr (a) (* pi (/ a 180.0)) ) ;
Last edited by tedg; 2016-10-13 at 12:02 PM. Reason: updated note
Thanks a lot ted, this works good. I hope we can find a way to work it in opposite direction
Got it instead of "270" it needs to be "-270", Cheers!
I figured out how to make this work in both directions... you only need one angle variable (setq l_ang 90)
And adjusted the code accordingly:
Just saw your latest reply, that's good you figured it out another way, see my code above seems to work too, cheers.Code:(setq l_ang 90) (defun c:q (/ sty nm p1 p2 ateblk p3) (command "cmdecho" "0") (setq osm (getvar "osmode")) (setq ort (getvar "orthomode")) ;(command "osmode" "2") (setq p1 (getpoint "\nPick origin point:)")) (command "osmode" "0") (command "orthomode" "0") (setq p2 (getpoint "\nPick target" p1)) (princ) (if (< (car p1) (car p2)) (progn (if (< (cadr p1) (cadr p2)) (setq p3d (- (cadr p1) (cadr p2))) ) (if (< (cadr p2) (cadr p1)) (setq p3d (- (cadr p2) (cadr p1))) ) (if (< (cadr p2) (cadr p1)) (progn (setq p3 (polar p2 (+ 0.0 (dtr (- l_ang))) (* p3d 1.0))) (command "LEADER" p2 p3 p1 "" "" "n") ) ) (if (< (cadr p1) (cadr p2)) (progn (setq p3 (polar p2 (+ 0.0 (dtr l_ang)) (* p3d 1.0))) (command "LEADER" p2 p3 p1 "" "" "n") ) ) ) ) (if (< (car p2) (car p1)) (progn (if (< (cadr p1) (cadr p2)) (setq p3d (- (cadr p1) (cadr p2))) ) (if (< (cadr p2) (cadr p1)) (setq p3d (- (cadr p2) (cadr p1))) ) (if (< (cadr p2) (cadr p1)) (progn (setq p3 (polar p2 (+ 0.0 (dtr (- l_ang))) (* p3d 1.0))) (command "LEADER" p2 p3 p1 "" "" "n") ) ) (if (< (cadr p1) (cadr p2)) (progn (setq p3 (polar p2 (+ 0.0 (dtr l_ang)) (* p3d 1.0))) (command "leader" p2 p3 p1 "" "" "n") ) ) ) ) (command "osmode" osm) (command "orthomode" ort) ) ; (defun dtr (a) (* pi (/ a 180.0)) ) ;
BTW "-270" = "90"
oh yeah that's right now im trying it with MLEADER but still not working, might need some assistance again.
hi tedg this is now the working routine using mleader, in previous post im asking to make it 90 degrees but now my colleagues want a different angle so im wondering how i could compute (or change it like for example 45 degrees). The last time we change is "setq l_ang90" and "(* p3d 1.0)))" which i dont have any idea how that works :l
(defun c:mm (/ sty nm p1 p2 ateblk p3)
(setq l_ang 90)
(command "cmdecho" "0")
(setq osm (getvar "osmode"))
(setq ort (getvar "orthomode"));
(command "osmode" "15359")
(setq p1 (getpoint "\nPick origin point"))
(command "osmode" "0")
(command "orthomode" "0")
(setq p2 (getpoint "\nPick target" p1))
(princ)
(if (< (car p1) (car p2))
(progn
(if (< (cadr p1) (cadr p2))
(setq p3d (- (cadr p1) (cadr p2)))
)
(if (< (cadr p2) (cadr p1))
(setq p3d (- (cadr p2) (cadr p1)))
)
(if (< (cadr p2) (cadr p1))
(progn
(setq p3 (polar p2 (+ 0.0 (dtr (- l_ang))) (* p3d 1.0)))
)
)
(if (< (cadr p1) (cadr p2))
(progn
(setq p3 (polar p2 (+ 0.0 (dtr l_ang)) (* p3d 1.0)))
)
)
)
)
(if (< (car p2) (car p1))
(progn
(if (< (cadr p1) (cadr p2))
(setq p3d (- (cadr p1) (cadr p2)))
)
(if (< (cadr p2) (cadr p1))
(setq p3d (- (cadr p2) (cadr p1)))
)
(if (< (cadr p2) (cadr p1))
(progn
(setq p3 (polar p2 (+ 0.0 (dtr (- l_ang))) (* p3d 1.0)))
)
)
(if (< (cadr p1) (cadr p2))
(progn
(setq p3 (polar p2 (+ 0.0 (dtr l_ang)) (* p3d 1.0)))
)
)
)
)
(command "_mleader" "L" "H" "o" "m" "3" "x" p2 p3 p1 "XX-XX")
(command "osmode" osm)
(COMMAND "DDEDIT" "L")
(command "orthomode" ort)
)
;
(defun dtr (a)
(* pi (/ a 180.0))
);
Good job on the Mleader attempt.
The code is a bit over my head too, but through trail and error, and using the variables from the original code (the 2 angles) I came up with this:
It seems to work, I can't get it exact, but the (* p3d 1.414245) is what is driving the vertical distance from end of the horizontal landing to the bend.
I'm sure that number has a relationship to the mleader, and the points picked, but I don't know what that is.
Code:(setq l_ang 45) (setq l_ang1 135) (defun c:ttt (/ sty nm p1 p2 ateblk p3) (command "cmdecho" "0") (setq osm (getvar "osmode")) (setq ort (getvar "orthomode")); (command "osmode" "15359") (setq p1 (getpoint "\nPick origin point:)")) (command "osmode" "0") (command "orthomode" "0") (setq p2 (getpoint "\nPick target" p1)) (princ) (if (< (car p1) (car p2)) (progn (if (< (cadr p1) (cadr p2)) (setq p3d (- (cadr p1) (cadr p2))) ) (if (< (cadr p2) (cadr p1)) (setq p3d (- (cadr p2) (cadr p1))) ) (if (< (cadr p2) (cadr p1)) (progn (setq p3 (polar p2 (+ 0.0 (dtr (- l_ang))) (* p3d 1.414245))) ) ) (if (< (cadr p1) (cadr p2)) (progn (setq p3 (polar p2 (+ 0.0 (dtr l_ang)) (* p3d 1.414245))) ) ) ) ) (if (< (car p2) (car p1)) (progn (if (< (cadr p1) (cadr p2)) (setq p3d (- (cadr p1) (cadr p2))) ) (if (< (cadr p2) (cadr p1)) (setq p3d (- (cadr p2) (cadr p1))) ) (if (< (cadr p2) (cadr p1)) (progn (setq p3 (polar p2 (+ 0.0 (dtr (- l_ang1))) (* p3d 1.414245))) ) ) (if (< (cadr p1) (cadr p2)) (progn (setq p3 (polar p2 (+ 0.0 (dtr l_ang1)) (* p3d 1.414245))) ) ) ) ) (command "_mleader" "L" "H" "o" "m" "3" "x" p2 p3 p1 "XX-XX") (command "osmode" osm) (COMMAND "DDEDIT" "L") (command "orthomode" ort) ) ; (defun dtr (a) (* pi (/ a 180.0)) );
Thank you very much Ted, now it's working great. uhmm just one more question, How did you get "1.414245" I've been trying so hard to understand but i cant still figure out :/
Yea, that's what I was trying to say... I just kept adjusting that number until it was as close to level with the Mleader shoulder as possible.
In other words, its trail and error, I don't know the math behind it.
Where that value was "1.0" for the 90 degree Leader routine, that number changes when the leader is at an angle (see your first routine for the "60 and 120 degrees", that was different as well).
Glad to help, wish I could explain it better, I'm not sure where you got the original routine but whoever wrote it could probably tell you.