这里有一种方法。
- (defun drtxt (ar px rn / ls vl lt ht lb hb nr pt pr tx)
- ;;; (setq tx (strcat "Area: "
- ;;; (rtos (/ (getvar "area") 1000000) 2 2)
- ;;; " m2"
- ;;; )
- ;;; rn (getstring "\nRoom Name: ")
- ;;;
- ;;;
- ;;; )
- (setq tx (strcat (rtos (/ ar 1000000.0) 2 2) " m2")
- pr (strcat "P= " (rtos px 2 2))
- ls (list (cons 1 tx))
- vl (textbox ls)
- vl (cadr vl)
- lt (car vl)
- ht (cadr vl)
- vl (grread T)
- nr (car vl)
- pt (cadr vl)
- )
- (princ "\nInsert Point: ")
- (while (/= nr 3)
- (command "redraw")
- (grdraw pt (setq pt (polar pt 0 lt)) 7)
- (grdraw pt (setq pt (polar pt (* pi 0.5) ht)) 7)
- (grdraw pt (setq pt (polar pt pi lt)) 7)
- (grdraw pt (polar pt (* pi 1.5) ht) 7)
- (setq vl (grread T)
- nr (car vl)
- pt (cadr vl)
- )
- ) ;end while function
- (command "-mtext" pt "w" 0 rn tx pr "")
- (redraw)
- ) ; end drtxt function
- (defun c:pla ( / et obj ar px rn)
- (vl-load-com)
- (setvar "cmdecho" 0)
- (while (setq et
- (car
- (entsel "\nSelect polyline: ")
- ) ;end car function
- ) ;end setq function
- (setq obj (vlax-ename->vla-object et))
- (setq ar (vla-get-Area obj))
- (setq px (vla-get-Length obj))
- (setq rn (getstring "\nRoom Name: "))
-
- ;(command "area" "o" et)
- (drtxt ar px rn)
- ) ; wnd while funtion
- (setvar "cmdecho" 1)
- (princ)
- )
|