📄 apn_new.lsp
字号:
(cond
((= "NEW" app_apn)
(setq l02 (distance basept pt2))
(setq l03 (distance basept pt3))
)
((= "OLD" app_apn)
(setq pt2 (polar basept ang l02))
(setq pt3 (polar basept ang l03))
)
)
(setq pt1 (polar basept ang k))
(setq l (+ (distance basept pt2) l))
(setq angv (+ ang (* pi 0.5))
angvv (- ang (* pi 0.5))
angh (+ ang pi)
)
(if (< ang ang_ref)
(setq spt1 (polar basept angv (/ hd 2))
spt2 (polar basept (- ang_ref (/ pi 2)) (/ (/ hd 2) (abs (cos angd))))
text_pt (polar (polar basept ang (/ k 2)) angv (/ hd 4))
)
(setq spt2 (polar basept angvv (/ hd 2))
spt1 (polar basept (+ ang_ref (/ pi 2)) (/ (/ hd 2) (abs (cos angd))))
text_pt (polar (polar basept ang (/ k 2)) angvv (/ hd 4))
)
)
(setq spt3 (polar (polar basept ang k) angv (/ hd 2))
spt4 (polar (polar basept ang k) angv (/ d 2))
spt5 (polar (polar basept ang k) angvv (/ d 2))
spt6 (polar (polar basept ang k) angvv (/ hd 2))
spt7 (polar spt4 ang (- l k))
spt8 (polar spt5 ang (- l k))
spt9 (polar spt7 (- ang 0.3491) 4)
spt10 (polar spt8 (+ ang 0.3491) 4)
)
(setq spt11 (polar basept (+ ang_ref (* pi 0.5)) (+ (/ hd 2) 0.5))
spt12 (polar basept (- ang_ref (* pi 0.5)) (+ (/ hd 2) 0.5))
spt13 (polar (polar basept ang k) angv (+ (/ hd 2) 0.5))
spt14 (polar (polar basept ang k) angvv (+ (/ hd 2) 0.5))
)
(setq scpt1 (polar basept angh 2)
scpt2 (polar basept ang (+ l 6))
)
(setvar "osmode" 0)
(setq sel_ent (ssadd))
(command "text" "j" "mc" text_pt 2.5 0 apn_rep)
(setq sel_ent (ssadd (entlast) sel_ent))
(if (= "1" if_h_v)
(progn
(command "linetype" "s" "hidden" "")
(setvar "cecolor" "yellow")
)
)
(command "pline" spt1 basept spt2 spt6 spt3 spt1 "")
(setq sel_ent (ssadd (entlast) sel_ent))
(command "pline" spt4 spt7 spt9 spt10 spt8 spt5 "")
(setq sel_ent (ssadd (entlast) sel_ent))
(setq trm_ent (entlast))
(command "pline" spt7 spt8 "")
(setq sel_ent (ssadd (entlast) sel_ent))
(setq tmpt1 (polar basept angv (+ 0.5 (/ d 2)))
tmpt2 (polar tmpt1 ang 1)
tmpt3 (polar basept angvv (+ 0.5 (/ d 2)))
tmpt4 (polar tmpt3 ang 1)
)
(setq spt15 (polar basept (+ ang_ref (/ pi 2)) (/ (+ 0.5 (/ hd 2)) (abs (cos angd))))
spt16 (polar basept (- ang_ref (/ pi 2)) (/ (+ 0.5 (/ hd 2)) (abs (cos angd))))
spt17 (polar (polar basept ang k) angv (+ 0.5 (/ hd 2)))
spt18 (polar (polar basept ang k) angvv (+ 0.5 (/ hd 2)))
)
(if (and pick1 pick2)
(progn
(setq spt19 (pline_int tmpt1 tmpt2 (car pick1) (caddr pick1))
spt20 (pline_int tmpt3 tmpt4 (car pick1) (caddr pick1))
spt21 (pline_int tmpt1 tmpt2 (car pick2) (caddr pick2))
spt22 (pline_int tmpt3 tmpt4 (car pick2) (caddr pick2))
)
(command "trim" trm_ent "" pt2 pt3 "")
)
(setq spt19 (polar pt2 (+ ang_ref (* pi 0.5)) (+ (/ d 2) 0.5))
spt20 (polar pt2 (- ang_ref (* pi 0.5)) (+ (/ d 2) 0.5))
spt21 (polar pt3 (+ ang_ref (* pi 0.5)) (+ (/ d 2) 0.5))
spt22 (polar pt3 (- ang_ref (* pi 0.5)) (+ (/ d 2) 0.5))
)
)
(command "pline" spt15 spt17 spt18 spt16 "")
;(setq sel_ent (ssadd (entlast) sel_ent))
(if (and spt19 spt21)
(progn
(command "pline" spt19 spt21 "")
;(setq sel_ent (ssadd (entlast) sel_ent))
)
)
(if (and spt20 spt22)
(progn
(command "pline" spt20 spt22 "")
;(setq sel_ent (ssadd (entlast) sel_ent))
)
)
(progn
(command "linetype" "s" "center" "")
(setvar "cecolor" "red")
(command "pline" scpt1 scpt2 "")
;(setq sel_ent (ssadd (entlast) sel_ent))
)
(setq l (+ l 4))
(setq spec (strcat "%%C" dd "X" (len_round)))
(if (and (> ang (* pi 0.50)) (< ang (* pi 1.50)))
(progn
(setq textang (* (+ ang pi) (/ 180 pi)))
(setq textpt2 (polar (polar pt1 ang (* 1.25 (- (strlen spec) 1))) angvv 0.5))
)
(progn
(setq textang (* ang (/ 180 pi)))
(setq textpt2 (polar (polar pt1 ang 1.25) angv 0.5))
)
)
;-----------------------------------------------------
;Dim specification and item number
;-----------------------------------------------------
(setvar "cecolor" "bylayer")
(setvar "celtype" "bylayer")
(progn
(if (not (tblsearch "style" "lxy1"))
(command "-style" "lxy1" "txt" "" 0.5 "" "" "" "")
(setvar "textstyle" "lxy1")
)
(command "text" textpt2 2.5 textang spec)
;(setq sel_ent (ssadd (entlast) sel_ent))
(setvar "textstyle" st_old)
)
(mblk (strcat "AC_LXY_BLK" (itoa (getvar "useri2"))) basept sel_ent)
(setvar "useri2" (+ 1 (getvar "useri2")))
(setq xd (strcat apn_rep " " ;item number
"C" " " ;view flag
dd " " ;dim diameter
(len_round) " " ;dim length
if_h_v " " ;hidden flag
"0" " " ;type flag
mb " " ;meter or inch flag
stk " " ;stroke value
(rtos ang 2 5) " " ;angle
(rtos l 2 5) " " ;length
(rtos l02 2 5) " " ;distance between basept and pt2
(rtos l03 2 5))) ;distance between basept and pt3
(setq xd (list (list -3 (list "apn" (cons 1000 xd)))))
(mxdata (entlast) xd)
(setvar "osmode" os_old)
(zst_main)
)
;*************************************** end of function ****************************************;
;********************************** Round length of angle pin ***********************************;
;round the angle pin length
(defun len_round( / n len_1 len_2 len)
(cond
((= "M" mb)
(cond
((>= 100 l)
(setq len "100")
)
((and (>= 125 l) (< 100 l))
(setq len "125")
)
((and (>= 160 l) (< 100 l))
(setq len "160")
)
((and (>= 200 l) (< 150 l))
(setq len "200")
)
((and (>= 250 l) (< 200 l))
(setq len "250")
)
((and (>= 300 l) (< 250 l))
(setq len "300")
)
((and (>= 350 l) (< 300 l))
(setq len "350")
)
((and (>= 400 l) (< 350 l))
(setq len "400")
)
((and (>= 450 l) (< 400 l))
(setq len "450")
)
((and (>= 500 l) (< 450 l))
(setq len "500")
)
((and (>= 550 l) (< 500 l))
(setq len "550")
)
((and (>= 600 l) (< 550 l))
(setq len "600")
)
((and (>= 650 l) (< 600 l))
(setq len "650")
)
((and (>= 700 l) (< 650 l))
(setq len "700")
)
)
)
((= "B" mb)
(cond
((>= 101.6 l)
(setq len "4\"")
)
((and (>= 152.4 l) (< 101.6 l))
(setq len "6\"")
)
((and (>= 203.2 l) (< 152.4 l))
(setq len "8\"")
)
((and (>= 254 l) (< 203.2 l))
(setq len "10\"")
)
((and (>= 304.8 l) (< 254 l))
(setq len "12\"")
)
((and (>= 355.6 l) (< 304.8 l))
(setq len "14\"")
)
((and (>= 406.4 l) (< 355.6 l))
(setq len "16\"")
)
((and (>= 457.2 l) (< 406.4 l))
(setq len "18\"")
)
((and (>= 508 l) (< 457.4 l))
(setq len "20\"")
)
((and (>= 558.8 l) (< 508 l))
(setq len "22\"")
)
((and (>= 609.6 l) (< 558.8 l))
(setq len "24\"")
)
((and (>= 660.4 l) (< 609.6 l))
(setq len "26\"")
)
((and (>= 711.2 l) (< 660.4 l))
(setq len "28\"")
)
)
)
)
len
)
;*************************************** end of function ****************************************;
;************************************* Init dialog function2 ************************************;
(defun ini_apn_dia2()
(ini_list "APN_D_SEL" (lib_apn (if (= "B" mb) 4 1)))
(if stk
(set_tile "APN_STK" stk)
(set_tile "APN_STK" "")
)
(setq stk (get_tile "APN_STK"))
(if (= "B" mb)
(progn
(set_tile "APN_D" (nth d_b_n (lib_apn 4)))
(set_tile "APN_B" "1")
(setq d (nth d_b_n (lib_apn 5)))
(setq hd (nth d_b_n (lib_apn 6)))
(setq k (nth d_b_n (lib_apn 7)))
)
(progn
(set_tile "APN_D" (nth d_m_n (lib_apn 1)))
(set_tile "APN_M" "1")
(setq d (atof (nth d_m_n (lib_apn 1))))
(setq hd (nth d_m_n (lib_apn 2)))
(setq k (nth d_m_n (lib_apn 3)))
)
)
(if apn_rep
(set_tile "APN_ITM" apn_rep)
)
(if err_msg
(set_tile "MSG" err_msg)
(set_tile "MSG" "")
)
(set_tile "IF_H" if_h_v)
)
;*************************************** end of function ****************************************;
;*********************************** Edit angle pin function ************************************;
(defun apn_edit()
(setq apn_ent nil)
(while (not apn_ent)
(setq apn_ent (car (entsel)))
)
(if (assoc -3 (entget apn_ent '("apn")))
(progn
(setq apn_data (cadr (assoc -3 (entget apn_ent '("apn")))))
(if (= "APN" (car apn_data))
(setq ed_next (yn "Reselect insert point?"))
(setq apn_data nil)
)
)
(setq apn_data nil)
)
(cond
((and apn_data (= 1 ed_next))
(get_edit_data)
(entdel apn_ent)
)
((and apn_data (= 0 ed_next))
(get_edit_data)
(setq apn_next 0)
(apn_modify)
)
((= nil apn_data)
(setq err_msg "Invalid selected entity!")
)
)
)
;*************************************** end of function ****************************************;
;********************************** Get edit dialog parameter ***********************************;
(defun get_edit_data()
(setq all_data (cdr (assoc 1000 (cdr apn_data))))
(setq all_data (strtolst all_data))
(setq apn_rep (nth 0 all_data)
zc (nth 1 all_data)
dd (nth 2 all_data)
if_h_v (nth 4 all_data)
mb (nth 6 all_data)
stk (nth 7 all_data)
l (nth 9 all_data)
ang (nth 8 all_data)
l02 (atof (nth 10 all_data))
l03 (atof (nth 11 all_data))
)
(cond
((= "B" mb)
(setq d_b_n (xh_get dd (lib_apn 4)))
(setq d_m_n 0)
)
((= "M" mb)
(setq d_m_n (xh_get dd (lib_apn 1)))
(setq d_b_n 0)
)
)
(setq ang (atof ang))
(if (= -1.0 (cdr (assoc 41 (entget apn_ent))))
(progn
(setq ang_mirr (cdr (assoc 50 (entget apn_ent))))
(setq ang_mirr (/ ang_mirr 2))
(setq ang_mirr (+ ang_mirr (/ pi 2)))
(if (<= pi ang_mirr)
(setq ang_mirr (- ang_mirr pi))
)
(if (= "C" zc)
(progn
(setq ang_mirr (- (- ang (* (fix (/ ang pi)) pi)) ang_mirr))
(setq ang (- ang (* 2 ang_mirr)))
)
)
)
(setq ang (+ ang (cdr (assoc 50 (entget apn_ent)))))
)
(if (< (* pi 2) ang)
(setq ang (- ang (* pi 2)))
)
(if (< ang 0)
(setq ang (+ ang (* pi 2)))
)
(setq angdd (/ (* ang 180) pi))
(if (> ang (* 1.75 pi))
(setq ang (- ang (* 2 pi)))
)
(cond
((and (> angdd 315) (< angdd 360))
(setq angd (fix (- 360 angdd)))
(setq ang_ref 0)
)
((and (> angdd 0) (< angdd 45))
(setq angd (fix angdd))
(setq ang_ref 0)
)
((and (> angdd 45) (< angdd 90))
(setq angd (fix (- 90 angdd)))
(setq ang_ref (/ pi 2))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -