本帖最后由 yjr111 于 2012-3-31 18:13 编辑
手痒痒,我发一个吧 - (defun c:inplwbtj(/ e pt vla_e p1 plst n anglst stretchplst )
- ;;;;;;;;;;;;;;;;选多段线;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (setq e(car(setq ent(entsel"\n选择多段线")))
- pt(cadr ent)
- vla_e(vlax-ename->vla-object e)
- )
- ;;;;;;;对多段线有效;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (cond((= (vla-get-objectname vla_e) "AcDbPolyline")
- (setq plst (lst->3p
- (vlax-safearray->list(vlax-variant-value(vla-get-coordinates vla_e)))
- 2
- )
- )
- )
- ((= (vla-get-objectname vla_e) "AcDb2dPolyline")
- (setq plst (lst->3p
- (vlax-safearray->list(vlax-variant-value(vla-get-coordinates vla_e)))
- 3
- )
- )
- )
- )
- (tjwb)
- (princ)
- )
- (DEFUN TJWB(/ N SS STR_LST LST_STR STR1 SHUL STRLST )
- (SETQ SS(SSGET "wp" plst '((0 . "*TEXT"))))
- (SETQ N 0)
- (WHILE (< N (SSLENGTH SS))
- (SETQ LST_STR (APPEND LST_STR (LIST (CDR(ASSOC 1 (ENTGET (SSNAME SS N)))))))
- (SETQ N (1+ N))
- )
- (SETQ LST_STR (vl-sort LST_STR(function(lambda(x y) (< x y)))))
- (SETQ STRLSTLEN (LENGTH LST_STR))
- (WHILE LST_STR
- (SETQ SHUL(- STRLSTLEN(LENGTH(SETQ LST_STR(VL-REMOVE (SETQ STR1 (CAR LST_STR))LST_STR)))))
- (SETQ STRLST (APPEND STRLST (LIST(LIST STR1 SHUL))))
- (SETQ STRLSTLEN (LENGTH LST_STR))
- )
- (SETQ STRLST (append (list '("文本名称" "数量(个)"))STRLST ))
- (setq ff1 (getfiled "输出到excel" "文本统计" "CSV" 1))
- (setq ff2(open ff1 "a"))
- (setq i 0)
- (repeat (length STRLST)
- (SETQ lst_bzmp (nth i STRLST))
- (setq txt (vl-string-translate "( )" ",,,"(vl-princ-to-string lst_bzmp)))
- (setq txt (vl-string-subst "" "," txt))
- (write-line txt ff2)
- (setq i (1+ i))
- )
- (close ff2)
- )
- ;;;;;;函数:将点表num个一组重新组表,用于处理多段线顶点坐标;;;;;;;;;;;;;;;;;
- (defun lst->3p (lst num / n lst_new1 lst_newpoint)
- (setq n 0)
- (mapcar
- (function
- (lambda (x)
- (setq lst_new1 (append lst_new1 (list x)))
- (if (= (rem (1+ n) num) 0)
- (progn
- (setq lst_newpoint (append (list lst_new1) lst_newpoint))
- (setq lst_new1 nil)
- )
- )
- (setq n (1+ n))
- )
- )
- lst
- )
- lst_newpoint
- )
- (defun fixnum(bl)
- (setq bl (/(fix (* bl (expt 10.0 3)))(expt 10.0 3)))
- )
|