지시선 정렬 LISP 관련 문의드립니다.

2016.03.11 13:37

asami486 조회 수:115

안녕하세요.

제가 인터넷에서 지시선 정렬 LISP을 받았는데,


내용은 아래와 같습니다.


----------------------------------------------------------------------------------------------------------------------------------------------------------------


;;; aligns the landings of selected 3 point leaders to a picked point or selection of leader
;;; and makes landing horizontal (if not already)
(defun c:dd (/ c# crds doc e ins newpt obj ss txt x y sel)
  (vl-load-com)
  (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  (initget 0 "Leader PickPoint")
  (if (= (cond ((getkword
                  (strcat "\n Align by [Leader/PickPoint] <Leader>: ")
                )
               )
               ("Leader")
         )
         "Leader"
      )
    (and (setq e (car (entsel "\nSelect leader for alignment: ")))
         (setq x (cadr (assoc 10 (reverse (entget e)))))
    )
    (setq x (car (getpoint "\nSelect point for alignment: ")))
  )
  (if (and x (setq ss (ssget '((0 . "leader")))))
    (progn (vla-endundomark doc)
           (vla-startundomark doc)
           (foreach l (vl-remove e
                                 (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
                      )
             (setq obj  (vlax-ename->vla-object l)
                   crds (vlax-get obj 'coordinates)
                   c#   (length crds)
             )
             (if (and (= c# 9) ;if leader has 3 points and /= x coord
                      (not (equal x (nth (- c# 3) crds) 0.0001))
                 )
               (progn (setq y     (nth (- c# 5) crds) ;new y coord to ensure flat landing
                            newpt (list x y (nth (1- c#) crds))
                      )
                      (vlax-put obj
                                'coordinates
                                (append (reverse (cdddr (reverse crds))) newpt)
                      )
                      (vla-update obj)
                      (and (setq txt (vl-catch-all-apply ;has text attached to leader
                                       'vlax-ename->vla-object
                                       (list (cdr (assoc 340 (entget l))))
                                     )
                           )
                           (not (vl-catch-all-error-p txt)) ;check for invalid ename
                           (setq ins (vlax-get txt 'insertionpoint))
                           (vlax-put txt
                                     'insertionpoint
                                     (polar (list x (cadr ins) (caddr ins))
                                            (if (> x (nth (- c# 3) crds))
                                              0.
                                              pi
                                            )
                                            (if (zerop (getvar 'tilemode))
                                              (vla-get-textgap obj)
                                              (* (getvar 'dimscale) (vla-get-textgap obj))
                                            )
                                     )
                           )
                           (vla-update txt)
                      )
               )
             )
           )
           (vla-endundomark doc)
    )
  )
  (princ)
)


------------------------------------------------------------------------------------------------------------------------------------------------------------


이 리습이 3점인 지시선에는 적용이 되는데,

2점인 지시선에서는 적용이 안되더라구요.

어떻게 2점까지 쉽게 추가할 수 있는 방법은 없는 것입니까?!

부탁드립니다!

번호 제목 글쓴이 날짜 조회 수
공지 ★ 드림플러스 질문은 메일 또는 홈페이지에 부탁합니다 ★ 아저씨 2017.05.16 2774
공지 제목이 엉망이면 답변달지 않습니다. [1] 아저씨 2014.04.04 23853
공지 순수 캐드 질문은 고캐드로 아저씨 2013.05.28 68640
공지 질문 답변 게시판을 만들었습니다. 아저씨 2013.02.09 74943
1369 숨겨진 모듈의 컴파일 오류(윈도우7 64비트, 오토캐드 2014) [1] 언제나 2014.08.20 1651
1368 오토캐드2010사용중메뉴막대에드림메뉴가안생김 [4] 엔젤킴 2014.08.20 898
1367 캐드에서 엑셀처럼 수식기능이 있나요 [1] taegon 2014.08.21 482
1366 form 등록/변경 과정에서 오류가 있어 질문을 드립니다. [1] 공룡 2014.08.22 549
1365 사용 오류 [1] 쏘온 2014.08.24 1111
1364 다중플롯누르면 숨겨진 모듈에서 컴파일 오류가 발생했습니다: FormMPL (캐드 초보) [1] 초보는힘들어 2014.08.25 1072
1363 윈도우 64비트 드림이용 질문이요 [1] 큰놈 2014.08.25 583
1362 다중 플로 출력시 [1] 토목쟁이 2014.08.25 454
1361 도면 폼에 번호 쓰기(ADN)도 현재 다중플롯에서 처럼 배치순서별로 되게 가능한가요? [2] 가돌 2014.08.25 359
1360 오토캐드LT 2015버전에 드림은 전혀 설치가 안되는지요? [3] 거부기 2014.08.25 593
1359 오토캐드 2011 64비트에서 드림사용 질문입니다. [1] 표준모델 2014.08.27 683
1358 도면폼에 번호쓰기에서 질문이있습니다. [2] 용준 2014.08.28 436
1357 드림이 vba 에러 뜨면서 안 되네요. ㅠㅠ [2] lf3 2014.08.29 537
1356 드림 계산기 오류 [2] 하야로비 2014.09.01 442
1355 라인이나 호에 일정간격으로 일정거리만큼 짜를수 잇나요? [1] 홍순석 2014.09.01 318