📄 ep_pos_cir.lsp
字号:
(defun eppos(/ inspt screw_set ent_count i ent_nam
all_mxb_ent screw_count epin_count apn_count all_count
old_set old_set_nstd all_mxb_ent)
;------------------------------------------
;shut off command echo and set undo mark
;------------------------------------------
(setvar "cmdecho" 0)
(command "undo" "m")
;------------------------------------------
;save current system var
;------------------------------------------
;(setq os_old (getvar "osmode"))
(setq la_old (getvar "clayer"))
;------------------------------------------
;set user system var
;------------------------------------------
(if (not (tblsearch "layer" "pinID"))
(command "_.layer" "_new" "pinID" "_color" "red" "pinID" "_ltype" "continuous" "mxb" "")
(command "_.layer" "thaw" "pinID" "on" "mxb" "unlock" "mxb" "")
)
(setvar "clayer" "pinID")
(ini_useri2)
;------------------------------------------
;delete old bill table
;------------------------------------------
(if (not (tblsearch "appid" "mxb_standard"))
(regapp "mxb_stander")
)
(setq old_set (ssget "X" '((0 . "INSERT") (2 . "ep_pos"))))
(if old_set
(command "erase" old_set "")
)
(setq old_set (ssget "X" '((0 . "INSERT") (8 . "pinid"))))
(if old_set
(command "erase" old_set "")
)
(command "purge" "b" "ac_xyq_blk*" "n")
;------------------------------------------
;get bill table insert point
;------------------------------------------
(if (> (getvar "useri1") 0)
(progn
(setq inspt (getpoint "\nPlease get a insert point:"))
(if (not inspt)
(progn
(setq bpt (wtou (list (getvar "userr1") (getvar "userr2"))))
(if ent_sel_mxb
(setq i (+ (getvar "useri1") 1))
(setq i 0)
)
(setq inspt (polar bpt (* pi 0.5) (* 8 i)))
)
)
)
(while (not inspt)
(setq inspt (getpoint "\nPlease get a insert point:"))
)
)
;------------------------------------------
;Initializing
;------------------------------------------
(cso_tran)
(setvar "osmode" 0)
(princ "\nAnalyzing entity... \nBegin to create Epin bill table, please wait...")
(if (not (tblsearch "appid" "mxb_standard"))
(regapp "mxb_standard")
)
(setq all_mxb_ent nil
epin_count 0
all_count 0
pin_count 0
)
(setq inshdpt inspt)
(setq inspt (polar inspt (* pi 0.5) 8.0))
;---------------------------------------------------------
;Find out ejector pin entities and create ejector pin bill
;---------------------------------------------------------
(setq inspt (polar inshdpt (/ pi 2) (* 8 (+ 1 all_count))))
;(setq epin_set (ssget "X" '((0 . "INSERT") (-3 ("epin")))))
(setq epin_set (ssget))
(if epin_set
(progn
(setq ent_count (sslength epin_set))
(setq i 0)
(setq ip 0)
(setq inum 0)
(while (< i ent_count)
(setq ent_nam (ssname epin_set i))
(if (= "epin" (cdr (assoc '8(entget ent_nam))))
(progn
(epposdeal_epin)
(setq inum (+ inum 0))
)
)
(setq i (+ i 1))
)
(setq all_count (+ all_count epin_count))
(if (> epin_count 0)
(princ (strcat "\nFound" " " (itoa epin_count) " " "kinds of ejector pin!"))
)
)
(princ "\nNot found any ejector pin!")
)
;---------------------------------------------------------
;Find out pin entities and create pin bill table
;---------------------------------------------------------
(setq inspt(polar inshdpt (/ pi 2) (* 8 (+ 1 all_count))))
(setq pin_set (ssget "X" '((0 . "INSERT") (-3 ("pin")))))
(if pin_set
(progn
(setq ent_count (sslength pin_set))
;(setq ip 0)
;****************循环*************************
(while (< ip ent_count )
(setq ent_nam (ssname pin_set ip))
;
(epposdeal_pin)
(setq ip (+ ip 1))
)
(setq all_count (+ all_count pin_count))
(if (> pin_count 0)
(princ (strcat "\nFound" " " (itoa pin_count) " " "kinds of pin!"))
)
)
(princ "\nNot found any pin!")
)
;----------------------------------------------
;Reset system variable
;----------------------------------------------
(progn
(command "insert" "epid_head.dwg" inshdpt "" "" "")
(setq xd (list (list -3 (list "mxb_standard" (cons 1000 "mxb_head")))))
(mxdata (entlast) xd)
)
(ac_lxy_set)
(prin1)
)
;********************************** End of function ***********************************;
;************************* Begin create ejector pin bill table ************************;
(defun epposdeal_epin()
(setq cenpt(cdr (assoc '10(entget ent_nam))))
(setq ox(car cenpt))
(setq oy(car (cdr cenpt)))
(setq x (rtos (- ox x1) 2 3))
(setq y (rtos (- oy y1) 2 3))
(setq dia(cdr (assoc '41(entget ent_nam '("epin")))))
(setq epid (strcat "#" (itoa (+ inum 1))))
(epid_insert)
;(transtoeppos "epin")
(setq epin_data (cdr (cadr (cadr (assoc -3 (entget ent_nam '("epin")))))))
(setq epin_data (strtolst epin_data))
(progn
(setq rep (nth 0 epin_data)
mb (nth 6 epin_data)
type_old (nth 2 epin_data)
len_old (nth 3 epin_data)
zc (nth 1 epin_data)
if_h_v (nth 4 epin_data)
typ_old (nth 5 epin_data)
cot (strcat "%%c" type_old "X" len_old)
)
(cond
((= "N" typ_old)
(setq chin "直身顶针")
(setq desc "EJECTOR PIN")
)
((= "W" typ_old)
(setq chin "有托顶针")
(setq desc "STEP EJECTOR PIN")
)
)
)
(setq spec_var (strcat chin cot))
;(if (= "Z" zc)
(progn
;#####################################
(transtoeppos "epin")
(if (= 1 ins_lb)
(if (> (atoi (substr rep 2)) epin_count)
(setq epin_count (atoi (substr rep 2)))
)
)
)
;)
)
;********************************** End of function ***********************************;
;***************************** Begin create pin bill table ****************************;
(defun epposdeal_pin()
(setq cenpt(cdr (assoc '10(entget ent_nam))))
(setq ox(car cenpt))
(setq oy(car (cdr cenpt)))
(setq x (rtos (- ox x1) 2 3))
(setq y (rtos (- oy y1) 2 3))
(setq dia(cdr (assoc '41(entget ent_nam '("pin")))))
(setq epid (strcat "#p" (itoa (+ ip 1))))
(epid_insert)
(setq pin_data (cdr (cadr (cadr (assoc -3 (entget ent_nam '("pin")))))))
(setq pin_data (strtolst pin_data))
(progn
(setq rep (nth 0 pin_data)
mb (nth 6 pin_data)
type_old (nth 2 pin_data)
len_old (nth 3 pin_data)
zc (nth 1 pin_data)
if_h_v (nth 4 pin_data)
typ_old (nth 5 pin_data)
cot (strcat "%%c" type_old "X" len_old)
)
(setq chin "镶针")
(setq desc "EJECTOR PIN")
)
(setq spec_var (strcat chin cot))
;(if (= "Z" zc)
(progn
(transtoeppos "pin")
(if (= 1 ins_lb)
(if (> (atoi (substr rep 2)) pin_count)
(setq pin_count (atoi (substr rep 2)))
)
)
)
;)
)
;********************************** End of function ***********************************;
;********************************** Share function ************************************;
(defun mod_ent(ent_name mod_data / ent_data)
(setq ent_data (entget ent_name))
(setq ent_data (subst (cons 1 mod_data)
(assoc 1 ent_data)
ent_data)
)
(entmod ent_data)
(entupd ent_name)
)
;********************************** End of function ***********************************;
;********************************* Create bill table **********************************;
(defun transtoeppos(app_name / entn ent_sel ent_chin ent_qty
ent_rep ent_obv ent_cot ent_amt
ent_desc spec)
(setq ins_lb 1)
(if all_mxb_ent
(foreach entn all_mxb_ent
(progn
(setq ent_sel (handent entn))
(setq ent_rep (entnext ent_sel))
(setq ent_qty (entnext ent_rep))
(setq ent_chin (entnext ent_qty))
(setq ent_desc (entnext ent_chin))
(setq ent_mat (entnext ent_desc))
(setq ent_cot (entnext ent_mat))
(setq ent_obv (entnext ent_cot))
(setq spec (strcat (cdr (assoc 1 (entget ent_chin)))
(cdr (assoc 1 (entget ent_cot)))
)
)
(if (= rep (cdr (assoc 1 (entget ent_rep))))
(if (= spec_var spec)
;(add_qty)
(progn
(command "undo" "b")
(redraw ent_nam 3)
(*error* (strcat "\"" rep "\""
"编号中含两种不同规格零件"
"\n\n \"" spec "\"\n \"" spec_var "\"
\n\n" "请检查图纸.")
)
)
)
)
)
)
)
;(if (= 1 ins_lb)
(progn
;(setq n (- (atoi (substr rep 2)) 1))
(setq pti (polar (polar inspt (/ pi 2) (* (+ ip i) 8)) pi 140))
(setq xd (list (list -3 (list "mxb_standard" (cons 1000 (strcat app_name " " rep))))))
(command "insert" "ep_pos.dwg" pti "" "" "" epid chin x cot y)
(mxdata (entlast) xd)
;(if all_mxb_ent
; (setq all_mxb_ent (append all_mxb_ent (list (cdr (assoc 5 (entget (entlast)))))))
; (setq all_mxb_ent (list (cdr (assoc 5 (entget (entlast))))))
;)
; )
)
)
;********************************** End of function ***********************************;
(defun add_qty(/ qty_new)
(setq qty_new (itoa (+ 1 (atoi (cdr (assoc 1 (entget ent_qty)))))))
(mod_ent ent_qty qty_new)
(setq ins_lb 0)
)
;********************************** End of function ***********************************;
;********************************** End of function ***********************************;
(defun cso_tran(/ cso)
(setq cso(getpoint"选取基准点"))
(command "insert" "cso.dwg" cso "" "" "")
(command "ucs" "o" cso)
(setq x1(car cso))
(setq y1(car (cdr cso)))
)
;********************************** End of function ***********************************;
;******************** Main function start ************************;
(defun epid_insert( / sel_ent)
(setvar "osmode" 0)
(setq sel_ent (ssadd))
(setq insterpt (list (atof x) (atof y) 0))
(command "ucs" "")
(command "insert" "epid.dwg" cenpt dia "" "")
(setq sel_ent (ssadd (entlast) sel_ent))
;-----------------------------------------------------
;Dim specification and item number
;-----------------------------------------------------
(if (not (tblsearch "style" "lxy2"))
(command "-style" "lxy2" "txt" "" 0.6 "" "" "" "")
(setvar "textstyle" "lxy2")
)
(setq textpt (polar cenpt (*(/ pi 4) -1) (+ (/ dia 2) 2.5)))
(command "text" "j" "mc" textpt 2.5 0 epid)
(setq sel_ent (ssadd (entlast) sel_ent))
(command "text" "j" "ml" (polar textpt (* (/ pi 2) -1) 2) 1.0 0 (strcat "(X" x ))
(setq sel_ent (ssadd (entlast) sel_ent))
(command "text" "j" "ml" (polar textpt (* (/ pi 2) -1) 3.2) 1.0 0 (strcat "Y" y ")"))
(setq sel_ent (ssadd (entlast) sel_ent))
;(setvar "textstyle" st_old)
;-----------------------------------------------------
;Make screw block and add extend data in it
;-----------------------------------------------------
(mblk (strcat "AC_xyq_blk" (itoa (getvar "useri2"))) cenpt sel_ent)
(setq xd (strcat rep " " ;item number
"Z" " " ;view flag
epin_type " " ;dim diameter
epin_len " " ;dim length
if_h_v " " ;hidden flag
typ " " ;type flag
mb )) ;meter or inch flag
(setq xd (list (list -3 (list "epid" (cons 1000 xd)))))
(mxdata (entlast) xd)
(setvar "useri2" (+ 1 (getvar "useri2")))
(setvar "osmode" os_old)
)
;*************************************** End of function ****************************************;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -