Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
hung_xu20032000

Đánh cao độ cho mặt cắt

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

Mình có mặt cắt được trích xuất ra từ hs. Nhưng mình không lấy hết chiều dài trong 1 mặt cắt. Chỉ cần trích xuất 1 đoạn trong 1 mặt cắt thôi. Như thế phải đánh lại cao độ rất mất thời gian. Bác bác giúp e với. Chỉ cần khai báo điểm gốc là A hoặc B (có cao độ là 80...) thì sẽ tự điền text (chiều cao text, phải được tùy chọn) được cao độ của đường polyline ( theo chiều cao là 10m chiều cao có thể thay đổi) theo cao độ thành 90, 100.... . Bản vẽ như e gửi kèm. 

http://www.cadviet.com/upfiles/3/8800_gui_cad_viet_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
Tot77    501

Bạn dùng cái này, quét các line rồi chọn 1 text cao độ chuẩn (ở đây là 80).

Trước khi chạy lsp bạn nên purge để xóa bớt các line trùng nhau, vì cứ 1 line sẽ có 2 text 2 bên.

 

(defun c:dac ()
  (defun dxf (id v) (cdr (assoc id (entget v))))
  (defun viet (nd pt tr)
    (entmake (list '(0 . "TEXT") (cons 10 pt) (cons 11 pt) (cons 71 0) (cons 40 cao)
  (cons 73 0) (cons 72 (if tr 2 0)) (cons 1 nd))) 
  )
  (defun chan(x n) (* n (if (< (rem x n) (* 0.5 n)) (fix (/ x n 1.)) (1+ (fix (/ x n 1.))))))
  
  (prompt "\nChon line:")
  (setq ss (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LINE"))))))
ss (vl-remove-if-not '(lambda (x) (equal (cadr (dxf 10 x)) (cadr (dxf 11 x)) 1)) ss)
ss0 (cadr (dxf 10 (car (vl-sort ss '(lambda (x y) (< (cadr (dxf 10 x)) (cadr (dxf 10 y))))))))
tx (car (entsel "\nChon Text cao do chuan :"))
tt1 (chan (atof (dxf 1 tx)) 10)
cao (dxf 40 tx)
  )
  (foreach v ss
    (if (> (vlax-curve-getDistAtParam v (vlax-curve-getEndParam v)) 5)
      (progn
(setq nd (itoa (chan (+ tt1 (- (cadr (dxf 10 v)) ss0)) 10))
     tt (vl-sort (list (dxf 10 v) (dxf 11 v)) '(lambda (x y) (< (car x) (car y)))))       
(viet nd (car tt) t)
(viet nd (last tt) nil)
      )
   )
  ) (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
Tot77    501

Cái này dùng cho cả line và pline, nhưng chỉ với pline 1 đoạn thẳng với 2 đỉnh mà thôi.

Còn chữ thì tôi cho cách 5 giống hình bên phải, nếu muốn sửa thì thay số 5 ở gần cuối (5 và -5).

 

(defun c:dac ()
  (defun dxf (id v) (cdr (assoc id (entget v))))
  (defun viet (nd pt tr)
    (entmake (list '(0 . "TEXT") (cons 10 pt) (cons 11 pt) (cons 71 0) (cons 40 cao)
  (cons 73 0) (cons 72 (if tr 2 0)) (cons 1 nd))) 
  )
  (defun chan(x n) (* n (if (< (rem x n) (* 0.5 n)) (fix (/ x n 1.)) (1+ (fix (/ x n 1.))))))
  
  (prompt "\nChon line hoac pline:")
  (setq ss (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "*LINE"))))))
ss (vl-remove-if-not '(lambda (x) (and (or (= 1 (vlax-curve-getEndParam x)) (= "LINE" (dxf 0 x)))
      (equal (cadr (vlax-curve-getStartpoint x))
     (cadr (vlax-curve-getEndpoint x)) 1))) ss)
ss0 (cadr (dxf 10 (car (vl-sort ss '(lambda (x y) (< (cadr (dxf 10 x)) (cadr (dxf 10 y))))))))
tx (car (entsel "\nChon Text cao do chuan :"))
tt1 (chan (atof (dxf 1 tx)) 10)
cao (dxf 40 tx)
  )
  (foreach v ss
    (if (> (vlax-curve-getDistAtParam v (vlax-curve-getEndParam v)) 5)
      (progn
(setq nd (itoa (chan (+ tt1 (- (cadr (dxf 10 v)) ss0)) 10))
     tt (vl-sort (list (vlax-curve-getStartpoint v) (vlax-curve-getEndpoint v))
 '(lambda (x y) (< (car x) (car y)))))
(viet nd (polar (car tt) 0 -5) t)
(viet nd (polar (last tt) 0 5) nil)
      )
   )
  ) (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

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  

×