Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
nguyensang9798@gmail.com

Gán text là số đã cho trước vào polyline 2D và chia đều theo khoảng cách (kín hoặc hở)

Các bài được khuyến nghị

Em chào anh chị trong diễn đàn ạ
Công việc của em hiện tại cần gán 1 text cao độ có sẵn vào 1 polyline kín hoặc hở,
Kính mong ac lướt qua giúp em với ạ
Command : Test
- chọn text có sẵn là cao độ 
- chọn polyline 2D cần gán
- lisp hỏi nhập chiều cao chữ
- lisp hỏi khoảng cách chia đều (mặc định là 1.5, có thể nhập tuỳ ý)
- kết quả trả về nhóm text được gán nằm trong một lớp layer tên Caodo_Pline ạ

TESt.dwg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Một đoạn code đã được edit sau khi nhờ chat GPT

(defun c:Test ( / textEnt textVal plineEnt layerName textHeight dist pllength pt i) 
  (setq layerName "Caodo_Pline")  
  (setq textEnt (car (entsel "\nChon Text có san là cao do: ")))
  (if (and textEnt (= (cdr (assoc 0 (entget textEnt))) "TEXT"))
    (setq textVal (cdr (assoc 1 (entget textEnt)))) ;; L?y giá tr? n?i dung
    (progn
      (princ "\nKhông phai doi tuong TEXT. Thoát lenh.")
      (exit)
    )
  )  
  (setq plineEnt (vlax-ename->vla-object (car (entsel "\nChon Polyline can gán cao do: "))))  

  (setq textHeight 0.2)

  
  (setq dist (getreal "\nNhap khoang cách chia deu [Mac dinh 1.5]: "))
  (if (not dist) (setq dist 1.5)) 

  
  (setq pllength (vlax-curve-getDistAtParam plineEnt (vlax-curve-getEndParam plineEnt)))

 
  (setq i 0)
  (while (< (* i dist) pllength)
    (setq pt (vlax-curve-getPointAtDist plineEnt (* i dist)))
    (entmake
      (list '(0 . "TEXT")
            (cons 8 layerName)    ;; Ð?t vào Layer Caodo_Pline
            (cons 1 textVal)      ;; N?i dung Text
            (cons 40 textHeight)  ;; Chi?u cao ch?
            (cons 10 pt)          ;; Ði?m chèn
            (cons 50 0)           ;; Góc xoay
      )
    )
    (setq i (1+ i)) ;; Tang ch? s? l?p
  )

  (princ "\nHoàn thành gán Text cao do.")
)

 

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

 

39 phút trước, cuongtk2 đã nói:

Một đoạn code đã được edit sau khi nhờ chat GPT


(defun c:Test ( / textEnt textVal plineEnt layerName textHeight dist pllength pt i) 
  (setq layerName "Caodo_Pline")  
  (setq textEnt (car (entsel "\nChon Text có san là cao do: ")))
  (if (and textEnt (= (cdr (assoc 0 (entget textEnt))) "TEXT"))
    (setq textVal (cdr (assoc 1 (entget textEnt)))) ;; L?y giá tr? n?i dung
    (progn
      (princ "\nKhông phai doi tuong TEXT. Thoát lenh.")
      (exit)
    )
  )  
  (setq plineEnt (vlax-ename->vla-object (car (entsel "\nChon Polyline can gán cao do: "))))  

  (setq textHeight 0.2)

  
  (setq dist (getreal "\nNhap khoang cách chia deu [Mac dinh 1.5]: "))
  (if (not dist) (setq dist 1.5)) 

  
  (setq pllength (vlax-curve-getDistAtParam plineEnt (vlax-curve-getEndParam plineEnt)))

 
  (setq i 0)
  (while (< (* i dist) pllength)
    (setq pt (vlax-curve-getPointAtDist plineEnt (* i dist)))
    (entmake
      (list '(0 . "TEXT")
            (cons 8 layerName)    ;; Ð?t vào Layer Caodo_Pline
            (cons 1 textVal)      ;; N?i dung Text
            (cons 40 textHeight)  ;; Chi?u cao ch?
            (cons 10 pt)          ;; Ði?m chèn
            (cons 50 0)           ;; Góc xoay
      )
    )
    (setq i (1+ i)) ;; Tang ch? s? l?p
  )

  (princ "\nHoàn thành gán Text cao do.")
)

 

Cháu cảm ơn Bác. Lisp chạy đúng ý cháu rùi ạ

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×