길이표기 리습에
L :
이라는 글자를 앞에 추가하려고 합니다.
혼자해보려고 하는데 잘 안되네요
도와주셔요
(DEFUN C:ds(/ eg egl n l ne entname entn p1 p2 l2 radi l_ength)
(SETVAR “cmdecho” 0)
(SETQ EG (SSGET))
(SETQ EGL (SSLENGTH EG))
(SETQ N 0)
(setq l 0)
(setq ne 0)
(WHILE (< N EGL)
(SETQ ENTN (SSNAME EG N))
(SETQ ENT (ENTGET ENTN))
(setq entname (assoc 0 ent))
(setq entname (cdr entname))
(if (= entname “LINE”)
(progn
(SETQ p1 (ASSOC 10 ENT))
(SETQ p2 (ASSOC 11 ENT))
(SETQ p1x (car (CDR p1)))
(SETQ p1y (CaDdR p1))
(SETQ p2x (car (CDR p2)))
(SETQ p2y (CaDdR p2))
(setq l2 (sqrt (+ (expt (- p1x p2x) 2) (expt (- p1y p2y) 2))))
(setq l (+ l l2))
(setq ne (+ ne 1))
)
)
(if (= entname “CIRCLE”)
(progn
(SETQ p1 (ASSOC 40 ENT))
(SETQ radi (cdr p1))
(setq l2 (* 2 (* pi radi)))
(setq l (+ l l2))
(setq ne (+ ne 1))
)
)
(if (= entname “ARC”)
(progn
(SETQ p1 (ASSOC 40 ENT))
(SETQ radi (cdr p1))
(SETQ p1 (ASSOC 50 ENT))
(SETQ p2 (ASSOC 51 ENT))
(SETQ p1R (CDR p1))
(SETQ p2R (CDR p2))
(SETQ TH (ABS (- P1R P2R)))
(setq l2 (* RADI TH))
(setq l (+ l l2))
(setq ne (+ ne 1))
)
)
(if (or (= entname “LWPOLYLINE”)(= entname “POLYLINE”))
(progn
(command “area” “e” entn)
(setq l2 (getvar “perimeter”))
(setq l (+ l l2))
(setq ne (+ ne 1))
)
)
(SETQ N (+ 1 N))
)
(princ “n >>>>> “)
(if (> egl ne)
(progn
(princ ne)(princ ” of “)(princ egl)
(princ ” objects are measured // “)
)
)
(princ ” Total length is “)
(setq l_ength (rtos (/ l 1000) 2 2))
(prin1 l_ength)
(setq pt (getpoint “nText Point: “))
(setq h (getvar “textsize”))
(prompt “nText Height: “)
(princ H)
(princ ” : “)
(setq z (getdist))
(if z
(setq h z)
)
(command “text”
(setq z pt)
(setq z h)
(setq z 0.0)
(setq z l_ength)
)
(setvar “cmdecho” 1)
(setvar “blipmode” 1)
(princ)
)
공유
아래도 같은 문의가 있었네요. 아래글에서 답변 쓰신분 처럼 (setq z (strcat “L : ” l_ength)) 이렇게 해도 되겠는데… 근데… 뒤에 더 쓰이는 것도 아닌데… COMMAND 문에 Z 변수는 왜 저리한 것인지???
아래분이 말씀하신것처럼 (setq z (strcat “L : ” l_ength)) 로 바꾸었으나, 계속 같은수치가 나오더라고요 실제 수치하고는 다른.. 애러가 생겼다 생각해서 다시질문 드렸습니다.
알려주신방법으로도 같은수치가 반복해서 출력이 되네요…. 이게 왜러는지
첫번째 측정했던 치수가 다른 길이에도 같은값으로 출력이 되네요.
그냥 간단히 DS리습인데 도면에 삽입하겠습니까? 이런문구들 다 안나오고
삽입할위치 클릭에 문자크기만 입력하면되는 리습으로 사용하고싶은데 방법이없을까요?
일단 기본 LISP 함수만으로 만들어 봤습니다.
원하시는 결과를 얻을수 있으려나 모르겠네요.
주석 달아놨으니 참고 하십시오.