홀 명령어 hh7
축 명령어 sh7
이용해 보시고 수정할게있거나 더 간략히 코드로 수정가능하면 알려주세요
그리고 (setq num (vl-string-search “%%c” chk))에서 대문자 소문자 구분없이 인덱스 번호를 찾을수있을까요
2021-01-28 수야12님 대소문자 해결 업데이트
2021-02-02 %%c가 사라지는 문제 업데이트
(if (>= 0 (setq num (vl-string-search “%%C” (strcase chk)))) -> (if (= nil (setq num (vl-string-search “%%C” (strcase chk))))
=====================================================
hh7 파일
(defun c:hh7()
(princ “n —- 공차를 기록할 치수<Dimension> 또는 치수선을 선택하세요! —– : “)(princ)
(setq ob (ssget (list (cons 0 “DIMENSION”) )))
(setq num (sslength ob))
(setq n 0)
(while (ssname ob n)
(setq chk (ssname ob n))
(setq ent1 (entget chk))
(setq dimtol (cdr (assoc 42 ent1)))
(setq chk (cdr (assoc 1 ent1)))
(if (= nil (setq num (vl-string-search “%%C” (strcase chk))))
(progn
(cond
((> 3 dimtol) (entmod (subst (cons 1 “<>{}{\H0.71x;\C92;\S+0.01^ 0;}”) (assoc 1 ent1) ent1)) (princ))
((> 6 dimtol) (entmod (subst (cons 1 “<>{}{\H0.71x;\C92;\S+0.012^ 0;}”) (assoc 1 ent1) ent1)) (princ))
((> 10 dimtol) (entmod (subst (cons 1 “<>{}{\H0.71x;\C92;\S+0.015^ 0;}”) (assoc 1 ent1) ent1)) (princ))
((> 18 dimtol) (entmod (subst (cons 1 “<>{}{\H0.71x;\C92;\S+0.018^ 0;}”) (assoc 1 ent1) ent1)) (princ))
((> 30 dimtol) (entmod (subst (cons 1 “<>{}{\H0.71x;\C92;\S+0.021^ 0;}”) (assoc 1 ent1) ent1)) (princ))
((> 50 dimtol) (entmod (subst (cons 1 “<>{}{\H0.71x;\C92;\S+0.025^ 0;}”) (assoc 1 ent1) ent1)) (princ))
((> 80 dimtol) (entmod (subst (cons 1 “<>{}{\H0.71x;\C92;\S+0.03^ 0;}”) (assoc 1 ent1) ent1)) (princ))
(princ “치수초과”)(princ)
)
)
(progn
(setq num (vl-string-search “%%C” (strcase chk)))
(setq result (substr chk 1 (+ 5 num)))
(cond
((> 3 dimtol) (entmod (subst (cons 1 (strcat result “{}{\H0.71x;\C92;\S+0.01^ 0;}”)) (assoc 1 ent1) ent1)) (princ))
((> 6 dimtol) (entmod (subst (cons 1 (strcat result “{}{\H0.71x;\C92;\S+0.012^ 0;}”)) (assoc 1 ent1) ent1)) (princ))
((> 10 dimtol) (entmod (subst (cons 1 (strcat result “{}{\H0.71x;\C92;\S+0.015^ 0;}”)) (assoc 1 ent1) ent1)) (princ))
((> 18 dimtol) (entmod (subst (cons 1 (strcat result “{}{\H0.71x;\C92;\S+0.018^ 0;}”)) (assoc 1 ent1) ent1)) (princ))
((> 30 dimtol) (entmod (subst (cons 1 (strcat result “{}{\H0.71x;\C92;\S+0.021^ 0;}”)) (assoc 1 ent1) ent1)) (princ))
((> 50 dimtol) (entmod (subst (cons 1 (strcat result “{}{\H0.71x;\C92;\S+0.025^ 0;}”)) (assoc 1 ent1) ent1)) (princ))
((> 80 dimtol) (entmod (subst (cons 1 (strcat result “{}{\H0.71x;\C92;\S+0.03^ 0;}”)) (assoc 1 ent1) ent1)) (princ))
(princ “치수초과”)(princ)
)
)
)
(setq n (1+ n))
)
)
===============================================================
sh7 파일
(defun c:sh7()
(princ “n —- 공차를 기록할 치수<Dimension> 또는 치수선을 선택하세요! —– : “)(princ)
(setq ob (ssget (list (cons 0 “DIMENSION”) )))
(setq num (sslength ob))
(setq n 0)
(while (ssname ob n)
(setq chk (ssname ob n))
(setq ent1 (entget chk))
(setq dimtol (cdr (assoc 42 ent1)))
(setq chk (cdr (assoc 1 ent1)))
(if (= nil (setq num (vl-string-search “%%C” (strcase chk))))
(progn
(cond
((> 3 dimtol) (entmod (subst (cons 1 “<>{}{\H0.71x;\C92;\S 0 ^-0.01;}”) (assoc 1 ent1) ent1)) (princ))
((> 6 dimtol) (entmod (subst (cons 1 “<>{}{\H0.71x;\C92;\S 0 ^-0.012;}”) (assoc 1 ent1) ent1)) (princ))
((> 10 dimtol) (entmod (subst (cons 1 “<>{}{\H0.71x;\C92;\S 0 ^-0.015;}”) (assoc 1 ent1) ent1)) (princ))
((> 18 dimtol) (entmod (subst (cons 1 “<>{}{\H0.71x;\C92;\S 0 ^-0.018;}”) (assoc 1 ent1) ent1)) (princ))
((> 30 dimtol) (entmod (subst (cons 1 “<>{}{\H0.71x;\C92;\S 0 ^-0.021;}”) (assoc 1 ent1) ent1)) (princ))
((> 50 dimtol) (entmod (subst (cons 1 “<>{}{\H0.71x;\C92;\S 0 ^-0.025;}”) (assoc 1 ent1) ent1)) (princ))
((> 80 dimtol) (entmod (subst (cons 1 “<>{}{\H0.71x;\C92;\S 0 ^-0.03;}”) (assoc 1 ent1) ent1)) (princ))
(princ “치수초과”)(princ)
)
)
(progn
(setq num (vl-string-search “%%C” (strcase chk)))
(setq result (substr chk 1 (+ 5 num)))
(cond
((> 3 dimtol) (entmod (subst (cons 1 (strcat result “{}{\H0.71x;\C92;\S 0 ^-0.01;}”)) (assoc 1 ent1) ent1)) (princ))
((> 6 dimtol) (entmod (subst (cons 1 (strcat result “{}{\H0.71x;\C92;\S 0 ^-0.012;}”)) (assoc 1 ent1) ent1)) (princ))
((> 10 dimtol) (entmod (subst (cons 1 (strcat result “{}{\H0.71x;\C92;\S 0 ^-0.015;}”)) (assoc 1 ent1) ent1)) (princ))
((> 18 dimtol) (entmod (subst (cons 1 (strcat result “{}{\H0.71x;\C92;\S 0 ^-0.018;}”)) (assoc 1 ent1) ent1)) (princ))
((> 30 dimtol) (entmod (subst (cons 1 (strcat result “{}{\H0.71x;\C92;\S 0 ^-0.021;}”)) (assoc 1 ent1) ent1)) (princ))
((> 50 dimtol) (entmod (subst (cons 1 (strcat result “{}{\H0.71x;\C92;\S 0 ^-0.025;}”)) (assoc 1 ent1) ent1)) (princ))
((> 80 dimtol) (entmod (subst (cons 1 (strcat result “{}{\H0.71x;\C92;\S 0 ^-0.03;}”)) (assoc 1 ent1) ent1)) (princ))
(princ “치수초과”)(princ)
)
)
)
(setq n (1+ n))
)
)
업로드가 안되는관계로 코드를 올립니다
(if (= ass1 “DIMENSION”) = 치수만 선택옵션이 있으니 의미없는 구문입니다.
entsel에서 ssget으로 수정하면서 안바꿨네요 감사합니다
strcase 쓰니까 잘되네요 감사합니다