cadok
-
Số lượng nội dung
6 -
Đã tham gia
-
Lần ghé thăm cuối
Bài đăng được đăng bởi cadok
-
-
32 phút trước, Doan Nguyen Van đã nói:(defun c:ATT+ (/ ent tag lst tong ss) (setq ent (car (nentsel "Pick COLUM+:"))) (setq tag (cdr (assoc 2 (entget ent))) tong 0.0) (princ "\nQuet chon cac block") (setq ss (ssget (list (cons 0 "INSERT")))) (while (setq ent (ssname ss 0)) (setq ss (ssdel ent ss)) (if (setq lst (assoc tag (mapcar '(lambda (att) (cons (vla-get-tagstring att) (vla-get-textstring att))) (vlax-invoke (vlax-ename->vla-object ent) 'getattributes) ))) (setq tong (+ tong (distof (vl-string-subst "." "," (cdr lst) ))))) ) (alert (rtos tong 2 2)) )
Thay vì sửa file cad, mình sửa lệnh này cho bạn cộng đc cả phần dấu ","
Ồ vậy thì tiện, mình đã sử dụng lisp bạn gởi rất OK. Sẵn tiện thể edit dùm mình cái lisp này (cũng cộng như trên nhưng có thêm điều kiện trước khi cộng). H bạn edit dùm mình cho nó cộng dc phần đằng sau dấu , luôn. Thanks bạn
(DEFUN C:ATT+IF (/ ssl dtl dtt e1 e2 e3 ltt et goc)
(setq ssl (acet-ss-to-list (ssget (list (cons 0 "insert") (cons 66 1)))))
(setq dtl (cdr (assoc 1 (entget (setq e1 (car (nentsel "\n Chon thuoc tinh loc")))))))
(setq goc 0)
(setq dtt (cdr (assoc 2 (entget (setq e2 (car (nentsel "\n Chon thuoc tinh can tinh")))))))
(setq ltt (list))
(foreach e ssl
(setq et (entnext e))
(while (/= (cdr (assoc 0 (entget et))) "SEQEND")
(if (and (= (cdr (assoc 1 (entget et))) dtl) (= (cdr (assoc 2 (entget et))) (cdr (assoc 2 (entget e1)))))
(setq ltt (append ltt (list e)))
)
(setq et (entnext et))
)
)
(foreach e ltt
(setq et (entnext e))
(while (/= (cdr (assoc 0 (entget et))) "SEQEND")
(if (= (cdr (assoc 2 (entget et))) dtt)
(setq goc (+ goc (atof (cdr (assoc 1 (entget et))))))
)
(setq et (entnext et))
)
)
(entmod (subst (cons 1 (rtos goc 2 2)) (assoc 1 (entget (setq e3 (car (nentsel "\n Chon text can thay the"))))) (entget e3)))
(entupd e3)
)
-
4 phút trước, Nguyễn Hà Huy đã nói:Họ để đơn vị là dấu , theo tcvn b đổi về dấu chấm in ra nộp bên thẩm định họ lại bắt sửa lại dấu phẩy mắc khổ ra
Do trong một số lisp của cad, khi ta Cộng, nếu là dâu , nó chỉ cộng phần nguyên, còn phần thập phân nó ko cộng. Ví dụ như lisp ATT+ này của diễn đàn CadViet. Mình có đính kèm lisp bên dưới b xem nhé
-
-
58 phút trước, limfx đã nói:Hy vọng đáp ứng nhu cầu của bạn lệnh (RCC)
Cảm ơn bạn trước, mình đã sử dụng lisp, nhưng sau khi đổi nó bị mất File. Thông tin đến bạn để giúp mình vần đề này
-
Góc nhờ vả các cao thủ,
Chào các bạn, mình có bản vẽ có khoảng 40 block ATT, trong block ATT có một đối tượng cuối cùng là diện tích (S_m2). Hiện S_m2 này là một đối tượng Field, đã đc định dạng dấu thập phân là dấu "phảy" ví dụ 4,22
Bây h mình muốn nó là 4.22
Mình sửa bằng tay, phải dô trong Field mới sủa dc và lâu quá
Nhớ mấy cao thủ có cách giúp dùm, xin cảm ơn, mình có đính kèm file Cad
Dấu thập phân là dấu . trong Block ATT, có link Field
trong AutoLisp
Đã đăng · Trả lời báo cáo
Cảm ơn các bạn và ban Doan Nguyễn Văn nha, trên cơ sở Lisp bạn sửa mình đã edit đc cái đoạn lisp kia, và nó cũng đã cộng đc phần thập phân sau dấu , rồi. Mình gởi lên đây bạn nào cần tải về nhé
(DEFUN C:ATT+IFphay (/ ssl dtl dtt e1 e2 e3 ltt et goc)
(setq ssl (acet-ss-to-list (ssget (list (cons 0 "insert") (cons 66 1)))))
(setq dtl (cdr (assoc 1 (entget (setq e1 (car (nentsel "\n Chon thuoc tinh loc")))))))
(setq goc 0)
(setq dtt (cdr (assoc 2 (entget (setq e2 (car (nentsel "\n Chon thuoc tinh can tinh")))))))
(setq ltt (list))
(foreach e ssl
(setq et (entnext e))
(while (/= (cdr (assoc 0 (entget et))) "SEQEND")
(if (and (= (cdr (assoc 1 (entget et))) dtl) (= (cdr (assoc 2 (entget et))) (cdr (assoc 2 (entget e1)))))
(setq ltt (append ltt (list e)))
)
(setq et (entnext et))
)
)
(foreach e ltt
(setq et (entnext e))
(while (/= (cdr (assoc 0 (entget et))) "SEQEND")
(if (= (cdr (assoc 2 (entget et))) dtt)
(setq goc (+ goc (atof (vl-string-subst "." "," (cdr (assoc 1 (entget et)))))))
)
(setq et (entnext et))
)
)
(entmod (subst (cons 1 (rtos goc 2 2)) (assoc 1 (entget (setq e3 (car (nentsel "\n Chon text can thay the"))))) (entget e3)))
(entupd e3)
)