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

nguyenngoc02n

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

    7
  • Đã tham gia

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

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


  1. [Thuật toán]

       BƯỚC 1: GÕ LỆNH CHỌN TẬP HỢP CÁC ĐỐI TƯỢNG (có thể kết hợp chỉ chọn PLINE,LINE) dùng qua hàm

    (ssget '(( 0 . "LINE,LWPolyline")))

       BƯỚC 2: LỌC QUA TOÀN BỘ ĐỐI TƯỢNG LÀM CÁC CÔNG VIỆC SAU:

            - Lấy chiều dài của đối tượng đang sử lý (có ename được setq là "dt") gán giá trị này cho biến "L"

            - Lấy 1 điểm trên (gần) Pline, Line làm điểm chèn TEXT ký hiệu điểm này là p

            - Entmakex TEXT (hoặc Mtext) giá trị L tại điểm chèn p đã có ở trên

       BƯỚC 4: KẾT THÚC LỆNH

    [ VÍ DỤ]

    http://www.cadviet.com/forum/topic/47335-da-xong-lisp-xuat-chieu-dai-line-ra-text-co-san-va-co-tien-to-hau-to/

    [ Ví dụ 2]

     

    (defun c:test()
      (defun vText(str p k / xp yp)
        (entmakex
          (list
    '(0 . "TEXT")
    '(100 . "AcDbEntity")
    '(100 . "AcDbText")
    (cons 1 str);string
    (cons 7 (getvar "textstyle"));style
    (cons 8 (getvar "clayer"));layer
    (cons 62 256);color
    (cons 10 p);insertion point
    (cons 11 p);alignment point
    (cons 40 k);text height - change by suit
    (cons 41 1.0);text width
    (cons 50 0.0);1.5708 - vertical, 0.0 - horizontal
    (cons 51 0.0);oblique angle
    '(71 . 0);alignment
    '(72 . 0);alignment
    '(73 . 0);alignment
    )
          )    
        )
      (vl-load-com)
      (foreach dt (acet-ss-to-list (setq ss (ssget '(( 0 . "*LINE")))))
        (setq p (cdr(assoc 10 (entget dt))))
        (setq L (vla-get-length (vlax-ename->vla-object dt)))
        (vText (rtos L 2 4) p 25))
      (princ))
    

     

    Toàn bộ (defun vtext .... để xác định hàm con với 3 tham số đầu vào [nội dung string ; điểm chèn p; chiều cao chữ k] sẽ hoạt động in ra màn hình một Dtext với nội dung như string, tại điểm chèn p; với chiều cao chữ k

    Phần hoạt động chính chỉ đơn giản như sau:

     

      - foreach --... lọc qua một lượt toàn bộ đối tượng.

      - (setq p (cdr(assoc 10 (entget dt)))) xác định điểm p trên đối tượng

      - (setq L (vla-get-length (vlax-ename->vla-object dt))) xác định chiều dài từng đối tượng.

      - vtext (rtos L 2 4) p 25    in ra màn hinh Dtext nội dung "L", tại điểm p, chiều cao 25

    kết thúc

    Hay quá cám ơn bạn nhiều


  2. Bạn khai triển dựa vào lệnh tính chiều dài của từng line, pline line. Viết text chiều dài ra đầu của đoạn pLine đó. : )

    Lisp để viết text ra đầu đoạn pline bạn có không? Thây vì viết đầu đoạn mình viết giống như một text đề lên ngay tâm của line hay pline sẽ thể hiện rỏ ràng hơn.

    List để tính tổng chiều dài mình đã có rồi.

    Chúc bạn một ngày vui vẽ


  3. Mình đang code lại cái plugin trọng autocad2016 nhưng mình không thể đọc được file đó.

    Bạn nào biết phần mềm nào đọc được file *.TEXT chỉ giúp mình với hoặc nếu đọc được thì hổ trợ giúp mình với.

    Trong file đính kèm là nội dung của file mình không mở được.

    Cám ơn các cao thủ nhiều

×