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

divine kai

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

    83
  • Đã tham gia

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

Bài đăng được đăng bởi divine kai


  1. 2 phút trước, Duong Nhat Duy đã nói:

    Text luôn ở tâm hatch mà bạn, còn tâm hatch nó ở bên ngoài hatch là do hatch ko phải là đa giác lồi, cái này chấp nhận thôi.

    Còn hatch ko có điểm đặt và lisp ko tạo ra text thì mình ko rõ, bạn thử gửi trường hợp cụ thể lên mình xem.

    image.png.ce8f071fbd005edd9e3fbbabb0e42f43.png

    cái kia thì em sửa tay đc ạ còn cái trường hợp nhiều mảng hatch chung một điểm point ntn này anh thì nó chỉ tạo 1 text trong khi đó có rất nhiều mảng hatch có trường hợp : 3-7 mảng


  2. 2 phút trước, Duong Nhat Duy đã nói:

    Cái này mình đoán là bạn dùng text đó để phân loại đất, nữa là đỡ đc 1 bước rải text thủ công khi cần điền diện tích.

    Thôi thì mình cứ gửi lisp điền diện tích lên hatch luôn, còn mục đích bạn lấy text đó làm gì thì làm.

    [H2T] Hatch to Text.lsp

    bạn có thể sửa giúp mình là điền tên layer lên hatch không vì cái mình cần là tên layer ý...mình xin cảm ơn 

    image.thumb.png.8e490c8a9c2be4f852549c145c7a91fe.png

     


  3. 22 phút trước, duy782006 đã nói:

    Câu hỏi chưa có rỏ nên có gấp cũng chờ tới tết.

    -Bảng cad đưa kèm theo chưa có đủ các loại ký hiệu đất. Nếu gặp hatch khác thì làm nào?

    -Có 2 loại đất có cùng ký hiệu hatch, dựa vào gì để biết cái nào là chữ gì.

    -Dựa theo layer thì có chắc là bản nào cũng đúng layer không?

    Khi nào trả lời đủ hết mà không còn yếu tố bí ẩn thì may ra có người sẽ viết lisp cho bạn.

    cảm ơn anh đã góp ý

    - em sẽ đổi tên layer của từng hatch theo bảng layer kí hiệu phía bên phải, ví dụ như hatch giáo dục thì em sẽ đổi tên layer theo tên bẻng mô tả

    image.png.9a4e5205750bff9d6bac5843a20c3b4e.png

    nên gặp hatch khác thì em cũng sẽ đổi tên lại ạ.

    -text em tạo sẽ dựa vào tên layer nên dù loại hatch có cùng kí hiêu như nhau thì tên layer sẽ khác nhau 

    -bản cad nào em cũng sẽ đổi tên tất cả loại hatch theo đúng bảng mô tả của nó

    vì em không hiểu nhiều về lisp nên k biết nhân tố bí ẩn là gì ạ mong anh chỉ bảo

     


  4. Em có sưu tầm một lisp trên diễn đàn xin các anh giúp em sửa lại một tý ạ:

    là lisp chọn vùng hatch rồi tạo text trên vùng hatch đó như yêu cầu trên của em ạ, mong các anh giúp thật sự thì em rất cần ạ....( kết quả cho ra không cần có diện tích ạ, em chỉ cần có các text đặt trên từng mảng quy hoạch là đc )

    dth.lsp

    tkh (1).lsp


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

    Block của bạn là block thuôc tính, giờ chỉ cần viết lisp nối 2 thuộc tính I "." GDx với nhau rồi chèn ra các text là được

    Mình có lisp tạo danh mục bản vẽ này, trong trường hợp của bạn coi như 2 thuộc tính block bạn cần tạo danh mục

    Sau đó dùng tiếp chức năng nối text của lisp

    video: 

    Link diễn đàn:

    https://www.cadviet.com/forum/topic/176725-lisp-tạo-nhanh-danh-mục-bản-vẽ/

     

    em không hiểu y lắm 


  6. hello mọi người, em làm quy hoạch xây dựng có các block như trong file cad giờ em muốn phá block này là lấy thông tin bên trong là I.GDx

    em đã thử dùng lệnh burst nhưng text lại bị phá là thành riêng lẻ là I vs GDx riêng lẻ, có cách nào hoặc lisp nào có thể giúp em lấy đc cả hai thông tin này cùng một text không ạ, ví dụ là I.20, i.03...  em xin cảm ơn

    em gửi file: Drawing3_2007.dwg


  7. 59 phút trước, huunhantvxdts đã nói:

    Mình có viết mấy lisp về quy hoạch (theo đặt hàng) nếu bạn cần có thể trao đổi cụ thể để được lisp phục vụ tốt cho công việc liên hệ mình

    https://www.facebook.com/lienkettudong/

    em là sinh viên thực tập nên không có điều kiện đó đâu anh, dù sao em cũng cảm ơn..


  8. 3 giờ trước, Doan Nguyen Van đã nói:

    Bạn dùng thử lisp này xem, chưa test hết các trường hợp, mới đầu dùng ok 

    
    (vl-load-com)
    (defun c:xt (/ ss lstl ent ss1 lst lst2 en en2 en3 str)
    (setq ss  (ssget '((0 . "MTEXT"))))
      (command "_-OVERKILL" ss "" "D")
      (setq ss1 (ssadd) ent (entlast))
    (setq qa (getvar "QAFLAGS"))
    (setvar "QAFLAGS" 1)
    (command "._explode" ss "" )
    (setvar "QAFLAGS" qa)
      (while (setq ent (entnext ent))
     (setq ss1 (ssadd ent ss1)))
        (setq ss1 (acet-ss-to-list ss1))
        (setq ss1 (vl-sort ss1 '(lambda (x y) (cond	( (= (cadr (cdr (assoc 10 (entget x)))) (cadr (cdr (assoc 10 (entget y)))) )
    					    (< (car (cdr (assoc 10 (entget x)))) (car (cdr (assoc 10 (entget y))))))
    					     ((> (cadr (cdr (assoc 10 (entget x)))) (cadr (cdr (assoc 10 (entget  y))))))  ))))
        (while (setq en (car ss1))
          (setq ss1 (cdr ss1))
          (setq lst2 (list en))
          (while (and (setq en2 (car ss1))
    		  (= (cadr (cdr (assoc 10 (entget en)))) (cadr (cdr (assoc 10 (entget en2)))) ) )
    	(setq ss1 (cdr ss1))
    	(setq lst2 (append lst2 (list en2)))
    	)
          (if (> (length lst2) 1) (progn
    	(setq str "")
    	(mapcar '(lambda (x) (setq str (strcat str (cdr (assoc 1 (entget x)))))) lst2)
    	(setq en3 (car lst2))
    	 (mapcar '(lambda (x) (entdel x) ) (cdr lst2))
    	(entmod (subst (cons 1 str) (assoc 1 (entget en3)) (entget en3)))
    	) )
          )
      (princ)
      )
    

     

    em cảm ơn anh nhiều, lisp sài rất tốt


  9. Em xin chào mấy anh, hiện tại em có bản cad quy hoạch, có rất nhiều loại quy hoạch, giờ em muốn tạo thông tin cho từng loại quy hoạch, ví dụ như nếu vùng hatch là loại quy hoạch nào thì sẽ gán loại quy hoạch đó như ví dụ em có tạo trong file, vì nó nhiều vùng và sợ bị sót nên làm thủ công không khả thi lắm ạ, mong mọi người giúp em, em cảm ơn ......(đây là file ạ)

     

    Drawing1_2007.dwg


  10. 3 giờ trước, Duong Nhat Duy đã nói:

    Lisp của cụ Lê Mác đúng là không dùng cho Mtext có xuống dòng (vẫn dùng được mà dùng xong bị thành 1 dòng). Bạn thông cảm, ko phải lisp của mình hề hề.

    Vậy bạn còn ví dụ nào mà Mtext 1 dòng, dùng lisp UFMT, sau đó X mà text bị rời rạc ko đưa mình xem.

    mình không có trường hợp đó....


  11. Vào lúc 10/9/2019 tại 09:16, Doan Nguyen Van đã nói:

    nó bị như vầy nè anh....

    
    (defun c:te (/ ss lstl ent ss1 lst lst2 en en2 en3 str pref)
      (vl-load-com)
      (setq ss (acet-ss-to-list (ssget (list (cons 0 "MTEXT")))))
      (setvar 'cmdecho 0)
        (setq lstl (list "layer1" "layer2" "layer3" "layer4" "layer5"))
      (setq i 0)
      (mapcar '(lambda (x)(if (not (tblsearch "layer" x)) (progn (setq i (1+ i)) (command "-LAYER" "M" x "C" (itoa i) "" ""))) ) lstl)
      (foreach ent ss
        (setq lst (list))
        (setq str (cdr (assoc 1 (entget ent)))) 
        (while (vl-string-search "\\P" str)
          (setq stri (substr str 1 (vl-string-search "\\P" str)))
          (setq lst (append lst (list stri)))
          (setq str (substr str (+ (vl-string-search "\\P" str) 3)))
          )
        (if (/= str "") (setq lst (append lst (list str))))
        (if (or (= (length lst) 4)
    	    (= (length lst) 5) )(progn
    			    (setq pt (cdr (assoc 10 (entget ent))))
    			    (setq pref (vl-string-right-trim "1234567890" (car lst)))			    
    	(mapcar '(lambda (str lay) (if (and (/= str (car lst)) (/= pref "")) (setq str (strcat pref str)))
    		   (maketext pt str lay ent )
    		   (setq pt (polar pt (* 1.5 pi) (vla-get-linespacingdistance (vlax-ename->vla-object ent) )) ) ) lst lstl)
    			    (entdel ent)
    			     ) 
          )
        )
      (setvar 'cmdecho 1)
      (princ)
      )
    (defun maketext (point noidungtext lay entg / oldla)
      (vla-move (vla-copy (vlax-ename->vla-object entg)) (vlax-3d-point (cdr (assoc 10 (entget entg)))) (vlax-3d-point point))
      (vla-put-textstring (vlax-ename->vla-object (entlast)) noidungtext)
      (vla-put-layer (vlax-ename->vla-object (entlast)) lay)
      (vla-put-color (vlax-ename->vla-object (entlast)) 256))
    

    image.png.b825273a6539058889eeb6ac417bb6cd.png


  12. Vào lúc 10/9/2019 tại 09:16, Doan Nguyen Van đã nói:

    Đã giải quyết vấn đề 4-5 hàng cho bạn, chọn 3 hay 4 hay 5 hàng đều được 

    
    (defun c:te (/ ss lstl ent ss1 lst lst2 en en2 en3 str pref)
      (vl-load-com)
      (setq ss (acet-ss-to-list (ssget (list (cons 0 "MTEXT")))))
      (setvar 'cmdecho 0)
        (setq lstl (list "layer1" "layer2" "layer3" "layer4" "layer5"))
      (setq i 0)
      (mapcar '(lambda (x)(if (not (tblsearch "layer" x)) (progn (setq i (1+ i)) (command "-LAYER" "M" x "C" (itoa i) "" ""))) ) lstl)
      (foreach ent ss
        (setq lst (list))
        (setq str (cdr (assoc 1 (entget ent)))) 
        (while (vl-string-search "\\P" str)
          (setq stri (substr str 1 (vl-string-search "\\P" str)))
          (setq lst (append lst (list stri)))
          (setq str (substr str (+ (vl-string-search "\\P" str) 3)))
          )
        (if (/= str "") (setq lst (append lst (list str))))
        (if (or (= (length lst) 4)
    	    (= (length lst) 5) )(progn
    			    (setq pt (cdr (assoc 10 (entget ent))))
    			    (setq pref (vl-string-right-trim "1234567890" (car lst)))			    
    	(mapcar '(lambda (str lay) (if (and (/= str (car lst)) (/= pref "")) (setq str (strcat pref str)))
    		   (maketext pt str lay ent )
    		   (setq pt (polar pt (* 1.5 pi) (vla-get-linespacingdistance (vlax-ename->vla-object ent) )) ) ) lst lstl)
    			    (entdel ent)
    			     ) 
          )
        )
      (setvar 'cmdecho 1)
      (princ)
      )
    (defun maketext (point noidungtext lay entg / oldla)
      (vla-move (vla-copy (vlax-ename->vla-object entg)) (vlax-3d-point (cdr (assoc 10 (entget entg)))) (vlax-3d-point point))
      (vla-put-textstring (vlax-ename->vla-object (entlast)) noidungtext)
      (vla-put-layer (vlax-ename->vla-object (entlast)) lay)
      (vla-put-color (vlax-ename->vla-object (entlast)) 256))

     

    anh ơi, anh có thể chỉnh lisp này cho ra đối tượng là text như lisp cũ, được không anh vì khi là đối tượng mtext khi em X ra thì nó bị vỡ đối tượng, em muốn X ra để sửa lỗi font

     

×