Chuyển đến nội dung
Diễn đàn CADViet
vovanthienqn@gmail.com

BỔ SUNG TÍNH NĂNG CỦA LISP

Các bài được khuyến nghị

Dạ, em chào mọi người, em có sưu tầm autolisp của anh Dương Nhất Duy về việc thống kê block Dynamic. Hiện tại em mong muốn bổ sung thêm thống kê Layer của Dynamic và thống kê theo thứ tự từ nhỏ đến lớn (hay a →z) đang được sử dụng ạ. Em cảm ơn mọi người.

 

;Dem Parameter
(defun C:CVV ( / A B ELST ENT I LST LST_ADD LST_COUNT LST_DYN LST_MOD LST_PARAM LST_RESULT LST_SUM LST_TK PT STR SUM VAL X)
  (if
    (and
      (setq elst (vl-remove-if-not 'ND:dyn_get (vl-remove-if 'listp (mapcar 'cadr (if (ssget (list (cons 0 "INSERT"))) (ssnamex (ssget "_P")))))))
      (setq lst_param (vl-remove "Origin" (vl-sort (ND:unique (apply 'append (mapcar '(lambda (ent) (mapcar 'car (ND:dyn_get-visible ent))) elst))) '<)))
      (if (> (length lst_param) 1)
    (setq lst_param (ND:listbox lst_param "Ch\\U+1ECDn 1 ho\\U+1EB7c nhi\\U+1EC1u Parameter" 10 16 1))
    t
    )
      (setq pt (getpoint "\nChon diem xuat bang thong ke: "))
      )
    (progn
      (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
      (setq elst (vl-sort elst '(lambda (a b) (ND:alphanumcompare (ND:get_blkname a) (ND:get_blkname b) t))))
      (setq lst_count nil)
      (foreach ent elst
    (setq lst_add nil)
    (setq lst_dyn (ND:dyn_get-visible ent))
    (foreach param lst_param
      (if (setq val (cdr (assoc param lst_dyn)))
        (if (numberp val)
          (setq val (* 0.0001 (atoi (rtos (/ val 0.0001) 2 0))))
          )
        (setq val "")
        )
      (setq lst_add (append lst_add (list val)))
      )
    (setq lst_count (ND:assoc+ lst_add lst_count))
    )
      (setq lst_tk nil)
      (repeat (setq i (length lst_count))
    (setq lst (nth (1- i) lst_count))
    (setq lst_add (append (list (itoa i)) (car lst) (list (itoa (cdr lst)))))
    (setq lst_tk (cons lst_add lst_tk))
    (setq i (1- i))
    )
      (if (= 3DUY-ATK-SUM "1")
    (progn
      (setvar "DIMZIN" 0)
      (setq lst_sum nil)
      (repeat (setq i (length (car lst_tk)))
        (setq sum (apply '+ (mapcar '(lambda (x / a b)
                       (if (not (numberp (setq a (nth (1- i) x)))) (setq a (atof a)))
                       (setq b (if (= i (length (car lst_tk))) 1 (atof (last x))))
                       (* a b)
                       )
                    lst_tk
                    )))
        (setq str (vl-string-right-trim "." (vl-string-right-trim "0" (rtos sum 2 (getvar "LUPREC")))))
        (setq lst_sum (cons str lst_sum))
        (setq i (1- i))
        )
      (setq lst_sum (cons "T\\U+1ED4NG" (cdr lst_sum)))
      (setq lst_tk (append lst_tk (list lst_sum)))
      )
    )
      (setq lst_mod nil)
      (repeat (setq i (length lst_tk))
    (setq lst (mapcar '(lambda (x) (if (numberp x) (rtos x 2 (getvar "LUPREC")) x)) (nth (1- i) lst_tk)))
    (setq lst_mod (cons lst lst_mod))
    (setq i (1- i))
    )
      (setq lst_result (append (list (list "B\\U+1EA2NG TH\\U+1ED0NG KÊ S\\U+1ED0 L\\U+01AF\\U+1EE2NG PARAMETER") (append (list "STT") lst_param (list "S\\U+1ED1 l\\U+01B0\\U+1EE3ng"))) lst_mod))
      (ND:list->table-AC lst_result (atof 3DUY-ATK-CAOCHU) (* (atof 3DUY-ATK-CAOCHU) 3) nil pt 3DUY-ATK-TBLSTYLE-NAME 3DUY-ATK-TXTSTYLE-NAME (getvar "CLAYER"))
      (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
      )
    )
  (princ)
  )
image.png.41236e136165e736325bae3edc53fa43.png

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×