오토캐드] 다각형 도심(Centroid) 찍어주는 리습(Lisp)

오토캐드] 다각형 도심(Centroid) 찍어주는 리습(Lisp)

 오토캐드에서 Region 객체는 "massprop" 명령어로 단면적(Area), 외곽선 길이(Perimeter), 도심(Centroid), 단면2차모멘트(Moments of inertia) 등을 확인할 수 있습니다. 

 위 그림은 정삼각형을 Region으로 만들어 massprop로 확인한 예입니다. 각 단면성질은 수치로 나타내어 지는데요, 그 중 도심(Centroid)을 보면 X, Y 좌표로 값이 나옵니다. 캐드 그림상으로 도심을 표시하고 싶다면 point 나 circle 명령에서 이 좌표를 입력하면 가능합니다. 하지만 텍스트를 일일이 쳐야하는 번거로움이 있죠.

 

 아래 리습을 이용하면 Region 객체 도심을 Point로 바로 찍을 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
(defun c:rcen(/ ent pcen) 
(vl-load-com) 
(setq ent (car (entsel "\n Select Region: "))) 
(if (and ent (= (vlax-get-property (vlax-ename->vla-object ent) 'Objectname) "AcDbRegion")) 
(progn 
(setq pcen (vlax-safearray->list (vlax-variant-value (vla-get-Centroid (vlax-ename->vla-object ent))))) 
(print pcen) 
(entmake (list (cons 0 "point") (cons 410 (getvar "ctab")) (cons 10 pcen))) 
(princ "\n Object not selected or is not Region!") 
(princ) 
)
cs

 긁어서 메모장에 붙인 후 파일명을 rcen.lsp 로 만들어서 appload 로 로딩시키면 됩니다. 명령어는 rcen 입니다.

 

  rcen을 치면 "Select Region" 이라고 나옵니다. 객체를 선택해 주면 도심에 Point가 찍히고 명령어창에 도심 좌표도 보여집니다.

캐드 그림상으로 도심을 확인할 수 있으니 꽤 유용하게 쓸 수 있습니다. 활용해 보시기 바랍니다.(아래는 다각형 하나더 그려서 확인해 본 예입니다)

댓글

Designed by JB FACTORY