윈도우 7 64비트
캐드버전 2011 쓰고 있습니다…
현재 사용된 블럭의 이름을 알고 싶은데요.
리습으로 작성되는 블럭이름이 중첩되는지 미리 검토하기를 원합니다.
(defun c:bo1 (/ bas)
(setq m (strcase (getstring ” material A<Aluminum> S<Steel>”)))
(setq w (getreal ” W size “))
(setq h (getreal ” H size “))
(setq t (getreal ” T size “))
(setq bas (getpoint ” base point “))
(setq bn (strcat m (rtos w 2 0)(rtos h 2 0)(rtos t 2 0)))+
(setq oss (getvar “osmode”))
(setvar “osmode” 0)
(command “insert” bn bas “” “”)
(setvar “osmode” oss)
)
(defun c:bo2 (/ bas)
(setq m (strcase (getstring ” material A<Aluminum> S<Steel>”)))
(cond ((= m “A”)
(command “layer” “m” “extru” “c” “3” “” “”)
(setq w (getreal ” W size “))
(setq h (getreal ” H size “))
(setq t (getreal ” T size “))
(setq bas (getpoint ” base point “))
(setq bn (strcat m (rtos w 2 0)(rtos h 2 0)(rtos t 2 0)))
(setq oss (getvar “osmode”))
(setvar “osmode” 0)
;——————————————————————————-
(setq bas1 (polar bas (dtr 0) t)
p1 (polar bas (dtr 90) (/ h 2))
p2 (polar bas (dtr 270) (/ h 2))
p3 (polar p1 (dtr 0) w)
p4 (polar p2 (dtr 0) w)
p5 (polar bas1 (dtr 90) (- (/ h 2) t))
p6 (polar bas1 (dtr 270) (- (/ h 2) t))
p7 (polar p5 (dtr 0) (- w (* t 2)))
p8 (polar p6 (dtr 0) (- w (* t 2)))
)
;——————————————————————————-
(command “layer” “m” “extru” “c” “3” “” “”)
(command “pline” p1 p2 p4 p3 “c”) (setq e1 (entlast))
(command “pline” p5 p6 p8 p7 “c”) (setq e2 (entlast))
(command “layer” “m” “Defpoints” “c” “66” “” “”)
(command “line” p1 p4 “”) (setq e3 (entlast))
(command “line” p2 p3 “”) (setq e4 (entlast))
(command “layer” “m” “extru” “c” “3” “” “”)
;——————————————————————————-
(command “block” bn bas e1 e2 e3 e4 “” “”)
(prompt “n<Rotation angle > 90 ^ 180 < 270 >/Reference :”)
(command “insert” bn bas “” “”)
(setvar “osmode” oss)
)
((= m “S”)
(command “layer” “m” “STEEL” “c” “7” “” “”)
(setq w (getreal ” W size “))
(setq h (getreal ” H size “))
(setq t (getreal ” T size “))
(setq bas (getpoint ” base point “))
(setq bn (strcat m (rtos w 2 0)(rtos h 2 0)(rtos t 2 0)))
(setq oss (getvar “osmode”))
(setvar “osmode” 0)
;——————————————————————————-
(setq bas1 (polar bas (dtr 0) t)
p1 (polar bas (dtr 90) (/ h 2))
P1_1 (polar p1 (dtr 0) (* t 2))
P1_2 (polar p1 (dtr 270) (* t 2))
p2 (polar bas (dtr 270) (/ h 2))
p2_1 (polar p2 (dtr 90) (* t 2))
p2_2 (polar p2 (dtr 0) (* t 2))
p3 (polar p1 (dtr 0) w)
p3_1 (polar p3 (dtr 180) (* t 2))
p3_2 (polar p3 (dtr 270) (* t 2))
p4 (polar p2 (dtr 0) w)
p4_1 (polar p4 (dtr 90) (* t 2))
p4_2 (polar p4 (dtr 180) (* t 2))
p5 (polar bas1 (dtr 90) (- (/ h 2) t))
P5_1 (polar p5 (dtr 0) t)
P5_2 (polar p5 (dtr 270) t)
p6 (polar bas1 (dtr 270) (- (/ h 2) t))
P6_1 (polar p6 (dtr 90) t)
P6_2 (polar p6 (dtr 0) t)
p7 (polar p5 (dtr 0) (- w (* t 2)))
P7_1 (polar p7 (dtr 180) t)
P7_2 (polar p7 (dtr 270) t)
p8 (polar p6 (dtr 0) (- w (* t 2)))
P8_1 (polar p8 (dtr 90) t)
P8_2 (polar p8 (dtr 180) t)
)
;——————————————————————————-
(command “layer” “m” “steel” “c” “7” “” “”)
(command “pline” p1_2 p2_1 “a” p2_2 “l” p4_2 “a” p4_1 “l” p3_2 “a” p3_1 “l” p1_1 “a” p1_2 “cl”) (setq e1 (entlast))
(command “pline” p5_2 p6_1 “a” p6_2 “l” p8_2 “a” p8_1 “l” p7_2 “a” p7_1 “l” p5_1 “a” p5_2 “cl”) (setq e2 (entlast))
(command “REGION” e1 “”)(setq c1 (entlast)) (command “REGION” e2 “”)(setq c2 (entlast))
(command “SUBTRACT” c1 “” c2 “”) (setq c3 (entlast))
(setq #LTSCALE (getvar “LTSCALE”))
(setvar “LTSCALE” 1)
(setq hpx “steel”)(setq hpsx 2)(setq dgr 0)
(command “-hatch” “p” hpx hpsx dgr “s” c3 “”)
(setvar “LTSCALE” #LTSCALE)
(command “layer” “m” “steel” “c” “1” “” “”)
(setq c4 (entlast))
(command “layer” “m” “Defpoints” “c” “66” “” “”)
(command “line” p1 p4 “”) (setq e3 (entlast))
(command “line” p2 p3 “”) (setq e4 (entlast))
(command “layer” “m” “extru” “c” “3” “” “”)
;——————————————————————————-
(command “block” bn bas c1 c2 c4 e3 e4 “” “”)
(prompt “n<Rotation angle > 90 ^ 180 < 270 >/Reference :”)
(command “insert” bn bas “” “”)
(setvar “osmode” oss)
)
)
)
위의 리습은 알루미늄과 스틸 파이프를 그리고 블럭으로 만드는 리습입니다.
만다는중에 bo1 의 명령어와 bo2 의 명령어를 합쳐야 겠다는 생각이들어서요…
bo1 은 이미 해당 블럭이 만들어져있다면 그것을 쓰는것이고요 bo2 는 새로 작성하는 것입니다.
bo2의 마지막 블럭 이름은 해당 파이프 재질 크기로 이름이 되어있는대요…
bo1 에서 해당 크기를 이력했을때 중첩되는 블럭이름이 없으면 bo2의 명령이 자동 실행되어 해당 크기의 블럭을 만들고 싶습니다.
그런데… 중첩되는 블럭이 있는지 비교하는 방법을 모르겠습니다…
케드에서 블럭의 이름들을 나열하여 변수로 지정하고 서로 비교해보는 방법이나 해당 이름을 검색하는방법을 사용하면 될것같은데요… 블럭의 이름을 나열하여 변수로 지정하는 방법을 모르겠습니다…
고수님들의 도움을 기다리고 있는 하수입니다….
블록이름 검색하는 방법을 아무리 찾아도 나오지를 않네요… 부탁드리겠습니다….
(추가로 한가지…. C:UsersMH-NOTEDesktop1234 라는 폴더에 123.dwg 라는 파일이 있는지 검색할수있는 방법도 부탁좀 드리겠습니다… 감사합니다 ㅠ)
(Tblsearch “block” blockname)
감사합니다 ~ 폴더 내부 파일서치는 어떻게 해야하나요…?ㅠ
Findfile입니다
완료된 lisp 한번 보여주실수있나요??
배관직업 하다보니 파이프 관련 lisp 어떤건지 확인하고 싶네요 ^^