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

Đánh số góc ranh

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

Ai giúp em sửa cái LISP này được không, em muốn đánh số 1 ở các góc trên đường LINE, POYLELINE mà sao lệnh cứ đánh ở giữa thửa vậy (em hông rành về LISP có sai sót gì bỏ qua)

(defun c:danhsogocranh (/ ss ent pt1 pt2 i layerName layerStatus)
  ;; Tạo lớp "GOCRANH" nếu chưa tồn tại
  (if (not (tblsearch "layer" "GOCRANH"))
    (command "._layer" "new" "GOCRANH" "")
  )

  ;; Quét tất cả các đối tượng LINE và POLYLINE trong bản vẽ
  (setq ss (ssget "X" '((0 . "LINE, POLYLINE"))))

  ;; Kiểm tra nếu có đối tượng LINE hoặc POLYLINE được chọn
  (if ss
    (progn
      (setq i 0)

      ;; Duyệt qua tất cả các đối tượng LINE và POLYLINE được chọn
      (repeat (sslength ss)
        (setq ent (ssname ss i))
        (setq i (1+ i))

        ;; Kiểm tra và lấy tên layer của đối tượng hiện tại
        (setq layerName (cdr (assoc 8 (entget ent))))  ;; Lấy tên layer của đối tượng
        (setq layerStatus (tblsearch "layer" layerName)) ;; Kiểm tra trạng thái layer (ON hay OFF)

        ;; Nếu layer đang ON, tiếp tục xử lý
        (if (and layerStatus (eq (cdr (assoc 70 layerStatus)) 0))  ;; Kiểm tra trạng thái của layer (0 = ON)
          
          (progn
            ;; Lấy điểm đầu và điểm cuối của đối tượng LINE hoặc POLYLINE
            (setq pt1 (vlax-curve-getstartpoint ent))
            (setq pt2 (vlax-curve-getendpoint ent))

            ;; Kiểm tra và thêm số tại điểm đầu nếu chưa có
            (if (not (ssget "X" (list (cons 0 "TEXT") (cons 10 pt1))))
              (command "_text" pt1 "0.5" "0" "1")
            )

            ;; Kiểm tra và thêm số tại điểm cuối nếu chưa có
            (if (not (ssget "X" (list (cons 0 "TEXT") (cons 10 pt2))))
              (command "_text" pt2 "0.5" "0" "1")
            )
          )
        )
      )
      (princ "\nĐã thêm số vào các điểm đầu và cuối của các đối tượng LINE/POLYLINE thuộc layer ON.")
    )
    (princ "\nKhông có đối tượng LINE hoặc POLYLINE nào được chọn.")
  )

  ;; Thông báo khi thực hiện xong lệnh
  (princ "\nLệnh DANHSOGOCRANH đã được thực hiện.")
)

(princ "\nLệnh DANHSOGOCRANH đã được tả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
(defun c:danhsogocranh (/ ss ent pt1 pt2 i layerName layerStatus)
  (vl-load-com)
  (setvar "CMDECHO" 0)
  (command "UNDO" "BE")
  (if (not (tblsearch "layer" "GOCRANH"))
    (command "._layer" "new" "GOCRANH" "")
  )
  (setq ss (ssget "X" '((0 . "LINE,POLYLINE,LWPOLYLINE"))))
  (setq os(getvar "OSMODE"))
  (setvar "OSMODE" 0)
  (if ss
    (progn
      (setq i 0)
      (repeat (sslength ss)
        (setq ent (ssname ss i))
        (setq i (1+ i))
        (setq layerName (cdr (assoc 8 (entget ent))))  ;; L?y tên layer c?a d?i tu?ng
        (setq layerStatus (tblsearch "layer" layerName)) ;; Ki?m tra tr?ng thái layer (ON hay OFF)
        (if (and layerStatus (eq (cdr (assoc 70 layerStatus)) 0))  ;; Ki?m tra tr?ng thái c?a layer (0 = ON)
          (progn
	    (setq ent (vlax-ename->vla-object ent))
            (setq pt1 (vlax-curve-getstartpoint ent))
            (setq pt2 (vlax-curve-getendpoint ent))
            (if (not (ssget "X" (list (cons 0 "TEXT") (cons 10 pt1))))
              (command "_text" pt1 "0.5" "0" "1")
            )
            (if (not (ssget "X" (list (cons 0 "TEXT") (cons 10 pt2))))
              (command "_text" pt2 "0.5" "0" "1")
            )
          )
        )
      )
      (princ "\nÐã thêm s? vào các di?m d?u và cu?i c?a các d?i tu?ng LINE/POLYLINE thu?c layer ON.")
    )
    (princ "\nKhông có d?i tu?ng LINE ho?c POLYLINE nào du?c ch?n.")
  )
  (setvar "OSMODE" os)
  (command "UNDO" "END")
  (princ "\nL?nh DANHSOGOCRANH dã du?c th?c hi?n.")
)

Thấy vẫn chèn vào điểm đầu và điểm cuối mà! 
 

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

×