本帖最后由 st788796 于 2014-11-2 14:33 编辑
 - (defun c:tt (/ _text ss lst i pr ar)
- (defun _text (p str1 str2 / txt1 txt2)
- (setq txt1 (xdrx_text_make p str1 (getvar "textsize") 0.))
- (xdrx_text_setvermode txt1 1)
- (xdrx_text_sethozmode txt1 1)
- (setq txt2 (xdrx_text_make p str2 (getvar "textsize") 0.))
- (xdrx_text_setvermode txt2 3)
- (xdrx_text_sethozmode txt2 1)
- )
- (if (setq ss (ssget '((0 . "lwpolyline"))))
- (progn
- (setq lst (mapcar '(lambda (x / box)
- (setq box (xdrx_entity_box x))
- (list (last box)
- (xdrx_getarea x)
- (xdrx_line_midp (car box) (caddr box))
- )
- )
- (xdrx_pickset->ents ss)
- )
- lst (xd::list:tablesort lst 0 3 1e-2)
- )
- (setq i 0
- pr "L"
- ar "A"
- )
- (setq
- lst (mapcar
- '(lambda (x / str1 str2)
- (mapcar
- '(lambda (a)
- (_text (last a)
- (strcat pr
- (itoa (setq i (1+ i)))
- "="
- (setq str1 (rtos (caadr a) 2 3))
- "m"
- )
- (strcat ar
- (itoa i)
- "="
- (setq str2 (rtos (cadadr a) 2 3))
- "m2"
- )
- )
- (list (itoa i) str1 str2)
- )
- x
- )
- )
- lst
- )
- )
- (if (setq p (getpoint "\nPosition: "))
- (xd::table:make
- (cons '("编号" "周长(m)" "面积(m2)") (apply 'append lst))
- p
- 8.
- 4.
- )
- )
- )
- )
- (princ)
- )
Lisp-lib 函数库的 xd::table:make 有个函数错误,用下面的
 - (defun XD::Table:Make (lst p RowHeight height
- / tf tb i
- _ColumnWidths _widthL _spa
- maxCol
- )
- (defun _ColumnWidths (lst h mL / nl)
- (setq nL (mapcar '(lambda (x)
- (XD::List:FillGap x " " mL)
- )
- lst
- )
- )
- (mapcar '(lambda (x)
- (XD::String:ActualMaxWidth x "" h 1.)
- )
- (apply 'mapcar (cons 'list nL))
- )
- )
- (if (or (null height) (= height ""))
- (setq height (* RowHeight 0.3))
- )
- (if (setq tf (= (type (car lst)) 'REAL))
- (setq _widthL (car lst)
- lst (cdr lst)
- maxCol (apply 'max (mapcar 'length lst))
- )
- (setq maxCol (apply 'max (mapcar 'length lst))
- _WidthL (_ColumnWidths lst height maxCol)
- )
- )
- (setq tb (xdrx_table_make
- p
- (1+ (length lst))
- RowHeight
- maxCol
- 10.
- )
- _spa (* 6 (xdrx_table_horzCellMargin tb))
- )
- (XD::Table:Begin tb)
- (xdrx_table_SetTextHeight tb 1 3.0)
- (xdrx_entity_scale
- tb
- p
- (/ RowHeight (xdrx_table_rowheight tb 1))
- )
- (setq i -1)
- (mapcar '(lambda (x)
- (xdrx_table_setcolumnwidth tb (setq i (1+ i)) x)
- )
- (mapcar '(lambda (a) (+ _spa a)) _WidthL)
- )
- ;;(xdrx_table_setrowheight tb RowHeight)
- (xdrx_table_settextheight tb 7 height)
- (xdrx_table_setalignment tb 7 5)
- (xdrx_table_SetGridVisibility tb 2 41 nil)
- (setq i 0)
- (mapcar
- '(lambda (x / j)
- (setq j -1
- i (1+ i)
- )
- (mapcar '(lambda (a)
- (xdrx_table_settextstring tb i (setq j (1+ j)) a)
- )
- x
- )
- )
- lst
- )
- (XD::Table:End tb)
- tb
- )
|