Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
790312

Nhờ sửa lisp đếm block

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

Hahahaha,

Ketxu thật sáng tạo, vote 1 phiếu nhưng text height ko reference vào zomm factor nên hơi nhỏ.

Thanks again!

Ồ, đúng vậy, có lẽ nên đổi lại show text cố định theo pixel màn hình ^^ Lúc nào rỗi thì ket sửa lại, dù sao đây cũng chỉ là 1 ví dụ về hướng đi khác thôi ^^

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

Xin hỏi Tue_NV: Có cách nào mình làm được như sau không?

- Chọn block mẫu

- Chọn vùng chứa block: vùng này là 1 polyline khép kín chứa block cần đếm.Chỉ cần pick chọn PL là đếm được số block trong vùng kín.

Cám ơn !

Hề hề hề,

Để làm theo yêu cầu của bạn , bạn hãy thay đoạn code:

(Princ "\nHay chon vung :")

(setq SS (ssget (list (cons 0 "insert")

(cons 2 STNAME)

)

)

)

thành:

(Princ "\nHay chon pline kin chua cac block can dem :")

(setq pl (car (entsel)))

(setq plst (cdr (acet-geom-vertex-list pl)))

(setq SS (ssget "WP" plst (list (cons 0 "insert")

(cons 2 STNAME)

)

)

)

 

Hề hề hề,...

 

Nhân đây mình muốn hỏi thêm các bác Tue_NV, Detailing, Doan van Ha, Ketxu rằng hình như cái biến hệ thống DYNMODE và DYNPROMPT chỉ có ở các CAD đời sau 2004 thì phải. Khi mình dùng (setvar "dynmode" 1) thì CAD 2004 của mình báo lỗi.

Nếu đúng vậy nên chăng các bác ghi chú thích cho các lisp ở đây là chỉ dùng cho CAD từ 200.... trở đi.

Việc cứ bắt buộc thông báo phải hiện trên màn hình phải chăng là hơi ép nhau quá, vậy thì các anh CAD đời trước chỉ ngồi ngó ư??? Tội nghiệp, tội nghiệp....

Hề hề hề,...

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

Hề hề hề,

Để làm theo yêu cầu của bạn , bạn hãy thay đoạn code:

(Princ "\nHay chon vung :")

(setq SS (ssget (list (cons 0 "insert")

(cons 2 STNAME)

)

)

)

thành:

(Princ "\nHay chon pline kin chua cac block can dem :")

(setq pl (car (entsel)))

(setq plst (cdr (acet-geom-vertex-list pl)))

(setq SS (ssget "WP" plst (list (cons 0 "insert")

(cons 2 STNAME)

)

)

)

 

Hề hề hề,...

 

Nhân đây mình muốn hỏi thêm các bác Tue_NV, Detailing, Doan van Ha, Ketxu rằng hình như cái biến hệ thống DYNMODE và DYNPROMPT chỉ có ở các CAD đời sau 2004 thì phải. Khi mình dùng (setvar "dynmode" 1) thì CAD 2004 của mình báo lỗi.

Nếu đúng vậy nên chăng các bác ghi chú thích cho các lisp ở đây là chỉ dùng cho CAD từ 200.... trở đi.

Việc cứ bắt buộc thông báo phải hiện trên màn hình phải chăng là hơi ép nhau quá, vậy thì các anh CAD đời trước chỉ ngồi ngó ư??? Tội nghiệp, tội nghiệp....

Hề hề hề,...

1). Rất thông cảm với các cad đời cũ. Ấy thế mà trước đây có 1 cao thủ đã từng chê tôi là lẹt đẹt với mấy thứ lỗi thời đấy bác a! Đời thật oái oăm! Tôi chỉ mới cài 2007 cách đây mấy tháng, sau đó còn giữ cả 2004 và 14 nữa. Bây giờ máy già quá nên mới xóa cách đây không lâu, chứ nếu để lại cũng hay đấy, nhất là chí ít cũng trả lời được câu của bác. Thôi, bác nào có cài nhiều thì trả lời vậy.

2). Cái chọn Block theo kiểu pick vào pl kín chỉ đúng nếu nó không có arc bác ạ. Còn trong trường hợp tổng quát thì theo thiển ý của tôi là rắc rối đấy. Ông BAC người nước ngoài đã có cách chọn, code lê thê lắm, bác có thể xem "Chọn đối tượng trong vùng kín" ở ngay trang chính thì có, mới hôm qua tôi post lên lại.

Thân thương!

  • Vote tăng 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

......

Thôi, bác nào có cài nhiều thì trả lời vậy.

.........

Thân thương!

@ Doan Van Ha : Bác Bình "nói zậy mà hổng phải zậy"?!

Ý nhà bác này là :

...............

Nếu đúng vậy nên chăng các bác ghi chú thích cho các lisp ở đây là chỉ dùng cho CAD từ 200.... trở đi.

Việc cứ bắt buộc thông báo phải hiện trên màn hình phải chăng là hơi ép nhau quá, vậy thì các anh CAD đời trước chỉ ngồi ngó ư??? Tội nghiệp, tội nghiệp....

Hề hề hề,...

 

Về Danh sách biến hệ thống từ AutoCad 2000i đến AutoCad 2011,

tham khảo : http://www.cadviet.com/forum/index.php?showtopic=44425&view=findpost&p=151719

  • Vote tăng 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

Hề hề hề,

Để làm theo yêu cầu của bạn , bạn hãy thay đoạn code:

(Princ "\nHay chon vung :")

(setq SS (ssget (list (cons 0 "insert")

(cons 2 STNAME)

)

)

)

thành:

(Princ "\nHay chon pline kin chua cac block can dem :")

(setq pl (car (entsel)))

(setq plst (cdr (acet-geom-vertex-list pl)))

(setq SS (ssget "WP" plst (list (cons 0 "insert")

(cons 2 STNAME)

)

)

)

 

Hề hề hề,...

 

Nhân đây mình muốn hỏi thêm các bác Tue_NV, Detailing, Doan van Ha, Ketxu rằng hình như cái biến hệ thống DYNMODE và DYNPROMPT chỉ có ở các CAD đời sau 2004 thì phải. Khi mình dùng (setvar "dynmode" 1) thì CAD 2004 của mình báo lỗi.

Nếu đúng vậy nên chăng các bác ghi chú thích cho các lisp ở đây là chỉ dùng cho CAD từ 200.... trở đi.

Việc cứ bắt buộc thông báo phải hiện trên màn hình phải chăng là hơi ép nhau quá, vậy thì các anh CAD đời trước chỉ ngồi ngó ư??? Tội nghiệp, tội nghiệp....

Hề hề hề,...

Hề hề hề,...

Theo đoạn code bác viết ở trên nên chăng có ghi chú chỉ xài cho CAD đã có Expresstool chứ em load vào CAD 14 bị lỗi

Cái yêu cầu của chủ topic chỉ làm ngứa ngáy tay chân mấy người như em chứ thực sự em ít khi viết lisp.

vui đùa là chính mong bác ko giận

Hề hề hề,....

 

 

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

Hề hề, ket update lại cái code hồi sáng cho nó ngắn hơn và text dễ coi hơn chút ^^

(Defun c:bb (/ dynm dynp DT STNAME SS SL)
(ST:Ui-DelayText "Chän Block mÉu :" 60)
(setq DT (entget (car (entsel))))
(setq STNAME (cdr (assoc 2 DT)))
(Princ "\nHay chon vung :")
(ST:Ui-DelayText "Chän vïng chøa block :" 60)
(setq SS (ssget (list (cons 0 "insert")(cons 2 STNAME))))

(IF (/= NIL SS)
(ST:Ui-DelayText (strcat "Sè l­îng block " STNAME " lµ :" (rtos (SSLength SS) 2 0)) 120)
(ST:Ui-DelayText (strcat "RÊt tiÕc, vïng b¹n chän kh«ng cã ®èi t­îng Block " STNAME " nµo !") 80)
)
(princ)
)
(defun ST:Ui-DelayText (msg count / data txtObj wtxt_l gr g1 g2)
(defun wtxt_l(txt p h)(entmakex (list (cons 0 "TEXT") (cons 7 (getvar "textstyle")) (cons 40 h)(cons 1 txt) (cons 10 p))))
(setq txtObj (vlax-ename->vla-object(wtxt_l msg '(0 0 0) 1)) i 0)
(while (< i count)
(setq gr (grread t 15 0) g1 (car gr) g2 (cadr gr) i (1+ i))
(cond ((and (= g1 5)(listp g2))
		(vla-put-InsertionPoint txtObj (vlax-3D-point (trans g2 1 0)))
		(vla-put-Height txtObj (* (getvar "viewsize") 0.05))
		))
)
(vla-delete txtObj)
)

@ Bác Bình : bác chung thủy với anh 2004 quá, vậy mấy cái bác gia_bach làm bằng Net thì sao ^^

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

Thay dòng select object đó thì bó tay vì đó là dòng nhắc của hàm ssget

Hề hề, thay dòng đó ở vị trí cursor thì không biết có được không, nhưng dòng ở commandline thì có thể thay dễ dàng ạ ^^

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

Mới build cái này các bạn test thử rồi cho ý kiến nha. (đã test trên AutoCAD 2010 32bit, các phiên bản còn lại chưa test rolleyes.gif)

http://www.mediafire...oarmr7afwmb7r34

 

Extract vào ổ C -> C:\Detailing\

gồm 2 file: CountBlock.lspClassLibrary1.dll load file lsp vào là được

Command: CountBlock

 

p/s: Mod thấy ko đúng topic thì move dùm mình nha. Thanks!

Thân!

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

NewBitmapImage.jpg

Bên máy mình cad8 vista thì chưa được. K biết có phải copy cái file reference acdbmgd dll kia nữa k?

 

P/S : chức năng chính của countblock này là gì Detailing ơi ?

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

NewBitmapImage.jpg

Bên máy mình cad8 vista thì chưa được. K biết có phải copy cái file reference acdbmgd dll kia nữa k?

 

P/S : chức năng chính của countblock này là gì Detailing ơi ?

Do ket xài cad 2008 chắc có hàm nào đó ko có trong thư viện. Để lát trưa cài CAD 07 rồi fix lại.

Chức năng chỉ là đếm block thôi nhưng giải quyết cái chỗ text hiện ra ngay con trỏ giống như DynPrompt nhưng ko phải DynPrompt

 

p/s: Sorry ket cái này chỉ chạy dc trên CAD2010 trở lên

Thân!

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
Đăng nhập để thực hiện theo  

×