⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 apn_new.lsp

📁 plc设计编程软件
💻 LSP
📖 第 1 页 / 共 3 页
字号:
  (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 + -