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

Ai giúp em lisp điền cao độ Z(tex) của điểm poin

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

Em gặp 1 bản nền đại hình các text đã bị phá vỡ. Chỉ còn điểm poin vẫn còn cao độ z. Các anh có thể giúp em xem có lisp nào điền text vào điểm poin đó, chỉ điền cao độ Z thui nhé. Em xem trong mục Auto lisp cũng có nói qua nhưng lisp k chạy đc.

Tha thiết mong các Bro giúp em! thanks

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
Em gặp 1 bản nền đại hình các text đã bị phá vỡ. Chỉ còn điểm poin vẫn còn cao độ z. Các anh có thể giúp em xem có lisp nào điền text vào điểm poin đó, chỉ điền cao độ Z thui nhé. Em xem trong mục Auto lisp cũng có nói qua nhưng lisp k chạy đc.

Tha thiết mong các Bro giúp em! thanks

 

;Bạn có thể tham khảo đoạn CT này

(defun C:VECD( / ss i p name cd)

(defun dxf( name n)

(cdr (assoc n (entget name)))

)

 

(setq ss (ssget '((0 . "point"))))

(if ss (progn

(setq i 0)

(while (< i (sslength ss))

(setq name (ssname ss i))

(setq p (dxf name 10))

(setq cd (rtos (nth 2 p) 2 3))

(command "_.text" p 1.0 0.0 cd)

(setq i (1+ 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
Em gặp 1 bản nền đại hình các text đã bị phá vỡ. Chỉ còn điểm poin vẫn còn cao độ z. Các anh có thể giúp em xem có lisp nào điền text vào điểm poin đó, chỉ điền cao độ Z thui nhé. Em xem trong mục Auto lisp cũng có nói qua nhưng lisp k chạy đc.

Tha thiết mong các Bro giúp em! thanks

(defun c:DCD ()

(command "-style" "tlkt" "VNI-HELVE" "0" "1" "0" "n" "n")

(command "undo" "be")

(setq luubatdiem (getvar "osmode"))

(setvar "osmode" 0)

 

(Princ "\nChon cac POINT :")

(setq tapdoituong (ssget '((0 . "POINT"))))

(setq thutu 0)

(setq sodoituong (sslength tapdoituong))

 

(while (< thutu sodoituong)

(setq doituong (ssname tapdoituong thutu))

(setq laynoidung (entget doituong))

(setq diemve (cdr (assoc 10 laynoidung)))

(setq noidungviet (caddr diemve))

(setq noidungviet (rtos noidungviet 2 3))

(command ".TEXT" "m" diemve 250 0 noidungviet)

(setq thutu (+ thutu 1))

)

(command "undo" "end")

(setvar "osmode" luubatdiem)

(Princ)

)

 

Lệnh là DCD. Text xuất ra có độ lớn là 250 nhu cầu của bạn bao nhiêu thì sửa lại số 250 mình bôi xanh phía trên là được.

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:DCD ()

(command "-style" "tlkt" "VNI-HELVE" "0" "1" "0" "n" "n")

(command "undo" "be")

(setq luubatdiem (getvar "osmode"))

(setvar "osmode" 0)

 

(Princ "\nChon cac POINT :")

(setq tapdoituong (ssget '((0 . "POINT"))))

(setq thutu 0)

(setq sodoituong (sslength tapdoituong))

 

(while (< thutu sodoituong)

(setq doituong (ssname tapdoituong thutu))

(setq laynoidung (entget doituong))

(setq diemve (cdr (assoc 10 laynoidung)))

(setq noidungviet (caddr diemve))

(setq noidungviet (rtos noidungviet 2 3))

(command ".TEXT" "m" diemve 250 0 noidungviet)

(setq thutu (+ thutu 1))

)

(command "undo" "end")

(setvar "osmode" luubatdiem)

(Princ)

)

 

Lệnh là DCD. Text xuất ra có độ lớn là 250 nhu cầu của bạn bao nhiêu thì sửa lại số 250 mình bôi xanh phía trên là được.

Rất cảm ơn các bác hỗ trợ kịp thời! Em chạy ngon rui`. Thanks!

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:DCD ()

(command "-style" "tlkt" "VNI-HELVE" "0" "1" "0" "n" "n")

(command "undo" "be")

(setq luubatdiem (getvar "osmode"))

(setvar "osmode" 0)

 

(Princ "\nChon cac POINT :")

(setq tapdoituong (ssget '((0 . "POINT"))))

(setq thutu 0)

(setq sodoituong (sslength tapdoituong))

 

(while (< thutu sodoituong)

(setq doituong (ssname tapdoituong thutu))

(setq laynoidung (entget doituong))

(setq diemve (cdr (assoc 10 laynoidung)))

(setq noidungviet (caddr diemve))

(setq noidungviet (rtos noidungviet 2 3))

(command ".TEXT" "m" diemve 250 0 noidungviet)

(setq thutu (+ thutu 1))

)

(command "undo" "end")

(setvar "osmode" luubatdiem)

(Princ)

)

 

Lệnh là DCD. Text xuất ra có độ lớn là 250 nhu cầu của bạn bao nhiêu thì sửa lại số 250 mình bôi xanh phía trên là được.

 

Bác Duy sửa lại chút: Chiều cao text lấy theo mặc định textHeigh đã thiết lập . Bỏ giá trị Z của đối tượng text ( Z luôn=0) vì text ghi có Z theo z của points

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
Bác Duy sửa lại chút: Chiều cao text lấy theo mặc định textHeigh đã thiết lập . Bỏ giá trị Z của đối tượng text ( Z luôn=0) vì text ghi có Z theo z của points

Bạn phải đảm bảo text style hiện hành của bạn có chiều cao khác 0 thì mới được nhé.

 

(defun c:DCD ()

(command "undo" "be")

(setq luubatdiem (getvar "osmode"))

(setvar "osmode" 0)

 

(Princ "\nChon cac POINT :")

(setq tapdoituong (ssget '((0 . "POINT"))))

(setq thutu 0)

(setq sodoituong (sslength tapdoituong))

 

(while (< thutu sodoituong)

(setq doituong (ssname tapdoituong thutu))

(setq laynoidung (entget doituong))

(setq diemve (cdr (assoc 10 laynoidung)))

(setq diemvek (list (car diemve) (cadr diemve)))

(setq noidungviet (caddr diemve))

(setq noidungviet (rtos noidungviet 2 3))

(command ".TEXT" "m" diemvek 0 noidungviet)

(setq thutu (+ thutu 1))

)

(command "undo" "end")

(setvar "osmode" luubatdiem)

(Princ)

)

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

PP đang tìm 1 Lisp dùng để nội suy từ 2 số tượng trưng cho 2 cao độ, khi dùng chuột pick 1 điểm hay nhiều điểm nào đó dù bên trong hay/và 2 bên ngoài của 2 chử số trên (chỉ pick tương đối thẳng hàng với 2 số đã cho). Lisp sẽ dủng phương pháp tam giác đồng dạng để nội suy ra rồi vẽ thêm Points và đặt giá trị mới bên cạnh point.

Nhờ các Bác post lại hoặc viết giúp cho PP lisp mới. Xin cảm ơn.

Xin lưu ý, các chử số này chính là cao độ Z nằm bất kỳ vị trí nào trên bản vẽ, vị trí các số hoặc các Points chính là toạ độ X, Y.

Đây là hình và bản vẽ minh hoạ:

http://www.cadviet.com/upfiles/Add_points_new_numbers_1.zip

 

addpointsnewnumbersmp2.jpg

w596.png

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  

×