Chuyển đến nội dung
Diễn đàn CADViet
cadok

Dấu thập phân là dấu . trong Block ATT, có link Field

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

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 

DAU THAP PHAN LA DAU CHAM'.dwg

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
23 giờ trước, cadok đã nói:

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 

DAU THAP PHAN LA DAU CHAM'.dwg

Hy vọng đáp ứng nhu cầu của bạn lệnh (RCC)

RCC.rar

  • Like 1

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
58 phút trước, limfx đã nói:

Hy vọng đáp ứng nhu cầu của bạn lệnh (RCC)

RCC.rar

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 image.png.a22980173c5605ab090f47d124d48679.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
Vào lúc 12/5/2024 tại 10:48, cadok đã nói:

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 

DAU THAP PHAN LA DAU CHAM'.dwg

Vô "Additional Format ..." chọn "Period" như hình đính kèm.

1008204374_Periodformat.thumb.png.910ccd8294dc3ce76d372c6a4bd8364f.png

  • Like 1

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
2 phút trước, gia_bach đã nói:

Vô "Additional Format ..." chọn "Period" như hình đính kèm.

1008204374_Periodformat.thumb.png.910ccd8294dc3ce76d372c6a4bd8364f.png

Cảm ơn bạn. Mình cũng làm như vậy, nhưng do mình nhận bản vẽ từ người khác về nó có rất nhiều cái Block ATT như vậy. Các bạn có cách nào quét và sửa hàng loạt thì đỡ quá

 

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
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é

ATT+.LSP

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
2 giờ trước, cadok đã nói:

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é

ATT+.LSP

(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 ","

  • Like 2

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
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)
)
 

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
10 giờ trước, cadok đã nói:

Ồ 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)
)
 

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)

)

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
Vào lúc 12/5/2024 tại 10:48, cadok đã nói:

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 

DAU THAP PHAN LA DAU CHAM'.dwg


Cái này làm tay cho toàn bộ file có 1000 block thì mình đoán chắc cũng chỉ mất độ 15s th

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

×