 - ;;使用例,总计图块并在侧展示略图
- ;;By LUCAS(龙龙仔)
- (defun C:STATISTICS (/ BLKS INSPT LST LST1 LSTT N
- NAME OBJECTID ROW SS ST SUM
- TABLE
- )
- (vl-load-com)
- (if (not (member 'TABLE_UTIL (vl-list-loaded-vlx)))
- (load (findfile "table_util.vlx") NIL)
- )
- (prompt "\n选择图块: ")
- (if (setq SS (ssget '((0 . "insert"))))
- (progn
- (setq LST1 '(("略图" "名称" "数量" "备註")))
- (setq N 0)
- (repeat (sslength SS)
- (if (assoc (setq NAME (cdr (assoc 2 (entget (ssname SS N)))))
- LST
- )
- (setq LST
- (subst (cons NAME (1+ (cdr (setq ST (assoc NAME LST)))))
- ST
- LST
- )
- )
- (setq LST (cons (cons NAME 1) LST))
- )
- (setq N (1+ N))
- )
- (setq LST (vl-sort LST
- (function (lambda (E1 E2)
- (< (car E1) (car E2))
- )
- )
- )
- )
- (setq SUM 0)
- (foreach ENT LST
- (setq SUM (+ SUM (cdr ENT)))
- (setq LSTT (cons (list "" (car ENT) (cdr ENT)) LSTT))
- )
- (setq LST (cons (list "" "合计" SUM) LSTT))
- (setq LST (append LST1 (reverse LST)))
- (setq INSPT (getpoint "\n表格插入点/<ENTER 放弃>: "))
- (if INSPT
- (progn
- ;;(TABLE_UTIL <资料列> <插入点> <字型> <字高>)
- (setq TABLE (TABLE_UTIL LST INSPT "STANDARD" 3))
- ;;DO SOMETHING FOR TABLE---如比例调整
- (vla-scaleentity
- TABLE
- (vlax-3d-point INSPT)
- (getvar "dimscale")
- )
- (setq BLKS (vla-get-blocks
- (vla-get-activedocument
- (vlax-get-acad-object)
- )
- )
- )
- (setq ROW (- (length LST) 2))
- ;;R2006(含)以上才有REGENERATETABLESUPPRESSED属性
- (if (> (atof (getvar "ACADVER")) 16.1)
- (VLA-PUT-REGENERATETABLESUPPRESSED TABLE :vlax-true)
- )
- (repeat ROW
- (setq OBJECTID (vla-get-objectid
- (vla-item BLKS (vla-gettext TABLE ROW 1))
- )
- )
- (vla-setcelltype TABLE ROW 0 1)
- (vla-setblocktablerecordid TABLE ROW 0 OBJECTID :vlax-true)
- (vla-setautoscale TABLE ROW 0 :vlax-true)
- (setq ROW (1- ROW))
- )
- (if (> (atof (getvar "ACADVER")) 16.1)
- (VLA-PUT-REGENERATETABLESUPPRESSED TABLE :vlax-false)
- )
- (vlax-release-object BLKS)
- )
- )
- )
- )
- (princ)
- )
- (princ "\nType Statistics,By LUCAS")
- (princ)
|