프로그램
캐드 분류

이 리습때문에 오스냅이 자동해제되는데, 봐주세요..

컨텐츠 정보

본문

오스냅 설정되었던게, 자꾸 해제되길래 확인해보니..

이 "선길이 합계"리습 사용후 자꾸 해제됩니다.
1. 오스냅 해제되는 문제 해결좀 부탁드립니다.
2. 글씨가 표시될때.. 모두 0도 방향으로 표시되는데.. 선과 같은 각도로 표시 가능한지?
  (수평선. 0도, 수직선은 90도..)
3. 선길이 표시시 번호순서 삭제 가능한지?
이상 세가지 도움 부탁드립니다.
그리고, 파일 첨부가 안되서.. 아래 리습내용 올립니다.
=========================================================
 ;;===========================================================
; 선택된 Line의 길이을 모두 더하는 명령(000822cho_i)
; 각 선택한 개체에 번호와 길이를 한곳에 적는다. (2010/07/24)
; 라인중간에 길이추가 (2010/08/01)
;;———————————————————–
(defun c:ll(/ ss en ens n n1 k k1 tot dis dis1 siz sizh bas bas2 bas3 cs1 x1 y1 t1 text_out os adoc space th ss cp tb)
   (prompt "nCommand: Line PPlus…")
   (vl-load-com)
   (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
   (setq space (vlax-get adoc (if (= (getvar "cvport") 1) 'paperspace 'modelspace)))
 
   ; 글자크기 지정
   (setq siz (getvar "TEXTSIZE"))
   (setq siz (getreal (strcat "n글자크기를 지정해 주세요 <" (rtos siz) ">: ")))
   (if (not siz) (setq siz (getvar "TEXTSIZE")))
   
   (setq sizh (/ siz 1.2))
   (setq cs1 (* siz 2))
   (setq k 0)
   (prompt "n더하고자하는 line을 선택-> ")
   ;(setq ss (ssget))
   (if (setq ss (ssget '((0 . "*LINE"))))
       (foreach x (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
         (setq cp (vlax-curve-getpointatdist x (* (vlax-curve-getdistatparam x (vlax-curve-getendparam x)) 0.5)))
         
         (setq t1 (itoa (+ 1 k)))
         (setq text_out (strcat t1 ") " (rtos (/ (vlax-get x 'Length) 1000) 2 2)))
         (setq tb (vla-addtext space text_out (vlax-3d-point cp) sizh))
         (vla-put-alignment tb 10)
         (vla-put-textalignmentpoint tb (vlax-3d-point cp))
         (vla-update tb)
         
         (setq k (+ 1 k))
       )
   )
   (mapcar 'vlax-release-object (list adoc space tb))
   (princ)
 
   (setq n1 (sslength ss))
   (setq n n1 k 0)
   (setq tot 0 dis 0 dis1 0)
   (setq text_all "")
   (setq bas (getpoint "전체데이터 화면표시 위치:"))
   (setq os (getvar "osmode"))
   (setvar "osmode" 0)
   (while (<= 1 n)
       (setq en (ssname ss k))
       (setq stype (cdr (assoc 0 (entget en))))
       (if (= stype "LINE")(progn
           (setq spt (cdr (assoc 10 (entget en))))
           (setq ept (cdr (assoc 11 (entget en))))
           (setq dis1 (distance spt ept))
           (setq dis (/ dis1 1000.0))(prin1 dis)
       ))(terpri)
       (if (= stype "LWPOLYLINE")(progn
           (command "area" "e" en)
           (setq spt (cdr (assoc 10 (entget en))))
           (setq dis1 (getvar "perimeter"))
           (setq dis (/ dis1 1000.0))
       ))
       
       ; Text Screen
       (setq k1 (+ 1 k))
       (setq t1 (itoa (+ 1 k)))
       (setq text_out (strcat t1 ")  "))
       (setq t1 (rtos dis 2 2))
       (setq text_out (strcat text_out t1))
       
       (setq x1 (car bas) y1 (cadr bas))
       (setq y1 (- y1 (* siz (* 2 (+ 1 k)))))
       (setq bas2 (list x1 y1))
       
       ;(command "text" "s" "STANDARD" spt sizh 0 t1)
       (command "circle" bas2 "d" cs1)
       (command "text" "m" bas2 siz 0 k1)
       (setq x1 (+ x1 (* siz 4)))
       (setq y1 (- y1 (/ siz 2)))
       (setq bas2 (list x1 y1))
       (command "text" "s" "STANDARD" bas2 siz 0 t1)
       (setq tot (+ tot dis))
       (setq n (- n 1))
       (setq k (+ k 1))
       
    )(terpri)
    
    (prompt "총")(prin1 n1)(prompt "개의 라인…")
    (prompt "전체길이 : ")(prin1 tot)(prompt " m")
    (prin1)
    
    (setq text_out "Total Length: ")
    (setq t1 (rtos tot 2 2))    ; 끝의숫자가 소숫점 자리수임 ( 0 ~ 4 가능 )
    (setq text_out (strcat text_out t1))
    (setq text_out (strcat text_out text_all))
    
   ; Text Screen
   (setq x1 (car bas) y1 (cadr bas))
   (setq y1 (+ y1 (* siz 2)))
   (setq bas2 (list x1 y1))
   (command "text" "s" "STANDARD" bas2 siz 0 text_out)
   (setvar "osmode=1″ os)
   (princ)
)
============================================
이상입니다.
고수님들의 도움 꼭 필요합니다.!!!

관련자료

댓글 2

nossida님의 댓글

감사합니다. 나머지 문제 해결해주실 고수님들 부탁드립니다.

닐스몹님의 댓글

마지막에 osmode=1를 osmode로 바꿔보시면 될 거 같습니다

여분필드1 여분필드2 여분필드3
전체 72 / 1 페이지
번호
제목
이름
알림 0