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

[Yêu cầu]Tính cao độ một điểm bất kỳ khi có cao độ cho trước

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

Nhờ các Member làm giúp theo yêu cầu sau để tìm cao độ :

1-Chọn điểm đã biết cao độ ( có thể nhập số hoặc click vào số có sẵn)

2-Chọn điểm cần tìm cao độ

3-Kết quả tìm được (ghi ra nơi mình cần ghi, hoặc thay thế 1 số có sẵn)

4-font chữ đồng nhất với bản vẽ đang dùng

5-Chỉ kết thúc lệnh khi nhấn Enter

6-Không bị bỏ chức năng bắt điểm khi đã dùng xong lệnh

Đường dẫn bản vẽ ví dụ : http://www.cadviet.c...3675_vd22_3.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

Đã có nhiều lisp như vậy rồi, bạn chịu khó tìm kiếm trước nhé :) Nếu k thấy thì ta bàn tiếp

Cụ thể là cũng đã tìm ra được một cái Lisp tương tự như thế. Nhưng không giống trường hợp của mình.

Cái Lisp tìm được nó thế này cơ :

 

(defun c:12 ( / pt p1 p01 p02 ent ecopy elev elev1 offset etype txth)
(setvar "osmode" 1)
(command "ucs" "w")
(setq pt (getpoint "\nPick reference point: ")
ent (entget(car(entsel "\nSelect elevation text: ")))
etype (cdr(assoc 0 ent))
txth (cdr(assoc 40 ent))
)
(if (/= etype "TEXT") (progn
(princ "\nThe elevation selection must be a TEXT entity")
(exit))
(setq elev (atof(cdr(assoc 1 ent))))
)
(command "layer" "m" "UNSUITABLE" "")
(while (setq p1(getpoint "\nPick offset point"))
(setq elev1 (+ elev (- (cadr p1) (cadr pt)))
offset (abs(- (car p1) (car pt)))
p01 (polar p1 (* 3.0 (/ pi 2)) txth)
p01 (polar p01 pi (* 0.9 txth))
p02 (polar p01 0 (* 1.6 txth))
ecopy (list (assoc 0 ent)
(cons 100 "AcDbEntity")
(cons 8 "UNSUITABLE")
(cons 100 "AcDbText")
(assoc 10 ent)
(assoc 40 ent)
(cons 1 (strcat "" (rtos elev1 2 2)))
(assoc 50 ent)
(assoc 41 ent)
(assoc 51 ent)
(assoc 7 ent)
(cons 71 0)
(cons 72 2)
(list 11 (car p01) (cadr p01) 0.0)
(list 210 0.0 0.0 1.0)
(cons 100 "AcDbText")
(cons 73 2)
)
)
(entmake ecopy)
(setq ecopy (list (assoc 0 ent)
(cons 100 "AcDbEntity")
(cons 8 "UNSUITABLE")
(cons 100 "AcDbText")
(assoc 10 ent)
(assoc 40 ent)
(cons 1 (strcat "" (rtos offset 2 2)))
(assoc 50 ent)
(assoc 41 ent)
(assoc 51 ent)
(assoc 7 ent)
(cons 71 0)
(cons 72 2)
(list 11 (car p02) (cadr p02) 0.0)
(list 210 0.0 0.0 1.0)
(cons 100 "AcDbText")
(cons 73 2)
)
)
(entmake ecopy)
(princ "\nPress ESC or SPACE bar to cancel")
)
(end_task)
)

 

-chọn điểm đã biết cao độ

-click chọn giá trị đã biết đó

-Chọn điểm cần tìm cao độ

Kết quả này khi tìm được nó ghi luôn tại điểm mình chọn

Bây giờ ý mình thế này:

- Sau khi chọn điểm cần tìm cao độ, kết quả sẽ ghi ra nơi mình muốn ghi

Mình cũng đã tìm nhiêu rùi, không được nên mới lập topic. Thông cảm nha :mellow:

Chỉnh sửa theo vantuan18nd

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

Nhờ các Member làm giúp theo yêu cầu sau để tìm cao độ :

1-Chọn điểm đã biết cao độ ( có thể nhập số hoặc click vào số có sẵn)

2-Chọn điểm cần tìm cao độ

3-Kết quả tìm được (ghi ra nơi mình cần ghi, hoặc thay thế 1 số có sẵn)

4-font chữ đồng nhất với bản vẽ đang dùng

5-Chỉ kết thúc lệnh khi nhấn Enter

6-Không bị bỏ chức năng bắt điểm khi đã dùng xong lệnh

Đường dẫn bản vẽ ví dụ : http://www.cadviet.c...3675_vd22_3.dwg

Nhìn vào bản vẽ bạn upload lên thì không hiểu ý của bạn là gì?

Bạn upload 1 file dwg (trong đó viết thật cụ thể yêu cầu của bạn) lên đây và viết thật rõ yêu cầu của bạn nhé

 

Tue_NV sẽ xóa các bài viết không liên quan đến chủ đề này.

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

Nhìn vào bản vẽ bạn upload lên thì không hiểu ý của bạn là gì?

Bạn upload 1 file dwg (trong đó viết thật cụ thể yêu cầu của bạn) lên đây và viết thật rõ yêu cầu của bạn nhé

 

Tue_NV sẽ xóa các bài viết không liên quan đến chủ đề này.

Đây là câu hỏi của em. Em đã trình bày tất cả trong đó, nhờ các Member giúp đỡ.

http://www.cadviet.com/upfiles/3/0_vd22_2.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

Đây là câu hỏi của em. Em đã trình bày tất cả trong đó, nhờ các Member giúp đỡ.

http://www.cadviet.c.../3/0_vd22_2.dwg

Dựa vào code đã viết cho bạn trước đó, Tue_NV viết quick code cho bạn.

Cách thức sử dụng tương tự như code mà Tue_NV viết cho bạn trước đó và đương nhiên là theo yêu cầu của bạn

Chúc vui


(defun C:TL3( / ss L te p1 p2 textmau P)
(initget "P")
(setq cdd (getreal "\nNhap cao do dau hoac go P de chon Text cao do dau :"))
(if (= cdd "P")
  (setq cdd (atof (cdr(assoc 1 (entget(car(entsel "\n Pick chon Text cao do dau :")))))))
)

(setq p1 (getpoint "\n Chon diem thu nhat :")) 

(while (setq p2 (getpoint p1 "\n Chon diem thu hai :"))
(setq L (+ cdd (- (cadr p2) (cadr p1))))

   (initget "T")
   (setq p (getpoint "\nPick diem chen Text hoac go T de chon Text :"))

  (if (/= p "T")
    (progn 
      (if (not textmau) (setq textmau (car(entsel "\nChon Text mau:"))))
        (entmake (list (cons 0 "TEXT") (cons 1 (rtos L 2 2)) (assoc 40 (entget textmau)) 
             (cons 10 p) (cons 11 p) (assoc 7 (entget textmau))
(assoc 8 (entget textmau)) 
        ))
  )
     (progn
  (setq te (entget(car(entsel"\n Chon Text de gan ket qua :")))
te (subst (cons 1 (rtos L 2 2)) (assoc 1 te) te))
(entmod te)
     )
  )
);while
(princ)
)

  • Vote tăng 2

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

Dựa vào code đã viết cho bạn trước đó, Tue_NV viết quick code cho bạn.

Cách thức sử dụng tương tự như code mà Tue_NV viết cho bạn trước đó và đương nhiên là theo yêu cầu của bạn

Chúc vui


(defun C:TL3( / ss L te p1 p2 textmau P)
(initget "P")
(setq cdd (getreal "\nNhap cao do dau hoac go P de chon Text cao do dau :"))
(if (= cdd "P")
  (setq cdd (atof (cdr(assoc 1 (entget(car(entsel "\n Pick chon Text cao do dau :")))))))
)

(setq p1 (getpoint "\n Chon diem thu nhat :"))

(while (setq p2 (getpoint p1 "\n Chon diem thu hai :"))
(setq L (+ cdd (- (cadr p2) (cadr p1))))

   (initget "T")
   (setq p (getpoint "\nPick diem chen Text hoac go T de chon Text :"))

  (if (/= p "T")
	(progn
  	(if (not textmau) (setq textmau (car(entsel "\nChon Text mau:"))))
    	(entmake (list (cons 0 "TEXT") (cons 1 (rtos L 2 2)) (assoc 40 (entget textmau))
             (cons 10 p) (cons 11 p) (assoc 7 (entget textmau))
(assoc 8 (entget textmau))
    	))
  )
     (progn
  (setq te (entget(car(entsel"\n Chon Text de gan ket qua :")))
te (subst (cons 1 (rtos L 2 2)) (assoc 1 te) te))
(entmod te)
     )
  )
);while
(princ)
)

Cảm ơn rất nhiều .

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

×