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

Biet ve CAD

Thành viên
  • Số lượng nội dung

    474
  • Đã tham gia

  • Lần ghé thăm cuối

  • Ngày trúng

    71

Bài đăng được đăng bởi Biet ve CAD


  1. Giới thiệu đến các bạn lisp thay thế nhanh Text này:

    - Áp dụng cho Text, Mtext, Block attribute

    - Có thể load nội dung thay và cần thay từ file Excel

    - Lưu lại nội dung ra file Excel

    - Thay thế cho nhiều file Dwg cùng lúc

    * Các bạn liên hệ qua email bietvecad@gmail.com hoặc https://www.facebook.com/cad.bietve để biết thêm thông tin nhé !

    *** Xem thêm lisp khác:

    ** In nhanh bản vẽ: https://www.youtube.com/watch?v=JDDSdmTV31Y&list=PL05frYPpT5LLRHAE9W-osYor9Jbe7nOg-

    ** Tiện ích hay: https://www.youtube.com/playlist?list=PL05frYPpT5LJUXFg-LYSgxvSmxzIPdoqA

     


  2. *** Giới thiệu đến các bạn lisp chèn nhanh Block từ thư viện ( thư mục ) vào bản vẽ:

    - Thư mục là bất kỳ, miễn sao có file Dwg bên trong

    * Các bạn liên hệ qua email bietvecad@gmail.com hoặc https://www.facebook.com/cad.bietve để biết thêm thông tin nhé !

    * Bản cập nhật: thêm Block từ bản vẽ vào thư viện

     

    *** Xem thêm lisp khác:

    * In nhanh bản vẽ: https://www.youtube.com/watch?v=JDDSdmTV31Y&list=PL05frYPpT5LLRHAE9W-osYor9Jbe7nOg-

    * Tiện ích hay: https://www.youtube.com/playlist?list=PL05frYPpT5LJUXFg-LYSgxvSmxzIPdoqA

     

    • Vote tăng 1

  3. Mình có lisp này đáp ứng được chút ít về chức năng chèn nhanh Block từ thư viện vào bản vẽ

    ( file trong thư viện là Dwg, thư viện là bất kỳ miễn sao có file Dwg bên trong là được )

     

    Bạn nào cầnn thì liên hệ bietvecad@gmail.com nhé

    *** Xem thêm lisp:

    - In nhanh bản vẽ: https://www.youtube.com/watch?v=JDDSdmTV31Y&list=PL05frYPpT5LLRHAE9W-osYor9Jbe7nOg-

     

    - Tiện ích hay jhác: https://www.youtube.com/playlist?list=PL05frYPpT5LJUXFg-LYSgxvSmxzIPdoqA

     

    • Like 1

  4. 6 phút trước, vuhoach đã nói:

    Chào bác!

     Chức năng in chọn của lisp trên layout em thấy không hoạt động được như trên model. Khi em kick vào "in chon" thì trên môi trường layout, lisp tự động in tất cả các khung tên block trong layout đó. Còn nếu sử dụng trên model thì lisp cho phép chọn các khung bản vẽ muốn in. Em đang sử dụng bản Free 2. Bản free 5 đã khắc phục được lỗi đó chưa bác. Hay bác cho em xin bản Free 5 nhé. Thanks!

    Bên Layout bạn bỏ tích chỗ ô vuông "tu chon khung mau" ngay bên dưới danh sách layout là ok


  5. Giới thiệu các bạn lisp tự động Boundary hàng loạt các đối tượng

    Bạn nào cần thì liên hệ email bietvecad@gmail.com nhé

    Xem thêm lisp:

    * Lisp in bản vẽ: https://www.youtube.com/watch?v=JDDSdmTV31Y&list=PL05frYPpT5LLRHAE9W-osYor9Jbe7nOg-

     

    * Lisp tiện ích hay khác: https://www.youtube.com/playlist?list=PL05frYPpT5LJUXFg-LYSgxvSmxzIPdoqA

     

     

    • Like 1
    • Vote tăng 2

  6. Giới thiệu đến các bạn lisp tự động rải mẫu nhà vào các lô đất định sẵn ^^:

    Mô tả chức năng:

    - Tự đông chèn các block mẫu nhà vào các lô đất

    - Rải cùng lúc nhiều mẫu block

    - Tự quay mặt tiền nhà hướng ra đường

    Bạn nào quan tâm vui lòng liên hệ email bietvecad@gmail.com nhé

    Xem thêm lisp khác:

    - Lisp in bản vẽ: https://www.youtube.com/watch?v=JDDSdmTV31Y&list=PL05frYPpT5LLRHAE9W-osYor9Jbe7nOg-

    - Lisp tiện ích: https://www.youtube.com/playlist?list=PL05frYPpT5LJUXFg-LYSgxvSmxzIPdoqA

     

     

    • Like 2
    • Vote tăng 1

  7. Ví dụ công tắc đèn có 1 cái hình vuông layer1 bên ngoài, và 1 hình tròn layer 2 bên trong, thì thỏa mã điều kiện

    1. số đối tượng là 2 và là hình vuông và tròn thuộc 2 layer đó

    2. Góc quay và tỷ lệ các đối tượng không thay đổi

    Nếu ko thỏa mãn thì khó hơn

    Ý tưởng là :

    1. tạo 1 block có điểm chèn ở giữa,

    2. tìm sự tương quan các đối tượng công tắc để tạo bộ lọc

    3. sau đó tìm và thay thế các đối tượng thỏa mãn 2 điều kiện trên bằng block mới, với điểm chèn là tại tâm của  công tắc ?

    • Like 2

  8. 8 phút trước, vuhoach đã nói:

    chào bác, em in với khung tên xreff trên layout thì nó bị lỗi, nó chỉ in vùng viewport, còn vùng chứa các thông tin liên của khung tên nó không in

    Các đối tượng không nằm trong block khung tên ( tức là không phải đối tượng thuộc block) mà in vẫn bình thường, thì bạn xem khung block đang để layer Defpoint hay layẻ bị khóa in ko?


  9. Giới thiệu đến các bạn lisp tính diện tích này, chức năng như sau:

    - Ghi tên khu đất, và thêm số thứ tự

    - Tính diện tích khu đất và ghi diện tích vào Block chỉ tiêu mẫu ( và tự chèn Block này vào khu đất )

    - Nếu khu đất đã chèn sẵn Block mà chưa ghi diện tích thì lisp sẽ tự tính và ghi vào Block đó

    - Có thể chọn cùng lúc nhiều layer giới hạn

    - Tạo bảng Thống kê diện tích sử dụng đất theo tên đất nhanh chóng

    ( chú ý vùng bao khu đất phải là vùng khép kín như đường tròn, elíp, polyline closed )

    * Các bạn liên hệ qua email bietvecad@gmail.com hoặc https://www.facebook.com/cad.bietve để biết thêm thông tin nhé !

    gd.jpg.d2d34ea3d7312d62f341957b75400a16.jpg

    Video giới thiệu:

    cập nhật mới nhất:

    Xem thêm:

    LIsp in  nhanh bản vẽ: https://www.youtube.com/watch?v=JDDSdmTV31Y&list=PL05frYPpT5LLRHAE9W-osYor9Jbe7nOg-

     

    Lisp tiện ích hay khác: https://www.youtube.com/playlist?list=PL05frYPpT5LJUXFg-LYSgxvSmxzIPdoqA

     

     

     

    • Like 3

  10. 1 giờ} trướ}c, google123 đã nói:

    em chỉ lấy x thôi anh, vì em không có kiến thức của code lisp nên không biết sửa ra sao, nếu anh có sửa thì chỉ em sửa chỗ nào đê về sau em tự sửa a nhé

    Bạn copy vào lisp cũ nhé, nhũng text nào ko chạy đúng bạn sửa lại đúng theo các text mẫu của bạn

    (vl-load-com)
    (defun C:BVC( / e str)
     (foreach e (acet-ss-to-list (ssget '((0 . "text"))))
       (setq str (cdr (assoc 1 (entget e))))
       (if(vl-string-search "T\\" str)
         (progn
           (setq str(vl-string-subst "" "T\\U+1EDD" str)
             str(vl-string-subst "" "s\\U+1ED1" str)
             str(vl-string-subst "" " " str)
             )
           (if(vl-string-search "(t" str)(setq str (vl-string-subst "" (substr str (+(vl-string-search "(t" str)1)) str)))
           (vla-put-textstring (vlax-ename->vla-object e) str)
           )
         )
       )
      )

    • Like 1

  11. Xin giới thiệu đến các bạn lisp này: ( áp dụng cho ai hay phải fillet - champer đường, vỉa hè )

    - Tự động Fillet - Champer lòng đường, vỉa hè, sau đó tự động dimension luôn

    - Có thể cập nhật lại bánn kính Fillet - Champer và dimension 

    - Đối tượng áp dụng : ARC, LINE, POLYLINE.... 

    * Các bạn liên hệ qua email bietvecad@gmail.com hoặc https://www.facebook.com/cad.bietve để biết thêm thông tin nhé !

    fc.jpg.75ec0b3f2900e5b121bbe7f29013b925.jpg

    Video giới thiệu:

     

    Xem thêm lisp in nhanh bản vẽ: https://www.youtube.com/watch?v=JDDSdmTV31Y&list=PL05frYPpT5LLRHAE9W-osYor9Jbe7nOg-

    Lisp tiện ích khác: https://www.youtube.com/playlist?list=PL05frYPpT5LJUXFg-LYSgxvSmxzIPdoqA

     

     

    • Like 3

  12. Người xin lisp: Bạn ơi cho mình xin cái lisp này nhé, lisp hay quá bạn à, thank bạn nhé

    Người xin $: Bạn ơi, mình xin bạn 100k nhé....sao ko thấy hồi âm nhỉ, lâu quá

     

    Để được bữa nhậu như bạn Duy nói quả ko sai, được cái lisp giá 100k cũng phải bỏ ra khá nhiều công sức

     

    Mình cũng thử cái lisp in của mình và kết quả như trên. Thôi khi nào ngứa ngáy tay chân thì viết lisp có khi hiệu quả ^^

    • Vote giảm 1

  13. Vào lúc 19/7/2019 tại 14:27, google123 đã nói:

    Anh ơi dữ liệu của em giờ thêm đối tượng này nữa anh có thể sửa thêm vào lisp được không anh..

    -tờ    số   x  (tỷ lệ 1:200)

    -tờ    số   x  (tỷ lệ 1:500)

    -tờ    số    x  (tỷ lệ 1:1000)

    - tờ   thứ      x

    em gửi lại dữ liệu ạ:

     

    19-07-2019_1.dwg

    Chưa rõ bạn muốn sửa lại như nào?

    -tờ    số   x  (tỷ lệ 1:200)  ---> thành  x hay x  (tỷ lệ 1:200)

    - tờ   thứ      x                     ---> thành  x


  14. 10 phút trước, ngokiet đã nói:

    Ok. Mình biết hơi nhầm ở chỗ nào rồi. Ở phần chọn layer có màu giống mẫu. Để suy nghĩ cách sửa.

     

    - Đã sửa lại ở trên rồi.

    Không biết có cần lọc tuyệt đối ko vì chọn mẫu là cons 62 thì nó vẫn lấy cả truecolor ( ví dụ mẫu là RED, truecolor là 254,0,0 hoặc 255,0,0)

    Nhưng theo mình nếu đã là truecolor và cons 62 vẫn phải tách riêng nhau ( nếu truecolor nó trả về gần màu cons 62 thì đành chịu )

    • Vote tăng 1

  15. 10 phút trước, ngokiet đã nói:

    Hình như Lisp của bạn các màu truecolor không thực hiện đúng vì truecolor nó cũng có trả về màu gần đúng là (assoc 62)

    Truecolor là cad nó bổ sung sau nên nó thêm ở code 420 nhưng vì tương thích với lisp cũ nên vẫn có màu gần đúng ở code 62.

    Mình thích lọc ở ssget cho có vẽ trực quan hơn nên mình bổ sung lisp này

    
    (defun c:sscolor(/ lays objm y x420 x62 lays)
      (princ "\nSelect obj mau:")
      (or (setq objm (acet-ss-to-list (ssget))) (exit))
      (initget "A B")
      (if (eq (getkword "Chon kieu [A Theo thuoc tinh/B Theo the hien]") "B")
        (progn
          (foreach x objm
    	(cond ((setq y (cdr(assoc 420 (setq x (entget x)))))
    	       (or (member y x420) (setq x420 (cons y x420))))
    	      ((setq y (cdr(assoc 62 x)))
    	       (or (member y x62) (setq x62 (cons y x62))))
    	      ((setq y (cdr(assoc 420 (setq x (entget (tblobjname "Layer" (cdr(assoc 8 x))))))))
    	       (or (member y x420) (setq x420 (cons y x420))))
    	      ((setq y (cdr(assoc 62 x)))
    	       (or (member y x62) (setq x62 (cons y x62))))))
          (vlax-for x (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
    	(setq x (entget(vlax-vla-object->ename x)))
    	(if (or (member (cdr (assoc 420 x)) x420) (member (cdr (assoc 62 x)) x62))
    	  (setq Lays (if lays (strcat lays "," (cdr(assoc 2 x))) (cdr(assoc 2 x))))))
          (sssetfirst nil (ssget
    			(append '((-4 . "<OR"))
    				(mapcar '(lambda(a) (cons 62 a)) x62)
    				(mapcar '(lambda(a) (cons 420 a)) x420)
    				(if lays
    				  (list '(-4 . "<AND") (cons 8 lays) '(62 . 256) '(-4 . "AND>")))
    				'((-4 . "OR>"))))))
        (progn
          (foreach x objm
    	(cond ((setq y (cdr(assoc 420 (setq x (entget x)))))
    	       (or (member y x420) (setq x420 (cons y x420))))
    	      ((setq y (cond ((cdr(assoc 62 x))) (256)))
    	       (or (member y x62) (setq x62 (cons y x62))))))
          (sssetfirst nil (ssget (append '((-4 . "<OR"))
    				     (mapcar '(lambda(a) (cons 62 a)) x62)
    				     (mapcar '(lambda(a) (cons 420 a)) x420)
    				     '((-4 . "OR>")))))))
      (princ))

    - Chọn mẫu có thể nhiều mẫu được.

    - Màu truecolor vẫn chọn đúng.

    Có 2 kiểu lọc theo mình nói ở trên.

    Vừa chạy thử lisp, nếu mẫu là truecolor thì lọc chuẩn đối tượng truecolor, còn mẫu là màu cons 62 thì lấy luôn cả màu truecolor gần giống màu cons 62 ấy


  16. 19 phút trước, ngokiet đã nói:

    Lisp của mình chỉ lọc theo thuột tính color của autocad.

     Bình thường thì lọc object này thường chỉ bật 1 layer nên mình nghĩ ko cần nhiều.

    Nhưng theo bác ấy thì mình nghĩ lọc theo màu thể hiện chứ không phải màu thuột tính.

    Nghĩa là 

    - Nếu chọn obj màu x thì chọn tất cả obj màu x và obj màu bylayer có layer màu x.

    - Nếu chọn obj mau bylayer thì chọn tất cả obj màu bylayer có layer cùng màu obj và obj có màu là màu của layer obj mẫu.

    Nhưng cái này mình thấy ko cần thiết lắm.

    Mạn phép lấy lisp các bạn đã post ( đặc biệt là của bạn @nhoclangbat ) sửa lại theo ý của chủ thớt

    Lisp sẽ có 4 tùy chọn ( đáp ứng mọi nhu cầu luôn ^^). Lênh là HA

    1. theo bylayer : miễn là color là bylayer thì sẽ chọn

    2. theo màu của layer: layer màu gì sẽ chọn theo màu đó và chỉ các đối tượng là bylayer

    3. theo màu của đối tượng, ko tính đối tượng có màu bylayer

    4. theo màu đang hiển thị: cứ là màu này là chọn tất

    (Defun c:ha ( )
    (setq ansbvc (cond (ansbvc) ("HA4")))
    (initget "HA1 HA2 HA3 HA4")
    (setq ansbvc (cond ((getkword (strcat "\nChon mau theo [bylayer HA1/mau layer HA2/mau doi tuong HA3/mau hien thi HA4]<" ansbvc ">"))) (ansbvc)))
      
    
                                                                (if (= ansbvc "HA1") (progn (c:HA1)))
                                                                (if (= ansbvc "HA2") (progn (c:HA2)))
                                                                (if (= ansbvc "HA3") (progn (c:HA3)))
                                                                (if (= ansbvc "HA4") (progn (c:HA4)))
    
      (princ)
    )
    (defun c:ha1(/ )  (sssetfirst nil (ssget (list (cons 62 256)))))
    (defun c:ha3 ( / lst1 lst2 clr cly ss2 ds_ent ds_ent2 ds_ent3 mau mau2 mau_lay_goc ds_ent2_1 ds_ent5 ds_ent4)
    (setq ds_layer (K:dsbg "layer"))
    (setq ent (car (entsel "\nDoi tuong mau :")))
    (if ent
    	(progn
    		(setq clr (cdr (assoc 62 (entget ent))))
    		(setq cly (cdr (assoc 8 (entget ent))))
    		(if clr
    			(progn
    			    (prompt "chon vung: ")
    				(setq lst1 (acet-ss-to-list (ssget (list (cons 62 clr)))))
    				(setq lst2 (ssadd))
    				(foreach name lst1 (ssadd name lst2))
    				(sssetfirst nil lst2)
    			)
    			(progn
    				(setq mau_lay_goc (vla-get-color (vla-item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) cly)))
    ;----------------------------------------------------------------------------------------------------------------------
    				(prompt "chon vung: ")
    				(setq ss2 (ssget))
    				(if ss2 
    						(progn
    							(setq ds_ent (ss2ent ss2)) 
    ;(setq ds_lay_chon (mapcar '(lambda (x) (cdr (assoc 8 (entget x)))) ds_ent))
    							(foreach k ds_ent
    								(setq mau (cdr (assoc 62 (entget k ))))
    								(if (= mau nil) (setq ds_ent2 (append (list k) ds_ent2))   (setq ds_ent2_1 (append (list k) ds_ent2_1))  ) 
    							)
    ;--------------------
    							(foreach k ds_ent2 
    								(setq mau2 (vla-get-color (vla-item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) (cdr (assoc 8 (entget k )))  )))
    								(if (= mau2  mau_lay_goc) (setq ds_ent3 (append (list k) ds_ent3)))
    							)
    ;---------------------------------------------------------------
    							(foreach k ds_ent2_1 (setq mau4 (cdr (assoc 62 (entget k ))))
    								(if (= mau4 mau_lay_goc) (setq ds_ent4 (append (list k) ds_ent4)))
    							)
    ;----------------------------------------------------------
    							(setq ds_ent5 (append ds_ent3 ds_ent4))	
    ;------------------------------------------------------------
    							(setq lst2 (ssadd))
    							(foreach name ds_ent5 (ssadd name lst2))
    							(sssetfirst nil lst2)
    						)
    				)			
    			);end progn clr
    		); end if clr
    	);end progn ent
    )	
    (princ)
    			
    )
    
     
    ;1- ham lay ten cac phan tu trong 1 tab
    (defun K:dsbg (table / lst phu)
    (tblnext table t)
    (while (setq phu (tblnext table nil))
    (setq lst (cons (cdr (assoc 2 phu)) lst))
    )
    )
    ;=========================================
    ;==================
    (defun ss2ent (ss / i Le e);;;Convert ss to list of ename
    (setq i 0)
    (repeat (sslength ss)
    (setq e (ssname ss i)
    Le (append Le (list e))
    i (1+ i)    ))
    Le)
    ;=====================================================================================================================
    (defun c:ha2 ( / lst1 lst2 clr cly ss2 ds_ent ds_ent2 ds_ent3 mau mau2 mau_lay_goc ds_ent2_1 ds_ent5 ds_ent4 ds_ss_new clr_ex lay_k ds_ss clr_k)
    (setq ent (car (entsel "\nDoi tuong mau :")))
    (if ent
    (progn
    	(setq cly (cdr (assoc 8 (entget ent))))
    	(setq clr_ex (vla-get-color (vla-item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) cly))) 
    ;---------------------------------------------------------------------------
    	(prompt "chon vung: ")
    	(setq ss2 (ssget))
    	(if ss2 
    		(progn
    			(setq ds_ss (ss2ent ss2))
    			(foreach k ds_ss
    				(setq lay_k (cdr (assoc 8 (entget k))))
    				(setq clr_k (vla-get-color (vla-item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) lay_k)))
    ;-------------------------------------------------------------------------------
    				(if (= clr_k clr_ex)
    					(setq ds_ss_new (append (list k) ds_ss_new))
    				)
    			)
    			(setq lst2 (ssadd))
    			(foreach name ds_ss_new (ssadd name lst2))
    			(sssetfirst nil lst2)
    		)
    	);end if ss2
    );end pron
    );end if ent
    (princ)
    )
    (defun c:ha4 ( / lst1 lst2 clr cly ss2 ds_ent ds_ent2 ds_ent3 mau mau2 mau_lay_goc ds_ent2_1 ds_ent5 ds_ent4 ds_ss_new clr_ex lay_k ds_ss clr_k)
    (setq ent (car (entsel "\nDoi tuong mau :")))
    (if ent
    (progn
    	(setq cly (cdr (assoc 8 (entget ent))))
    	(setq clr_ex (if (= (setq clr (cdr (assoc 62 (entget ent)))) nil) 
    					(vla-get-color (vla-item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) cly)) clr)) 
    ;---------------------------------------------------------------------------
    	(prompt "chon vung: ")
    	(setq ss2 (ssget))
    	(if ss2 
    		(progn
    			(setq ds_ss (ss2ent ss2))
    			(foreach k ds_ss
    				(setq lay_k (cdr (assoc 8 (entget k))))
    				(setq clr_k (if (= (setq clr1 (cdr (assoc 62 (entget k)))) nil) 
    					(vla-get-color (vla-item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) lay_k)) clr1))
    ;-------------------------------------------------------------------------------
    				(if (= clr_k clr_ex)
    					(setq ds_ss_new (append (list k) ds_ss_new))
    				)
    			)
    			(setq lst2 (ssadd))
    			(foreach name ds_ss_new (ssadd name lst2))
    			(sssetfirst nil lst2)
    		)
    	);end if ss2
    );end pron
    );end if ent
    (princ)
    )
    (princ)

     

    • Like 1
    • Vote tăng 1

  17. 3 phút trước, mr.thanh2610 đã nói:

    Vẫn chưa được bạn à, cái này chỉ giải quyết được 1/2 trường hợp 3: chọn được đối tượng có màu by layer và đối tượng có màu tùy chọn trùng nhau [1/2 trường hợp là vì mình thấy khi chọn đối tượng có màu By layer thì nó cho chọn vùng quét, còn đối tượng có màu tùy chọn thì nó tự chọn tất cả luôn không cho chọn vùng quét (hơi bất tiện)]

    Ý mình là: Lisp có thể có 3 tùy chọn cho 3 trường hợp:  Gõ lệnh : ha -> xuất hiện bảng chọn ----> 1.chọn đối tượng theo màu By layer

                                                                                                                                                                             2. Chọn đối tượng theo màu tùy chọn (theo cách gọi của bạn)

                                                                                                                                                                             3.Chọn đối tượng theo cả màu By layer và màu tùy chọn

    ----> chọn đối tượng ----> quét vùng chọn.

    Khi nào bạn hay anh em nào có thời gian  thì giúp mình với nhé, xin cảm ơn

    Bạn @nhoclangbat  nói đúng đó, chung quy chỉ chọn đối tượng mẫu để lấy màu nó đang hiển thị, chứ mấy ai chọn tất cả đối tượng là "Bylayer - bất kể màu gì đâu" ( chọn cái này dùng quickselect cho nhanh )

×