기존에 가지고 있던 리습에서 좌표값만 수정해놓았습니다.
그런데 UNIT WEIGHT는 적용이 안되고 단일 개체 WEIGHT만 계산이 되고있습니다.
아무리 해봐도 잘안되서 고수님께 문의드립니다.
(defun C:CSP (/ ss szss qtss qtmin qtmax szmin szmax unitp totalp olderr
i ii fa en ed szed qty sz sp uwt twt x1 x2 x3 x4)
(setq olderr *error
*error* wterr
)
(if (setq ss (ssget))
(progn
(command “layer” “S” “TXT” “”)
(command “COLOR” “bylayer” “”)
(setq old_snap (getvar “osmode”))
(setvar “osmode” 0)
(SETVAR “LUPREC” 1)
(setvar “dimzin” 0)
(setq gap 0)
(setq i -1
wtn 0
fa (getvar “dimscale”)
llpx (car (getvar “limmin”))
urpx (car (getvar “limmax”))
paper (rem (- urpx llpx) 594)
qtss (ssadd)
szss (ssadd)
)
(if (zerop paper)
(setq qtmin (* fa (+ gap 720.7)) ;Quantity x-coordinates
qtmax (* fa (+ gap 735.7))
szmin (* fa (+ gap 735.7)) ;Description x-coordnates
szmax (* fa (+ gap 779.7))
; unitp (* fa (+ gap 779.7)) ;Unit weight text end point
totalp (* fa (+ gap 803.7)) ;Total weight text end point
)
(setq qtmin (* fa (+ gap 720.7)) ;Quantity x-coordinates
qtmax (* fa (+ gap 735.7))
szmin (* fa (+ gap 735.7)) ;Description x-coordnates
szmax (* fa (+ gap 779.7))
unitp (* fa (+ gap 779.7)) ;Unit weight text end point
totalp (* fa (+ gap 803.7)) ;Total weight text end point
)
)
(while
(setq en (ssname ss (setq i (1+ i))))
(setq ed (entget en))
(if (= “TEXT” (cdr (assoc 0 ed)))
(cond
((> szmin (setq sp (cadr (assoc 10 ed)))) )
((< szmim sp szmax) (ssadd en szss))
((< qtmin sp qtmax) (ssadd en qtss))
)
)
)
(setq i -1)
(repeat (setq szn (sslength szss))
(setq szed (entget (ssname szss (setq i (1+ i))))
sz (strcase (setq orgsz (cdr (assoc 1 szed))))
sp (caddr (assoc 10 szed))
)
(cond
((wcmatch sz “H*X*X*X*X*”) (kgperm x4 1 “HBEAM.DAT”)) ; Calculation ok
((wcmatch sz “L*X*X*X*”) (kgperm x3 2 “ANGLE.DAT”)) ; Calculation ok
((wcmatch sz “C*X*X*X*X*”) (kgperm x4 3 “CHANEL.DAT”)) ; Calculation ok
((wcmatch sz “I*X*X*X*X*”) (kgperm x4 4 “IBEAM.DAT”)) ; Calculation ok
((wcmatch sz “T*X*X*X*X*”) (kgperm x4 5 “T-BEAM.DAT”)) ; Calculation ok
((wcmatch sz “PL-*X*X*”) (xptrs 4) (plate)) ; Calculation ok
((wcmatch sz “F.B *X*X*”) (xptrs 5) (plate)) ; Calculation ok
((wcmatch sz “R.B %%C*X*”) (xptrs 8) (rd_bar)) ; Calculation ok
((wcmatch sz “CHK’D PL-*3.2*X*”) (xptrs 10) (chplate1)) ; Calculation ok
((wcmatch sz “CHK’D PL-*4.5*X*”) (xptrs 10) (chplate2)) ; Calculation ok
((wcmatch sz “CHK’D PL-*6*X*”) (xptrs 10) (chplate3)) ; Calculation ok
((wcmatch sz “EXP’D METAL-*2.3*X*”) (xptrs 10) (explate1)) ; Calculation ok
((wcmatch sz “EXP’D METAL-*6*X*”) (xptrs 10) (explate2)) ; Calculation ok
((wcmatch sz “EXP’D METAL-*4.5*X*”) (xptrs 10) (explate3)) ; Calculation ok
((wcmatch sz “LINER*X*X*”) (xptrs 7) (LINER)) ; Calculation ok
((wcmatch sz “RUBBER*X*X*”) (xptrs 8) (RUBBER)) ; Calculation ok
((wcmatch sz “PIPE *AX*”) (xptrs 5) (sgp_pipe)) ; Calculation ok
((wcmatch sz “SQ*X*X*”) (xptrs 4) (plate))
((wcmatch sz “CHK*X*X*”) (xptrs 4) (plate))
((wcmatch sz “W*X*X*”) (xptrs 2) (w_shap))
((wcmatch sz “G*X*X*X*”) (xptrs 2) (gratg))
((wcmatch sz “SERR.G*X*X*X*”) (xptrs 7) (serrgt))
((wcmatch sz “P*”%%*X*SC*X*”) (xptrs 2) (sch_p))
((wcmatch sz “P*”%%*X*”X*”) (xptrs 2) (in_pip))
((wcmatch sz “P*%%*X*X*”) (xptrs 2) (mm_pip))
((wcmatch sz “DIA*X*%%*”) (xptrs 4) (rd_bar))
((wcmatch sz “FOLDED PL*X*X*”) (xptrs 10) (folded))
((wcmatch sz “IPET*X*”) (xptrs 5) (xrefkg “HIBERNIA.KGM”))
((wcmatch sz “[IU]P[EN]*X*,HE[AB]*X*”) (xptrs 4) (xrefkg “HIBERNIA.KGM”))
((wcmatch sz “HSS*X*X*X*”) (xptrs 4) (xrefkg “HIBERNIA.KGM”))
((wcmatch sz “2-L*X*X*”) (xptrs 4) (xrefkg “BPF.KGM”))
(t (princ (strcat “n” orgsz ” is not standard pattern.”)))
)
(if uwt
(progn
(if (< 1 uwt) (setq uwt (atof (rtos uwt 2 1))))
(setq qty 1 ii -1)
(while ii
(if (setq en (ssname qtss (setq ii (1+ ii))))
(progn
(setq ed (entget en))
(if (< (* fa -2) (- sp (caddr (assoc 10 ed))) (* fa 2))
(setq qty (atoi (cdr (assoc 1 ed))) ii nil)
)
)
(setq ii nil)
)
)
(if (= qty 1)
(weight totalp (if (> 0.1 uwt) “-” (rtos uwt 2 1)))
(progn
(weight unitp (if (> 0.1 uwt) (rtos uwt 2 1) (rtos uwt 2 1)))
(weight totalp
(if (> 0.1 (setq twt (* qty uwt))) “-”
(if (> 0.1 uwp) (rtos twt 2 1) (rtos twt 2 1))
)
)
)
)
(setq wtn (1+ wtn))
)
)
(setq uwt nil kgm nil)
)
)
(princ “Entities not selected.”)
)
(princ (strcat “nSelected Descriptions is ” (itoa szn) ” items.”
“nCalculated Descriptions is ” (itoa wtn) ” items.”
)
)
(setq *error* olderr)
(setvar “osmode” old_snap)
(command “layer” “S” “txt” “”)
(command “-style” “romans” “” kck 0.75 “” “” “” “”)
(prompt “n Auto Steel Weight Program [Rev. 2012. 08. 30.]”)
(prompt “n ※ 주의사항 ※ 형강류 규격은 China GB Standard 임. “)
(princ)
)
;; Program End !!!!
http://cafe.naver.com/sbbom 이곳에 한번 가보세요 철골 관련 bom프로그램이 잘 만들어져 있네요