Đỗ Minh Quang 0 Báo cáo bài đăng Đã đăng Tháng 5 31, 2017 Em chuyên ngành về giao thông, mong muốn được các anh (chị) PRO viết giúp e chương trình LSP có nội dung như sau: Số liệu có: - 1 đoạn thẳng tim đường, cao độ 2 đầu đoạn thẳng (dạng text) - Bề rộng mặt đường, hè đường, chiều cao hè, độ dốc đường, độ dốc hè. - Ga nằm trên đoạn đường, cách tim đường 1 khoảng cố định (trên đường hoặc trên hè) Nội dung thực hiện: 1. Píck điểm đầu và điểm cuối tuyến lấy độ dài 2. Pick text đầu và text cuối để lấy cao độ tại 2 đầu , tính ra độ dốc của đoạn tuyến 3. Khai báo bề rộng mặt đường, hè đường, dốc mặt, dốc hè đường, cao bó vỉa 4. chọn vị trí hố ga cần tính cao độ 5. xuất cao độ ga ra Block ATT tại vị trí ga đó khi pick vào vị trí ga Em xin chân thành cảm ơn các thầy viết lisp ạ! Đây là file cad minh họa đính kèm ạ http://www.cadviet.com/upfiles/7/159871_drawing2_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
quansla 259 Báo cáo bài đăng Đã đăng Tháng 5 31, 2017 Giản lược thế, khó hình dung quá, mà có ai đào tạo gì đâu mà thầy với chả tớ 1. Đường tim màu đỏ lúc nào cũng đứt đoạn à (hay là cả Tim là 1 Polyline dài ngoằng có cả cong, cả thẳng, cần đoạn nào thì Pick điểm trên nó); Tim đó lúc nào cũng bị "là phẳng" (làm đồng phẳng rồi à) bắt buộc nhập thủ công cao độ đầu + cuối sao. 2. Hố ga cần tính là Tâm của hai đường chéo cái hình chữ nhật trắng ấy à, Hố ga có trước chỉ xác định cao độ rồi Insert ATT tại đúng vị trí đó, hay Pick vào đâu thì insert hố ga và ATT vào đấy 3. ATT đó đâu? 4. Nội suy cao độ hố ga theo phương án nào: đơn giản nhất là: nội sung tuyến tính (nội suy 1 chiều, theo phương của đoạn thẳng TIM màu đỏ); cách này bắt buộc các thông số sau bảo đảm: Tim màu đỏ là 1 đoạn thẳng (hoặc 1 phần đoạn thẳng) không chứa đoạn cong; hố ga bất kỳ cùng thuộc 1 đường gióng Vuông góc với tim luôn sẽ có cao độ nội suy bằng nhau; còn nếu có cách nội suy khác thì đề nghị làm rõ thêm Chủ thớt nên cho file kết quả đê, và cả cách tính nữa nhé chu y : LISP HOAT DONG SAI KHI PICK VI TRI HO GA NAM NGOAI GIOI HAN DOAN THANG DUONG TIM (defun c:thunghiem( / caodocuoi caododau dodoc dt duong_tim kqnoisuy L obj p p0 tongL) (vl-load-com) (defun dxf (n ent) (cdr(assoc n ent))) (defun get_cao_do(flag / caodo num) (princ "\nChon cao do diem") (setq num (cond ((and (setq caodo (car(entsel (acet-str-format "\nNhap cao do diem thu %1" flag)))) (member (type (setq num (read (dxf 1 (entget caodo))))) '(REAL INT))) num) ((getreal (acet-str-format "\nNhap cao do diem thu %1" flag))) (T (princ "\nBan chua chon duoc cao do")))) num) (if (and (setq duong_tim (entsel"/nChon duong thang tam")) (if (wcmatch (dxf 0 (entget (car duong_tim))) "*LINE") (setq dt (car duong_tim))) (setq obj (vlax-ename->vla-object dt)) (setq caododau (get_cao_do 1)) (setq caodocuoi (get_cao_do 2)) ) (while (setq p (getpoint "\nNhap toa do ho ga")) (setq dodoc (* 100 (/ (- caodocuoi caododau) (setq tongL (vlax-curve-getdistatparam obj (vlax-curve-getendparam obj)))))) (setq L (vlax-curve-getdistatpoint obj (setq p0 (vlax-curve-getclosestpointto obj p)))) (setq kqnoisuy (+ caododau (* (/ L tongL) (- caodocuoi caododau)))) (entmakex (list (cons 0 "TEXT") '(100 . "AcDbEntity") '(100 . "AcDbText") (cons 10 p) (cons 8 "caodo_hoga") (cons 11 p) (cons 1 (acet-str-format "Do doc %1 ; Cos HG: %2" dodoc kqnoisuy)) (cons 40 (* 0.01 tongL)) '(71 . 0) '(72 . 0) '(73 . 0))) )) (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