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

Danh Cong

Moderator
  • Số lượng nội dung

    1.382
  • Đã tham gia

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

  • Ngày trúng

    114

Bài đăng được đăng bởi Danh Cong


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

    ví dụ tôi có 1 dòng gồm nhiều số ví dụ dòng gồm các số 7.64 ; 7.66 và 7.72 , tôi muốn  đoạn lisp copy các số đấy đến vị trí mới mà giá trị tại vị trí mới sau khi copy là 7.65 ; 7.66 và 7.73 tứ là tăng lên 0.01 so với dãy số cũ.

    lispcopy.dwg

    Tôi viết cho bạn code này.

    CongText-(CONGTEXT).lsp


  2. 58 phút trước, NGUYENVANHIEUGTVT đã nói:

    Mình có lisp chọn nhanh đối tượng này lúc load lên thì đôi lúc thì sự dụng được nhưng đôi lúc báo lỗi như hình. mà tìm trên diễn đàn thì có lisp tương tự của Bác KETXU thì load xong dùng đc nhưng 1 số lisp khác lại báo lỗi.
    Mọi người ktra và có thể gỡ rối dùm mình đc k ạ. Cảm ơn MN quan tâm..
    Lisp mình gắn ở đây luôn ạ.

    
    (prompt "\n		SD  : select dimension(s)")
    (defun c:SD (/ sset ssl)
      (setq sset (ssget (list '(-4 . "<OR") '(0 . "DIMENSION") '(0 . "LEADER") '(-4 . "OR>") ))
    	ssl (sslength sset)
      )
      (princ (strcat (itoa ssl) " dimension(s) found !"))
      (command "_.PSELECT" "p" "")
      (princ)
    );defun c:SD
    
    
    ;===================================================================
    (prompt "\n		SB  : select block(s)")
    (defun c:SB (/ sset ssl)
      (setq sset (ssget (list '(0 . "INSERT") ))
    	ssl (sslength sset)
      )
      (princ (strcat (itoa ssl) " block(s) found !"))
      (command "_.PSELECT" "p" "")
      (princ)
    );defun c:SB
    
    
    ;===================================================================
    (prompt "\n		ST  : select text(s)")
    (defun c:ST (/ sset ssl)
      (setq sset (ssget (list '(0 . "TEXT") ))
    	ssl (sslength sset)
      )
      (princ (strcat (itoa ssl) " text(s) found !"))
      (command "_.PSELECT" "p" "")
      (princ)
    );defun c:ST
    

     

    + Tôi xem sơ qua lisp của bạn. Thấy các sự lựa chọn không có gì đặc biệt, và đang đặt ra câu hỏi: Tại sao phải sử dụng lisp trong các trường hợp này, trong khi Cad đã có công cụ rất mạnh để lựa chọn cho các trường hợp của bạn , đó là lệnh Filter. Ngon , bổ , rẻ mà lại không dùng thì thật là phí:

    + Hướng dẫn sử dụng FILTER

    Video Youtube

    https://www.youtube.com/watch?v=n2U-BeUUtP8&amp;feature=youtu.be

     


  3. Vào lúc 9/8/2019 tại 10:15, Từ Nhân Đức Mạnh đã nói:

    Mọi người cho mình hỏi là khung mv bên trai của mình bị mặc định scale to fit và giá trị custom scale bằng 0. Nhập bất kì giá trị nào cũng đều nhảy về 0 và không chọn được custom hay bất kì giá trị scale nào tại standard scale. Bất kì khung mv nào tạo ở bản cad này đều bị thế. Khung mv bên phải là mình copy từ bản cad khác vào và không hề bị. Có ai từng bị mắc lỗi này không? Cách sửa sao vậy?

    + Gửi bản vẽ cad lên đi bạn. Chữa bệnh phải cầm tay bệnh nhân, làm thầy bói đoán mò thì không ra bệnh được.


  4. 15 giờ trước, Bee đã nói:

    Tự dưng bị cái lỗi không thao tác làm gì được trong layout file đính kèm.

     

    Bác nào dính rồi chỉ em cách fix.

     

    Thanks

    error.dwg

    + Bản vẽ này do bác bật chế độ Snap F9 + Khoảng cách Snap =10 ( Bảng OSnap, tab Snap and Gird)   + Khung Layout đang để rất nhỏ

    ----> Tất cả điều trên dẫn đến bác không vẽ được vì nó bắt điểm tại 1 chỗ.

    ----> Bác chỉ cần tắt F9 đi là giải quyết được vấn đề ^^


  5. 17 giờ trước, tichlac đã nói:

    image.png.5f5ca335ec75babad117e6333997ae62.png

    Xin cập nhập tọa độ các điểm ban đầu và sau khi dịch chuyển. 

    + Tôi sẽ hướng dẫn bạn mà không cần phải nhập lisp:

    B1. Gõ lệnh : QLeader  ---> Nhập "S" ( Để vào Setting) ---> Chỉnh số điểm Node trong Qleader bằng 2.

    B2. Tạo bảng Excel như hình. Copy toàn bộ chữ màu đỏ dán vào dòng Command Line trong cad rồi xem kết quả.

     

    QLeader.png

    Excel.jpg

    KQ.png

    • Like 1
    • Vote tăng 1

  6. + Viết thì cũng được. Nhưng cho tôi hỏi bạn gặp khó khăn nào trong quá trình này, việc đếm hay là ghi ra Text?

    + Nếu là đếm, thì tôi sẽ hỏi bạn biết cách dùng lệnh Filter chưa, đã biết dùng bảng Properties ( Ctrl+1) chưa?

    Thao tác chẳng mất mấy thời gian, và cũng nhanh hơn nếu bạn đếm... Bằng mắt .


  7. 7 phút trước, Biet ve CAD đã nói:

    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)

     

    Thế thì lại mạnh quá rồi anh. @@


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

    Hình như hơi đi xa quá.

    
    (defun c:ha(/ en)  (sssetfirst nil (ssget (list (cond ((assoc 420 (setq en (entget(car(entsel)))))) ((assoc 62 en)) ((cons 62 256)))))))
    

    + Bình luận tí cho xôm xôm gia đình thôi bác ơi ^^. Mà code bác tương đương bác #Nhoclangbat mà :)

    + Mà hỏi dại bác tí. (assoc 420) trả về gì vậy ạ. Em chưa làm với mấy số to to này bao giờ :v

     

    • Vote tăng 1
    • Vote giảm 1
×