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

(Yêu cầu) Viết lisp xuất cao độ từ block

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

Các bác cho em hỏi. Em có 1 file cao độ nền nhưng các cao độ chỉ là các block có chứa giá trị cao độ z. Chắc là do đưa thông số từ máy đo trắc đạc vào cad nên cao độ hiện là các dấu chấm tròn dạng block.

Nhưng hiện giờ yêu cầu của đồ án là cần phải hiện các cao độ đấy lên. Em mong có bác nào viết được lisp giúp em covert các block (có chứa giá trị cao độ trên) thành các text ghi cao độ nền.

Gần 1 tuần nay em đã lục lọi các cách convert chuyển block đó thành text trong các phần mềm HS, TOPO, CIVIL 3d rồi nhưng k được. Em cũng tìm các topic xuất cao độ thử vài lisp nhưng vẫn chưa được.

 

File của em đây :

 

http://www.mediafire.com/download/c3m7uln8lcq552f/Cot_Block_cham_tron_Hue.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

Thây yêu cầu cũng đơn giản nên mình viết nhanh cho bạn.

Tên lệnh vdc nhé.

 

(defun dxf (code e) (cdr (assoc code (entget e))))
(defun MakeText (string point height)
(entmake (list (cons 0 "TEXT") (cons 1 string) (cons 10 point) (cons 40 height)))
)
(defun C:vdc(/ h ss i e pt pt_Insert cd_String)
(setvar "cmdecho" 0)
(if (not h0) (setq h0 2.0))
(setq h (getreal (strcat "\nNhap chieu cao <" (rtos h0 2 2) ">:")))
(if (not h) (setq h h0) (setq h0 h))
(princ "\nChon block can ghi cao do")
(setq ss (ssget (list (cons 0 "INSERT"))))
(repeat (setq i (sslength ss))
(setq
e (ssname ss (setq i (1- i)))
pt (dxf 10 e)
pt_Insert (list (car pt) (cadr pt))
cd_String (rtos (last pt))
)
(MakeText cd_String pt_Insert h)
)
(setvar "cmdecho" 1)
(princ "\nViet boi Hoc hoai van dot")
(princ)
)

 

Nếu muốn ghi bao nhiêu số lẻ thì dùng lệnh UNITS để chọn nhé

  • 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

Thây yêu cầu cũng đơn giản nên mình viết nhanh cho bạn.

Tên lệnh vdc nhé.

 

(defun dxf (code e) (cdr (assoc code (entget e))))

(defun MakeText (string point height)

(entmake (list (cons 0 "TEXT") (cons 1 string) (cons 10 point) (cons 40 height)))

)

(defun C:vdc(/ h ss i e pt pt_Insert cd_String)

(setvar "cmdecho" 0)

(if (not h0) (setq h0 2.0))

(setq h (getreal (strcat "\nNhap chieu cao <" (rtos h0 2 2) ">:")))

(if (not h) (setq h h0) (setq h0 h))

(princ "\nChon block can ghi cao do")

(setq ss (ssget (list (cons 0 "INSERT"))))

(repeat (setq i (sslength ss))

(setq

e (ssname ss (setq i (1- i)))

pt (dxf 10 e)

pt_Insert (list (car pt) (cadr pt))

cd_String (rtos (last pt))

)

(MakeText cd_String pt_Insert h)

)

(setvar "cmdecho" 1)

(princ "\nViet boi Hoc hoai van dot")

(princ)

)

 

Nếu muốn ghi bao nhiêu số lẻ thì dùng lệnh UNITS để chọn nhé

Hề hề hề,

Giá như bác cho thêm vào bộ lọc cái tên block thì sẽ đỡ bị xuất nhầm đối tượng hơn bác hè......

  • 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

Đang luyện nên mần đại cái này

Đưa lên đây để chờ đá :D :D :D

 

;dien cao do
(defun c:DCD( / i ss n ch o)
(setq ss (ssget (list (cons 2 "DCAOTH")))
	n (sslength ss)
	i 0)
(while (< i n)
(progn 
(setq ch (entget (ssname ss i))
	o (list (cadr (assoc 10 ch)) (caddr (assoc 10 ch))))
(if (= 0 (cdr (assoc 40 (tblsearch "Style" (getvar 'TEXTSTYLE)))))
(command ".text" "j" "c" o 2.5 0 (rtos (last (assoc 10 ch)) 2 2))
(command ".text" "j" "c" o 0 (rtos (last (assoc 10 ch)) 2 2)))
(setq i (+ 1 i))
))
(princ)
)
  • 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

thật sự là em rất cám ơn bác. bác đã cứu vãn cho em 1 mối tình. em yêu 1 người con gái Huế. Và đồ án Tốt Nghiệp em chọn Huế để quy hoạch. mà k có cốt cao độ chuẩn ntn thì chắc em phải chuyển đề tài. em cám ơn bác 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

Đó chỉ là làm theo yêu cầu

Còn xữ lý BV của bạn thì chắc ko cần đến Lisp phải viết thêm mà dùng express của cad là mần đc :D :D :D

1. Tạo block chỉ bằng 1 điểm, điểm chuẩn chọn ngay chính điểm đó

2. Replace ... để thay thế block vừa tạo vào vị trí block có tên DCAOTH trên BV

3. EX >>>> chon tất cả >>> đã có điểm >>> topo (hoặc nova) ... chơi đc tuốt !!!

  • 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

Có cao nhân viết lisp nào rảnh không viết hộ E cái lisp chỉ cần xuất tọa độ Z tại điểm đối tượng đó ví dụ như text hoặc block hay ATT. Bôi 1 cái xuất hàng loạt tọa độ Z tại đối tượng đc ko ạ??

  • Vote giảm 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

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  

×