다시한번 문을 두드립니다.
;;;정첨추출(김희태님 소스참고가 아닌 그대로 사용)
(defun GetPolyVtx(EntList / VtxList AA X)
;폴리라인의 정점을 저장할 변수다.
(setq VtxList ‘())
;폴리라인이 2D 폴리라인인지 3D 폴리라인인지를 판단한다.
;2D 폴리라인과 3D 폴리라인은 형식이 틀리기 때문이다.
(IF (= “LWPOLYLINE” (CDR (ASSOC 0 EntList)))
; 2D 폴리라인일때의 정점을 추출한다.
; 2D 폴리라인은 10 번 코드가 정점정보이므로 10번만 추출하면 된다.
(mapcar ‘(lambda (x) (if (= 10 (car x)) (setq VtxList (append VtxList (list (cdr x))) ) ) ) EntList)
; 3D 폴리라인일때의 정점을 추출한다.
; 3D 폴리라인은 entnext 함수를 이용하여 정점을 정보를 알아내고
; 마지막 정점표기 “seqend” 가 나오면 정점추출을 끝낸다.
(PROGN
(SETQ AA (ENTGET(ENTNEXT (CDR (ASSOC -1 EntList)))))
(WHILE (/= “SEQEND” (CDR (ASSOC 0 AA)))
(setq VtxList (append VtxList (list (cdr (ASSOC 10 AA)))))
(SETQ AA (ENTGET(ENTNEXT (CDR (ASSOC -1 AA)))))
)
))
VtxList
)
(defun c:hr (/ )
(setq sl (car (entsel “n>>폴리라인을 선택: “)))
(setq vtx (cons 10 (GetPolyVtx (entget sl))))
여기까지해서 폴리라인을 선택해서 버텍스의 좌표값을 받았읍니다.
이것을 리스트(10 (x1 y1) (x2 y2) (x3 y3)…..))로 만들어서
아래와같이 했읍니다.
(setq st(ssget ‘((0 . “text”) (vtx))))
이렇게 하면 안되는건가요?
텍스트 이면서 버텍스에 있는 텍스트(숫자)를 선택해서,
최대값,최소값을 구하거나 또는 텍스트를 폴리라인에 평행하도록 회전을 하는 리습을 만들고자 합니다.
사실 콘솔창을 활용할줄 모르고 기냥 하나씩 바꾸어가면서 실행해보면서 하고있읍니다만 안되는군요. 내가 한거라곤 달랑 두줄뿐인데 왜이리 시간이 많이 걸리는지,,,,
읽어주셔서 감사드립니다.