📄 apn_new.lsp
字号:
)
((and (> angdd 90) (< angdd 135))
(setq angd (fix (- angdd 90)))
(setq ang_ref (/ pi 2))
)
((and (> angdd 135) (< angdd 180))
(setq angd (fix (- 180 angdd)))
(setq ang_ref pi)
)
((and (> angdd 180) (< angdd 225))
(setq angd (fix (- angdd 180)))
(setq ang_ref pi)
)
((and (> angdd 225) (< angdd 270))
(setq angd (fix (- 270 angdd)))
(setq ang_ref (* pi 1.5))
)
((and (> angdd 270) (< angdd 315))
(setq angd (fix (- angdd 180)))
(setq ang_ref (* pi 1.5))
)
)
(cond
((or (= 14 angd) (= 16 angd))
(setq angd 15)
)
((or (= 17 angd) (= 19 angd))
(setq angd 18)
)
((or (= 19 angd) (= 21 angd))
(setq angd 20)
)
((or (= 22 angd) (= 24 angd))
(setq angd 23)
)
)
(setq ang_n (xh_get (itoa angd) ang_lib))
(setq basept (cdr (assoc 10 (entget apn_ent))))
(setq basept (wtou basept))
(setq l1 (/ (atof stk) (sin (* (/ angd 180.0) pi))))
(setq l (atof l))
)
;*************************************** end of function ****************************************;
;********************************* Main modify control function *********************************;
(defun apn_modify()
(command "undo" "m")
(setq angd (itoa angd))
(setq edit_next 1)
(while (= 1 edit_next)
(if (not (new_dialog "APNEDIT" apn_id))
(exit)
)
(ini_apn_dia2)
(action_tile "IF_H" "(ch_h)")
(action_tile "APN_M" "(mb_act)")
(action_tile "APN_B" "(mb_act)")
(action_tile "APN_D_SEL" "(d_act)")
(action_tile "cancel" "(done_dialog 0)")
(action_tile "accept" "(get_apn) (done_dialog 1)")
(setq what_next (start_dialog))
(setq apn_next 0)
(cond
((= 0 what_next)
(command "undo" "back")
(setq edit_next 0)
)
((= 1 what_next)
(setq pick1 nil)
(setq pick2 nil)
(if (not err_msg)
(progn
(setq l (/ (atof stk) (* (/ angd 180) pi)))
(setq angd (* (/ angd 180) pi))
(setq app_apn "OLD")
(entdel apn_ent)
(apn_cst)
(setq edit_next 0)
)
(setq edit_next 1)
)
)
)
)
)
;*************************************** end of function ****************************************;
;*************************** Angle pin zst view main control function ***************************;
(defun zst_main()
(command "undo" "M")
(setq zst_nxt 1)
(while (= 1 zst_nxt)
(if (not (new_dialog "APNZST" apn_id))
(exit)
)
(action_tile "TVIEW" "(done_dialog 1)")
(action_tile "BVIEW" "(done_dialog 2)")
(action_tile "accept" "(done_dialog 3)")
(action_tile "cancel" "(done_dialog 4)")
(action_tile "GOLOOK" "(done_dialog 5)")
(setq zst_next (start_dialog))
(cond
((= 1 zst_next)
(setq what_sel "A")
(apn_zst)
)
((= 2 zst_next)
(setq what_sel "B")
(apn_zst)
)
((= 3 zst_next)
(setq zst_nxt 0)
)
((= 4 zst_next)
(setq zst_nxt 0)
(command "undo" "B")
)
((= 5 zst_next)
(command "zoom" "")
)
)
)
)
;*************************************** end of function ****************************************;
;*********************************** Create angle pin zst view **********************************;
(defun apn_zst( / zcpt)
;---------------------------------
;initializing
(initget 32)
(setvar "orthomode" 1)
;---------------------------------
;get center point and calculate parameter
(while (not zcpt)
(if (= "A" what_sel)
(setq zcpt (getpoint pt2 "\nPlease select center point:"))
(setq zcpt (getpoint (polar basept ang l) "\nPlease select center point:"))
)
)
(setq ang_refv (+ ang_ref (* pi 0.5)))
(setq ang_refvv (- ang_ref (* pi 0.5)))
(setq ang_refh (+ ang_ref pi))
(setq hdd (+ (/ hd 2) 0.5))
(setvar "osmode" 0)
;--------------------------------
;cond
(cond
;;--------------------------------
;;if selected top view
((= "A" what_sel)
(setq l1 (* (distance pt2 pt3) (sin angd)))
(if (> ang ang_ref)
(setq zcpt1 (polar zcpt ang_refv l1))
(setq zcpt1 (polar zcpt ang_refvv l1))
)
(setq opt1 (polar zcpt ang_ref (+ (/ d 2) 0.5))
opt2 (polar zcpt ang_refv (/ (+ (/ d 2) 0.5) (cos angd)))
opt3 (polar zcpt ang_refh (+ (/ d 2) 0.5))
opt4 (polar zcpt ang_refvv (/ (+ (/ d 2) 0.5) (cos angd)))
)
(setq ipt1 (polar zcpt1 ang_ref (+ (/ d 2) 0.5))
ipt2 (polar zcpt1 ang_refv (/ (+ (/ d 2) 0.5) (cos angd)))
ipt3 (polar zcpt1 ang_refh (+ (/ d 2) 0.5))
ipt4 (polar zcpt1 ang_refvv (/ (+ (/ d 2) 0.5) (cos angd)))
)
(setq olpt1 (polar zcpt 0 (+ (/ d 2) 2))
olpt2 (polar zcpt (/ pi 2) (+ (/ d 2) 2))
olpt3 (polar zcpt pi (+ (/ d 2) 2))
olpt4 (polar zcpt (* pi 1.5) (+ (/ d 2) 2))
)
(setq ilpt1 (polar zcpt1 0 (+ (/ d 2) 2))
ilpt2 (polar zcpt1 (/ pi 2) (+ (/ d 2) 2))
ilpt3 (polar zcpt1 pi (+ (/ d 2) 2))
ilpt4 (polar zcpt1 (* pi 1.5) (+ (/ d 2) 2))
)
(setq text_zst (polar zcpt (/ pi 4) (/ hd 4)))
(setq sel_ent (ssadd))
(command "ellipse" "_c" zcpt opt1 opt2)
(setq sel_ent (ssadd (entlast) sel_ent))
(progn
(command "linetype" "s" "hidden" "")
(setvar "cecolor" "yellow")
(command "ellipse" "_c" zcpt1 ipt1 ipt2)
(setq sel_ent (ssadd (entlast) sel_ent))
(command "pline" opt1 ipt1 "")
(setq sel_ent (ssadd (entlast) sel_ent))
(command "pline" opt3 ipt3 "")
(setq sel_ent (ssadd (entlast) sel_ent))
)
(progn
(command "linetype" "s" "center" "")
(setvar "cecolor" "red")
(command "pline" olpt1 olpt3 "")
(setq sel_ent (ssadd (entlast) sel_ent))
(command "pline" olpt2 olpt4 "")
(setq sel_ent (ssadd (entlast) sel_ent))
(command "pline" ilpt1 ilpt3 "")
(setq sel_ent (ssadd (entlast) sel_ent))
(command "pline" ilpt2 ilpt4 "")
(setq sel_ent (ssadd (entlast) sel_ent))
(setvar "celtype" "bylayer")
(setvar "cecolor" "bylayer")
)
(mblk (strcat "AC_LXY_BLK" (itoa (getvar "useri2"))) zcpt sel_ent)
(setvar "useri2" (+ 1 (getvar "useri2")))
(setq xd (strcat apn_rep " " ;item number
"ZA" " " ;view flag
dd " " ;dim diameter
(len_round) " " ;dim length
"0" " " ;hidden flag
if_h_v " " ;type flag
mb " " ;meter or inch flag
stk " " ;stroke value
(rtos l 2 5) " " ;length
(rtos ang 2 5))) ;angle
(setq xd (list (list -3 (list "apn" (cons 1000 xd)))))
(mxdata (entlast) xd)
)
;;-----------------------------------
;;if selected bottom view
((= "B" what_sel)
;;;;-----------------------------------
;;;;calculate parameterand point ordinate
(setq l2 (* (- l (distance basept pt2)) (sin angd)))
(setq l3 (* (- l (distance basept pt1)) (sin angd)))
(setq l4 (* l (sin angd)))
(setq l1 (- l (distance basept pt3)))
(if (> ang ang_ref)
(progn
(setq zcpt1 (polar zcpt ang_refvv (* 4 (sin angd))))
(setq zcpt2 (polar zcpt ang_refvv l2))
(setq zcpt3 (polar zcpt ang_refvv l3))
(setq zcpt4 (polar zcpt ang_refvv l4))
)
(progn
(setq zcpt1 (polar zcpt ang_refv (* 4 (sin angd))))
(setq zcpt2 (polar zcpt ang_refv l2))
(setq zcpt3 (polar zcpt ang_refv l3))
(setq zcpt4 (polar zcpt ang_refv l4))
)
)
(setq hopt1 (polar zcpt4 ang_ref hdd)
hopt2 (polar zcpt4 ang_refv (/ hdd (cos angd)))
hopt3 (polar zcpt4 ang_refh hdd)
hopt4 (polar zcpt4 ang_refvv (/ hdd (cos angd)))
)
(setq hipt1 (polar zcpt3 ang_ref hdd)
hipt2 (polar zcpt3 ang_refv (* hdd (cos angd)))
hipt3 (polar zcpt3 ang_refh hdd)
hipt4 (polar zcpt3 ang_refvv (* hdd (cos angd)))
)
(setq hiipt1 (polar zcpt3 ang_ref (/ d 2))
hiipt2 (polar zcpt3 ang_refv (* (/ d 2) (cos angd)))
hiipt3 (polar zcpt3 ang_refh (/ d 2))
hiipt4 (polar zcpt3 ang_refvv (* (/ d 2) (cos angd)))
)
(setq opt1 (polar zcpt2 ang_ref (/ d 2))
opt2 (polar zcpt2 ang_refv (/ (/ d 2) (cos angd)))
opt3 (polar zcpt2 ang_refh (/ d 2))
opt4 (polar zcpt2 ang_refvv (/ (/ d 2) (cos angd)))
)
(setq ipt1 (polar zcpt1 ang_ref (/ d 2))
ipt2 (polar zcpt1 ang_refv (* (/ d 2) (cos angd)))
ipt3 (polar zcpt1 ang_refh (/ d 2))
ipt4 (polar zcpt1 ang_refvv (* (/ d 2) (cos angd)))
)
(setq td (- d 2.736))
(setq iipt1 (polar zcpt ang_ref (/ td 2))
iipt2 (polar zcpt ang_refv (* (/ td 2) (cos angd)))
iipt3 (polar zcpt ang_refh (/ td 2))
iipt4 (polar zcpt ang_refvv (* (/ td 2) (cos angd)))
)
(setq lpt1 (polar zcpt ang_ref (+ (/ d 2) 2))
lpt3 (polar zcpt ang_refh (+ (/ d 2) 2))
)
(if (> ang ang_ref)
(progn
(setq ipt5 (polar ipt1 ang_refvv l2))
(setq ipt6 (polar ipt3 ang_refvv l2))
(setq ipt7 (polar ipt1 ang_refvv l3))
(setq ipt8 (polar ipt3 ang_refvv l3))
(setq lpt2 (polar zcpt ang_refvv (+ l4 (/ hd 2) 2.5)))
(setq lpt4 (polar zcpt ang_refv (+ (/ d 2) 2.5)))
)
(progn
(setq ipt5 (polar ipt1 ang_refv l2))
(setq ipt6 (polar ipt3 ang_refv l2))
(setq ipt7 (polar ipt1 ang_refv l3))
(setq ipt8 (polar ipt3 ang_refv l3))
(setq lpt2 (polar zcpt ang_refv (+ l4 (/ hd 2) 2.5)))
(setq lpt4 (polar zcpt ang_refvv (+ (/ d 2) 2.5)))
)
)
;;;;--------------------------------------------
;;;;draw bottom view
(progn
(setq sel_ent (ssadd))
(command "ellipse" "_c" zcpt1 ipt1 ipt2)
(setq sel_ent (ssadd (entlast) sel_ent))
(command "ellipse" "_c" zcpt iipt1 iipt2)
(setq sel_ent (ssadd (entlast) sel_ent))
(command "pline" ipt1 ipt5 "")
(setq sel_ent (ssadd (entlast) sel_ent))
(command "pline" ipt3 ipt6 "")
(setq sel_ent (ssadd (entlast) sel_ent))
(if (> ang ang_ref)
(progn
(command "arc" opt3 opt4 opt1)
(setq sel_ent (ssadd (entlast) sel_ent))
)
(progn
(command "arc" opt1 opt2 opt3)
(setq sel_ent (ssadd (entlast) sel_ent))
)
)
)
(progn
(command "linetype" "s" "hidden" "")
(setvar "cecolor" "yellow")
(command "ellipse" "_c" zcpt3 hipt1 hipt2)
(setq sel_ent (ssadd (entlast) sel_ent))
(command "pline" ipt5 hiipt1 "")
(setq sel_ent (ssadd (entlast) sel_ent))
(command "pline" ipt6 hiipt3 "")
(setq sel_ent (ssadd (entlast) sel_ent))
(command "pline" hipt1 hopt1 "")
(setq sel_ent (ssadd (entlast) sel_ent))
(command "pline" hipt3 hopt3 "")
(setq sel_ent (ssadd (entlast) sel_ent))
(if (> ang ang_ref)
(progn
(command "arc" opt1 opt2 opt3)
(setq sel_ent (ssadd (entlast) sel_ent))
(command "arc" hiipt3 hiipt4 hiipt1)
(setq sel_ent (ssadd (entlast) sel_ent))
(command "arc" hopt3 hopt4 hopt1)
(setq sel_ent (ssadd (entlast) sel_ent))
)
(progn
(command "arc" opt3 opt4 opt1)
(setq sel_ent (ssadd (entlast) sel_ent))
(command "arc" hiipt1 hiipt2 hiipt3)
(setq sel_ent (ssadd (entlast) sel_ent))
(command "arc" hopt1 hopt2 hopt3)
(setq sel_ent (ssadd (entlast) sel_ent))
)
)
(setvar "celtype" "bylayer")
(setvar "cecolor" "bylayer")
)
(progn
(command "linetype" "s" "center" "")
(setvar "cecolor" "red")
(command "pline" lpt1 lpt3 "")
(setq sel_ent (ssadd (entlast) sel_ent))
(command "pline" lpt2 lpt4 "")
(setq sel_ent (ssadd (entlast) sel_ent))
(setvar "celtype" "bylayer")
(setvar "cecolor" "bylayer")
)
;;;;------------------------------------------
;;;;translate drawing to block and make extend data
(mblk (strcat "AC_LXY_BLK" (itoa (getvar "useri2"))) zcpt sel_ent)
(setvar "useri2" (+ 1 (getvar "useri2")))
(setq xd (strcat apn_rep " " ;item number
"ZB" " " ;view flag
dd " " ;dim diameter
(len_round) " " ;dim length
"0" " " ;hidden flag
if_h_v " " ;type flag
mb " " ;meter or inch flag
stk " " ;stroke value
(rtos l 2 5) " " ;length
(rtos ang 2 5))) ;angle
(setq xd (list (list -3 (list "apn" (cons 1000 xd)))))
(mxdata (entlast) xd)
(setq apn_i (+ apn_i 1))
)
)
;--------------------------------
;reset "osmode" var
(setvar "osmode" os_old)
)
;*************************************** end of function ****************************************;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -