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

nh0cxip0

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

    6
  • Đã tham gia

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

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


  1. Vào lúc 21/8/2022 tại 08:59, vietduc147258 đã nói:

    Tôi không biết viết lisp, nhưng có thể giúp đỡ bạn được 1 phần:

    tôi ghép lisp tính độ dài với lưu vào clipboad lại 1

    bạn click vào đối tượng nó sẽ lưu độ dài vào bộ nhớ cho bạn

    Bạn phải click vào test cần paste và paste nó vào.

    Tôi không có lisp nào gán giá trị đó vào test nên bạn làm thủ công bước này.

    Mọi người suy nghĩ quá phức tạp, là muốn làm phát 1 ăn ngay nên mới thấy khó. 

    Bạn chờ ai đó giúp thêm nha

     

     

    (defun c:lc ( / e i l s )
        (if (setq s
                (ssget
                   '(   (0 . "ARC,CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE")
                        (-4 . "<NOT")
                            (-4 . "<AND")
                                (0 . "POLYLINE") (-4 . "&") (70 . 80)
                            (-4 . "AND>")
                        (-4 . "NOT>")
                    )
                )
            )
            (progn
                (setq l 0.0)
                (repeat (setq i (sslength s))
                    (setq e (ssname s (setq i (1- i)))
                          l (+ l (vlax-curve-getdistatparam e (vlax-curve-getendparam e)))
                    )
                )
                
                (vlax-invoke
        (vlax-get
            (vlax-get (setq 2ClipB (vlax-create-object "htmlfile"))
                'ParentWindow
            ) 'ClipBoardData )  'SetData "Text" (rtos l 2 2)
        )

                )
        )
        (princ)
    )

     

     

     

     

    Bạn lưu ý là lisp lấy từ lisp tính tổng độ dài nên chọn nhiều đối tượng được. nếu bạn chọn nhiều đối tượng giá trị sẽ bị sai đó

     

    thank bạn, cách này nhanh hơn thủ công làm một tí.
    Bạn dưới làm đc rồi.

    • Vote giảm 1

  2. Vào lúc 21/8/2022 tại 09:23, ngokiet đã nói:

    Sái thử. Viết sơ vừa đủ chạy cho vui thôi . Không chắc dim khác chạy tốt nhe

     

    Nếu bạn làm nhiều và thường xuyên thì nên bỏ ra ít tiền cho ai đó viết cho 1 lisp. Chỉ càn vẽ xong chọn tất cả là nó tự dim và lạp bảng cho bạn luôn.

    
    (defun c:ct(/ en1 en2 st)
      (if (and (setq en1 (car (entsel "/nChon dim:")))
    	   (eq (cdr (assoc 0 (setq en1 (entget en1)))) "DIMENSION")
    	   (setq en2 (car (entsel "/nChon text:")))
    	   (wcmatch (cdr (assoc 0 (entget en2))) "TEXT,MTEXT"))
        (entmod (list (cons -1 en2)
    		  (cons 1 (rtos (cdr (assoc 42 en1)) 2 1)))))
      (princ))

     

    Thank bạn mình dùng đc rồi

    Nhanh hơn rất nhiều khi phải nhấn vào dim Ctl + C rồi ra click dzo test Ctl + V


  3. Vào lúc 31/3/2018 tại 17:33, tien2005 đã nói:

    Thử xem được chưa

    
    ;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;chuong trinh thong ke block - Pham Tien Chien - XMT
    ;phien ban V1.0
    ;================
    (defun c:bc( / ss bn sl lst txt n)
      (defun LM:effectivename ( obj )
        (vlax-get-property obj
            (if (vlax-property-available-p obj 'effectivename)
                'effectivename
                'name
            )
        )
    )
    (setq ss (ssget '((0 . "insert"))))
    (if (null ss) (exit))
      (setq
        n 0
    ;;;    ent (entget (ssname ss 0))
    ;;    bn (cdr (assoc 2 ent))
    ;;    lst (list (cons bn 1))
        )
     
      (repeat (sslength ss)
        (setq
          bn (LM:effectivename (vlax-ename->vla-object (ssname ss n)))
    ;;;      ent (entget (ssname ss n))
    ;;      bn (cdr (assoc 2 ent))
          )
        (if (not (assoc bn lst))
          (setq lst (cons (cons bn 1) lst))
          (setq
    	sl (cdr (assoc bn lst))
    	sl (1+ sl)
    	lst (subst (cons bn sl) (assoc bn lst) lst)
    	)
          )
        (setq n (1+ n))
        )
    (setq txt "")
    (setq n 0)
    (repeat (length lst)
      (setq a (nth n lst))
      (setq txt (strcat txt "\n" (itoa (cdr a)) "....." (car a) ))
      (setq n (1+ n))
      )
    (command "_Mtext" pause pause txt "")
    (princ)
    );the end
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

     

    Lisp của bác chỉ ra kết quả tên block gốc, mình có block att thì muốn hiển thị kết quả ra nội dung của block att đó đc không bác, dùng để đếm block cửa... trong bản vẽ. thank bác

    • Vote giảm 2
×