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

vanhuyou

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

    85
  • Đã tham gia

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

  • Ngày trúng

    3

Bài đăng được đăng bởi vanhuyou


  1. Chào các bác, em có download được trên diễn đàn 1 lisp xuất chiều dài đoạn polyline vào block attributes. Lisp đó dùng như sau:

     - Click chọn đoạn polyline hoặc line

     - Click vào attributes của block mà mình muốn xuất chiều dài vào.

    Nhưng khi xuất thì nó sẽ xoá text có sẵn của attributes đó, em nhờ các bác sữa giúp em là khi xuất vào attributes thì nó ghi tiếp vào chứ đừng xoá đi text có sẵn.

    Em gửi file lisp đính kèm, nhờ các bác sữa giúp em, cám ơn các bác.

    image.thumb.png.0857822c70443bc46fa2ddaa74afe2df.png

    TCDT-tinh chieu dai ghi ra block att.lsp


  2. Chào các bác trong diễn đàn. Mình có 1 block thép vẽ bằng phần mềm kata, khi dùng DATAEXTRACTION để lấy dữ liệu của các attribute để thống kê thép thì nó báo lỗi NON-UNIFORM SCALED BLOCKS, lúc xuất ra thì nó báo lỗi như này, có bác nào biết lỗi này và cách khắc phục chỉ mình với. Cám ơn các bác.

    image.png.36fa89499a3f6805a53e6b12abd91833.png

    image.png.98c1922ec9c11e6a60544b0cc491e946.png

    Drawing1.dwg


  3. 5 phút trước, Doan Nguyen Van đã nói:

    Định không viết vì yêu cầu không rõ ràng và mơ hồ và cũng có bác nhắc nhưng tại cứ nghĩ đến lại thấy muốn làm, lên lại thấy bác Duy viết rồi, nhưng mất công viết nên vẫn đăng vậy

    
    (vl-load-com)
    (defun c:test (/ ss tong ent ent1 ent2 ent3 lst nd lststr ketqua ovr a b c text id x y )
      (setq ss (acet-ss-to-list (ssget (list (cons 0 "*DIM*") ))))
    	(setq lst (list))
    	(foreach ent1 ss
    	  (if (Vl-string-search "%%" (dxf 1 ent1)) (Progn
    						(setq nd (substr (dxf 1 ent1) (+ (Vl-string-search "%%" (dxf 1 ent1)) 1)))
    						(or (vl-position nd lst) (setq lst (append lst (list nd))))
    						))
    	  )
     
      (setq lststr (list))
        (setq lst (vl-sort lst '(lambda (x y) (< (atoi (substr x 4 (- (Vl-string-search "a" x) 3))) (atoi (substr y 4 (- (Vl-string-search "a" y) 3)))))))
    								  
      (foreach ent2 lst
        
      (setq tong 0)
      (foreach ent ss
        (if (Vl-string-search ent2 (dxf 1 ent)) (progn
        (setq ovr (dxf 1 ent))
      (setq a (vl-string-search "X" ovr)
     	    b (vl-string-search "%%" ovr)) 
      (setq	c (substr ovr (+ a 2) (- b (1+ a)))
    	tong (+ tong (atoi c)))
    
        )))
        (setq str (strcat (itoa tong) ent2))
        (setq lststr (append lststr (list str)))
        )
      (Setq ketqua "")
      
    
      (foreach ent3 lststr
        (setq ketqua (strcat ketqua "\n" ent3))
        )
        (if (and (setq text (car (entsel "\n Pick Text")))
    	     (Wcmatch (cdr (assoc 0 (entget text))) "*TEXT"))
          (vla-put-textstring (vlax-ename->vla-object text) ketqua)
        (alert ketqua) )
    )
    (defun dxf (id ent)
      (cdr (assoc id (entget ent))))

    Untitled.png.b43d42546db335e5dbe6b4de16d0da01.png

    Tuyệt vời quá bác ơi. Cám ơn bác nhiều nhiều.


  4. 13 giờ trước, Doan Nguyen Van đã nói:
    
    (vl-load-com)
    (defun c:test (/ ss tong ent ovr a b c text)
      (setq ss (acet-ss-to-list (ssget (list (cons 0 "*DIM*")))))
      (setq tong 0)
      (foreach ent ss
        (setq ovr (vla-get-textoverride (vlax-ename->vla-object ent)))
     (if  (setq a (vl-string-search "X" ovr)
     	    b (vl-string-search "%%" ovr)) (progn
      (setq	c (substr ovr (+ a 2) (- b (1+ a)))
    	tong (+ tong (atoi c)))
      ))
        )
        (if (and (setq text (car (entsel "\n Pick Text")))
    	     (Wcmatch (cdr (assoc 0 (entget text))) "*TEXT"))
          (vla-put-textstring (vlax-ename->vla-object text) (itoa tong))
        (alert (itoa tong)) )
      )

    Không hiểu rõ ý yêu cầu lắm, viết thế này chủ thớt xem được chưa

    image.png.e7498d53517390e5b4f2b9020c165054.png

    Bạn có thể thêm sửa lại là: hiện ra bảng thông báo hoặc ghi ra text được không. Cám ơn bạn.

    • Vote giảm 1

  5. Chào các bác, em có download được 1 dim ghi số lượng đai vào TEXT OVERRIDE của DIM, nhờ các bác giúp tạo cái lisp để cộng lại số lượng của các TEXT OVERRIDE đó vì mỗi lần cộng phải bấm máy mất thời gian. Mong các bác giúp đỡ, cụ thể là:

    - Chọn DIM cần cộng

    - Đưa ra số lượng lên bảng thông báo hoặc chọn text để ghi với cú pháp: 13∅6a200

    Mong các bác giúp đỡ.

    image.png.062a3868690fff995ca630b4ed6906df.png

     

    Drawing1.dwg

    • Vote giảm 1

  6. Vào lúc 23/2/2019 tại 08:56, Doan Nguyen Van đã nói:
    
    (vl-load-com)
    (defun c:SL ( / luu lay a1 c demo str ent sel)
    (setq luu (getvar "osmode"))
    (setq lay (getvar "clayer"))
    (setq a1 (getdist "\nCh\U+1ECDn kho\U+1EA3ng r\U+1EA3i th\U+00E9p: ")) 
    (or (and a (or (= (type a) 'int) (= (type a) 'real))) (setq a 200))
    (setq a (cond ((getdist (strcat "\nKho\U+1EA3ng c\U+00E1ch thanh th\U+00E9p <" (rtos a 2 2) ">:"))) (a)))
    (or (and hbv (or (= (type hbv) 'int) (= (type hbv) 'real))) (setq hbv 10))
    (setq hbv (cond ((getreal (strcat "\nduong kinh thep <" (rtos hbv 2 2) ">: "))) (hbv)))
    (setq c (+ (/ a1 a) 1))
      (if (setq sel (car (entsel "\nPick Polyline hoac Pick khoang trang de nhap chieu dai")))
        (setq *num (vla-get-length (vlax-ename->vla-object sel))) (progn 
      (or *num (setq *num 500))
      (or (setq num (getreal (strcat "\n Chieu dai thanh thep <" (rtos *num 2 0) ">:" )))
      (setq num *num))
      (setq *num num)))
      (alert (rtos *num 2 0))
      (setq demo (/ *num 10))
      (setq str (strcat (rtos demo 2 0) "0"))
      (while (setq ent (nentsel "\nCh\U+1ECDn ghi gi\U+00E1 tr\U+1ECB (Text ho\U+0103c ATT):" ))
    (and (wcmatch (cdr (assoc 0 (entget (car ent)))) "ATTRIB,*TEXT")
    (vla-put-textstring (vlax-ename->vla-object  (car ent)) (strcat (rtos c 2 0) "%%c" (rtos hbv 2 0) "a" (rtos a 2 0) "-" str ) )))
    (SETVAR "clayer" lay)
    (setvar "osmode" luu)
    (princ)
    )

    Pick Polyline hoặc nhập chiều dài nhé bạn

    Cám ơn bạn


  7. 5 giờ trước, Doan Nguyen Van đã nói:
    
    (defun c:SL ( / luu lay a1 a hbv c *num num demo str ent)
    (setq luu (getvar "osmode"))
    (setq lay (getvar "clayer"))
    (setq a1 (getdist "\nCh\U+1ECDn kho\U+1EA3ng r\U+1EA3i th\U+00E9p: ")) 
    (or (and a (or (= (type a) 'int) (= (type a) 'real))) (setq a 200))
    (setq a (cond ((getdist (strcat "\nKho\U+1EA3ng c\U+00E1ch thanh th\U+00E9p <" (rtos a 2 2) ">:"))) (a)))
    (or (and hbv (or (= (type hbv) 'int) (= (type hbv) 'real))) (setq hbv 10))
    (setq hbv (cond ((getreal (strcat "\nduong kinh thep <" (rtos hbv 2 2) ">: "))) (hbv)))
    (setq c (+ (/ a1 a) 1))
      (or *num (setq *num 500))
      (or (setq num (getreal (strcat "\n Chieu dai thanh thep <" (rtos *num 2 0) ">:" )))
      (setq num *num))
      (setq *num num)
      (setq demo (/ *num 10))
      (setq str (strcat (rtos demo 2 0) "0"))
      (while (setq ent (nentsel "\nCh\U+1ECDn ghi gi\U+00E1 tr\U+1ECB (Text ho\U+0103c ATT):" ))
    (and (wcmatch (cdr (assoc 0 (entget (car ent)))) "ATTRIB,*TEXT")
    (vla-put-textstring (vlax-ename->vla-object  (car ent)) (strcat (rtos c 2 0) "%%c" (rtos hbv 2 0) "a" (rtos a 2 0) "-" str ) )))
    (SETVAR "clayer" lay)
    (setvar "osmode" luu)
    (princ)
    )

    Bạn xem đã đạt chưa? 

    Hi bạn, ở đoạn - Chiều dài thanh thép (làm tròn lên 10) bạn có thể giúp mình sửa thành 2 lựa chọn:

    1. Nhập trực tiếp chiều dài

    2. Chọn poliline có sẵn (làm tròn lên 10)

    Mong bạn giúp mình.

    • Vote giảm 1

  8. Chào các bác, em có 1 lisp download ở trên mạng. Đó là lisp ghi chú thép vào text có sẵn, lệnh là như thế này:

    - Chọn khoảng rải thép

    - Khoảng cách thanh thép

    - Đường kính thép

    - Chọn ghi giá trị (text hoặc ATT)

    Các bác giúp em thêm 1 bước nữa là:

    - Chọn khoảng rải thép

    - Khoảng cách thanh thép

    - Đường kính thép

    - Chiều dài thanh thép (làm tròn lên 10)

    - Chọn ghi giá trị (text hoặc ATT)

    Nó ra xuất ra text hoặc ATT với cú pháp: 38∅10a200-5850

    File em đã up lên, cám ơn các bác.

    SL-tinh so luong thep dai ghi ra text.lsp


  9. Chào các bác tình hình là em mới tạo cái block động để ghi chú thép, nhưng có 1 điều chưa được như ý.

    Cái Distance 2 thì em điều chỉnh thì cái polyline trong nhày theo, nhưng cái Distance 1Distance 3 thì polyline nó không điều chỉnh theo. Nhờ các bác xem em có làm sai chổ nào mà nó bị như vậy.

    image.png.b8cd988213539466a98422fddddba8b3.png

    Block động thép.dwg


  10. Chào các bạn, tình hình là mình mới tìm được lisp xuất dữ liệu text từ cad sang excel, nhưng có 1 bất cập là mỗi lần xuất là excel lại mở 1 file mới, các bạn giúp mình mỗi lần xuất như vậy thì nó xuất ra trên 1 file thôi . Mình gửi file lên các bạn giúp mình với. Thank !http://www.cadviet.com/upfiles/7/154599_ttt.lsp

    • Vote giảm 2
×