Hề hề hề,
Mình không phải dân chuyên ngành của bạn. Sau khi đọc yêu cầu của bạn và xem bản vẽ bạn gửi, minh viết cái lisp sau giúp bạn có thể ghi được cao độ của các đường đồng mức dựa vào cách làm như sau:
1/- Mở bản vẽ zoom gần tới một vị trí point chuẩn có ghi sẵn cao độ của điểm đó. Tỷ dụ bạn chọn điểm có cao độ là 392
2/- Vẽ một lwpolyline sao cho nó cắt mỗi đường đồng mức chỉ tại một điểm theo một chiều.gọi là đường dẫn
3/- load lisp
4/- Gõ lệnh cddm và làm theo các yêu cầu của lisp;
Khi líp yêu cầu chọn đường dẫn thì chọn polyline vừa vẽ
Khi lisp yêu cầu nhập cao độ bắt đầu thì nhập giá trị chẵn bước của đường đồng mức gần với điểm đã ghi cao độ trước (trong trường hợp cụ thể bản vẽ của bạn gửi thì nhập 380 tường ứng với cao độ điểm là 392)
Khi líp yêu cầu nhập độ chênh cao giữa các đường đồng mức thì tùy theo chiều vẽ polyline mà nhấp giá trị dương hay âm của độ chênh cao này (trong trường hợp bản vẽ bạn gửi thì giá trị này là + hoặc – 20.
Sau đó nhấn enter và chờ líp hoàn thành công việc của nó.
5/- Check lại xem lisp ghi đúng chưa, nếu thấy chưa đúng thì undo để xóa toàn bộ những gì líp đã làm, không ảnh hưởng tới bản vẽ của bạn.
Lưu ý rằng trong bản vẽ bạn gửi, các đường đồng mức nằm trên nhiều layẻ khác nhau mà mình chỉ mới phát hiện được có 3 layẻ là 1,2 và 5. Khi thấy lisp bỏ sót các đường đồng mức chưa được ghi cao độ thì có thể là do đường đồng mức đó nắm khác layẻ với các layẻ kể trên và bạn phải bổ sung layẻ này vào trong bộ chọn đối tượng của lisp.
Hy vọng bạn có thể dùng được lisp này để thuận lợi cho công việc của bạn. Nếu quá trình dùng có vấn đề gì chưa rõ cứ post lên mình sẽ tìm hiểu và giải thích.
Chúc bạn vui
(defun c:gcddm ( / pl plst ssdml cdmax chcd i els ssp cdt )(vl-load-com)(setq oldos (getvar “osmode”))(setvar “osmode” 0)(command “undo” “be”)(setq pl (car (entsel “n Chon duong dan”)) plst (acet-geom-vertex-list pl ) ) (setq ssdml (acet-ss-to-list (ssget “f” plst (list (cons 0 “lwpolyline”) (cons 62 30) (cons 8 “1,2,5”))))) (setq cdmax (getreal “n Nhap cao do bat dau: “) chcd (getreal “n Nhap do chenh cao giua cac duong dong muc: “) i 0 ) (foreach dm ssdml (setq els (entget dm) cdt (+ cdmax (* i chcd)) els (subst (cons 38 cdt ) (assoc 38 els) els) els (subst (cons 62 2) (assoc 62 els) els) ) (entmod els) (command “measure” dm 200) (setq ssp (acet-ss-to-list (ssget “p”))) (foreach pt ssp (command “insert” “cd1” (cdr (assoc 10 (entget pt))) 1 1 0 (rtos cdt 2 0) ) ) (setq i (1+ i) ))(command “erase” pl “”)(command “undo” “e”)(setvar “osmode” oldos)(princ))