Chuyển đến nội dung
Diễn đàn CADViet
toai

Nhờ diễn đàn sửa lisp ghi khoảng cách, cao độ trên cắt ngang

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

Chào bác 'Thaistreetz' và toàn thể ae diễn đàn. Em thấy lisp của bác rất hay và có tính ứng dụng rất lớn cho dân cầu đường, không biết bác và ae trong diễn đàn có kiến thức về autolisp có thể đầu tư thêm thời gian để phát triển nó thêm 1 chút được hok? cụ thể là nó sẽ điền giá trị cao độ và khoảng cách lẻ vào vị trí mà ta thiết lập (Bảng TN chẳng hạn: cao độ vào hàng cao độ, k/c lẻ vào hàng k/c lẻ). Ngoài ra có thể tự động kẻ đường dóng từ vị trí đó đến bảng TN. Nếu được như vậy thì tuyệt vời quá, hi.

Đứng từ góc độ là người đọc bản vẽ. bạn thấy điều bạn nói ở trên có cần thiết hay không khi mà các thông tin về cao độ và khoảng cách đã được cung cấp đủ trong block cao cao độ? hay nó chỉ làm rối bản vẽ thêm?

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 Thaistretz ơi cái linhk " bản vẽ này" của bác hỏng rồi, bác up lại đi cho em xin với, dow đc lip về mà ko dùng đ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

bác Thaistretz ơi cái linhk " bản vẽ này" của bác hỏng rồi, bác up lại đi cho em xin với, dow đc lip về mà ko dùng đc

Bạn cần gì bạn cứ up bản vẽ của bạn lên rồi mọi người mọi người giúp

Mình có 1 lisp đánh cao độ hoàn công trên file nova

chỉ 1 lệnh là đánh được cao độ toàn bộ trắc ngang

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

Đây là lisp mình đã rút gọn lại. đồng thời sửa thêm một số chi tiết về nhập số liệu và chế độ bắt điểm để thuận tiện hơn khi sử dụng. Lisp cũng đã tự động load các block cần thiết. bạn chỉ cần copy bản vẽ này vào thư mục D:\Lisp CAD là OK.

(Chú ý là không sử dụng bản vẽ BV1 của bạn nữa nhé. vì các block hơi xấu khi canh lề text, đông thời bản vẽ đó có mấy block không sử dụng nhưng mình không có cách gì purge nó đi được nên lisp load rất chậm)

(defun DXF (code elist)
  (cdr (assoc code elist))
)

(defun c:tn (); / DZ pt y ptside ang OT sc1 scale)
  (vl-load-com)
  (setvar "cmdecho" 0)

(if (not scale) (setq scale 1))
(setq sc1 (getreal (strcat "\n Cao text <"(rtos scale 2 0)">:")))
(if sc1 (setq scale sc1))
(SETQ OSLAST (getvar "OSMODE"))
(setq DZ (getvar "DIMZIN"))
(setvar "DIMZIN" 0)
(setq OT (getvar "ORTHOMODE"))
(setvar "ORTHOMODE" 0)
(command "osmode" 99)
(setq pt0 (osnap (getpoint "Diem tim TN tu nhien <end of> : ") "end")) (print)
(setq x0 (car pt0) y0 (cadr pt0))
(setq ed (entget (car (entsel "\nChon cao do tim: "))))
(setq H0 (read (DXF 1 ed)))	
(command "osmode" 15359) 
(setq pt (getpoint "\nDiem chen: "))

(While (/= pt nil)
(Progn
(setq ptside (getpoint "\nPhia chen:" pt)
ang (angle pt ptside))
(setq y (- (cadr pt) y0 (- H0)))
(setq x (- (car pt) x0))
		 
(cond ((> x 0) (setq x (strcat "" (rtos x 2 2))))
		 ((< x 0) (setq x (rtos (abs x) 2 2)))
		 ((= x 0) (setq x "0.00"))		 )
(cond ((> y 0) (setq y (strcat "+" (rtos y 2 2))))
		 ((< y 0) (setq y (rtos y 2 2)))
		 ((= y 0) (setq y "%%p0.00")))
;(setq x (ustr 0 "Khoang cach: " x T))
;(setq y (ustr 0 "Cao do: " y T))

(if (not (tblsearch "block" "LCD1"))
(progn (command "insert" "D:\\Lisp CAD\\BVTN.dwg" "" "" "" "")
(command "erase" (entlast) "")))

( if (AND (>= ang 0) (< ang 1.5708)) (command "INSERT" "LCD1" pt scale scale "0" x y))
( if (AND (>= ang 1.5708) (< ang 3.1416)) (command "INSERT" "LCD2" pt scale scale "0" y x))
( if (AND (>= ang 3.1416) (< ang 4.7124)) (command "INSERT" "LCD3" pt scale scale "0" x y))
( if (AND (>= ang 4.7124) (< ang 6.2832)) (command "INSERT" "LCD4" pt scale scale "0" y x))

(setq pt (getpoint "\nDiem chen: "))
);pro
);while 
(setvar "OSMODE" OSLAST)
(setvar "DIMZIN" DZ)
(setvar "ORTHOMODE" OT))
;---------------------------------------------------------------------------

Link tải bản vẽ bị hư rồi bác ạ. Bác gửi lại cho em xin với đc ko ạ? Thanks bác nhiều 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

Em cũng là dân giao thông. Thấy cái này của bác hay quá mà em load về dùng không được.

Emlàm theo thao tác lệnh nhưng đến khi pick điểm chèn thì hỏi phía chèn. E thử pick về cả 2 phía đều báo invaid.

Em không hiểu sai ở đâu. Nhưng theo em nghĩ thì mình không cần chọn phía chèn vì vị trí mình chèn đã là bên trái hai bên phải tim rồi.

Chỉ cần điền cao độ và dim từ điểm chèn tới tim là được rồi ạ. Mong các bác giải thích và chỉnh sửa để em làm được. Cảm ơn và chúc mừng năm mớ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

Đây là lisp mình đã rút gọn lại. đồng thời sửa thêm một số chi tiết về nhập số liệu và chế độ bắt điểm để thuận tiện hơn khi sử dụng. Lisp cũng đã tự động load các block cần thiết. bạn chỉ cần copy bản vẽ này vào thư mục D:\Lisp CAD là OK.

(Chú ý là không sử dụng bản vẽ BV1 của bạn nữa nhé. vì các block hơi xấu khi canh lề text, đông thời bản vẽ đó có mấy block không sử dụng nhưng mình không có cách gì purge nó đi được nên lisp load rất chậm)

(defun DXF (code elist)
  (cdr (assoc code elist))
)

(defun c:tn (); / DZ pt y ptside ang OT sc1 scale)
  (vl-load-com)
  (setvar "cmdecho" 0)

(if (not scale) (setq scale 1))
(setq sc1 (getreal (strcat "\n Cao text <"(rtos scale 2 0)">:")))
(if sc1 (setq scale sc1))
(SETQ OSLAST (getvar "OSMODE"))
(setq DZ (getvar "DIMZIN"))
(setvar "DIMZIN" 0)
(setq OT (getvar "ORTHOMODE"))
(setvar "ORTHOMODE" 0)
(command "osmode" 99)
(setq pt0 (osnap (getpoint "Diem tim TN tu nhien <end of> : ") "end")) (print)
(setq x0 (car pt0) y0 (cadr pt0))
(setq ed (entget (car (entsel "\nChon cao do tim: "))))
(setq H0 (read (DXF 1 ed)))	
(command "osmode" 15359) 
(setq pt (getpoint "\nDiem chen: "))

(While (/= pt nil)
(Progn
(setq ptside (getpoint "\nPhia chen:" pt)
ang (angle pt ptside))
(setq y (- (cadr pt) y0 (- H0)))
(setq x (- (car pt) x0))
		 
(cond ((> x 0) (setq x (strcat "" (rtos x 2 2))))
		 ((< x 0) (setq x (rtos (abs x) 2 2)))
		 ((= x 0) (setq x "0.00"))		 )
(cond ((> y 0) (setq y (strcat "+" (rtos y 2 2))))
		 ((< y 0) (setq y (rtos y 2 2)))
		 ((= y 0) (setq y "%%p0.00")))
;(setq x (ustr 0 "Khoang cach: " x T))
;(setq y (ustr 0 "Cao do: " y T))

(if (not (tblsearch "block" "LCD1"))
(progn (command "insert" "D:\\Lisp CAD\\BVTN.dwg" "" "" "" "")
(command "erase" (entlast) "")))

( if (AND (>= ang 0) (< ang 1.5708)) (command "INSERT" "LCD1" pt scale scale "0" x y))
( if (AND (>= ang 1.5708) (< ang 3.1416)) (command "INSERT" "LCD2" pt scale scale "0" y x))
( if (AND (>= ang 3.1416) (< ang 4.7124)) (command "INSERT" "LCD3" pt scale scale "0" x y))
( if (AND (>= ang 4.7124) (< ang 6.2832)) (command "INSERT" "LCD4" pt scale scale "0" y x))

(setq pt (getpoint "\nDiem chen: "))
);pro
);while 
(setvar "OSMODE" OSLAST)
(setvar "DIMZIN" DZ)
(setvar "ORTHOMODE" OT))
;---------------------------------------------------------------------------

Không down được file cad bá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

 

Đây là lisp mình đã rút gọn lại. đồng thời sửa thêm một số chi tiết về nhập số liệu và chế độ bắt điểm để thuận tiện hơn khi sử dụng. Lisp cũng đã tự động load các block cần thiết. bạn chỉ cần copy bản vẽ này vào thư mục D:\Lisp CAD là OK.

(Chú ý là không sử dụng bản vẽ BV1 của bạn nữa nhé. vì các block hơi xấu khi canh lề text, đông thời bản vẽ đó có mấy block không sử dụng nhưng mình không có cách gì purge nó đi được nên lisp load rất chậm)

(defun DXF (code elist)
  (cdr (assoc code elist))
)

(defun c:tn (); / DZ pt y ptside ang OT sc1 scale)
  (vl-load-com)
  (setvar "cmdecho" 0)

(if (not scale) (setq scale 1))
(setq sc1 (getreal (strcat "\n Cao text <"(rtos scale 2 0)">:")))
(if sc1 (setq scale sc1))
(SETQ OSLAST (getvar "OSMODE"))
(setq DZ (getvar "DIMZIN"))
(setvar "DIMZIN" 0)
(setq OT (getvar "ORTHOMODE"))
(setvar "ORTHOMODE" 0)
(command "osmode" 99)
(setq pt0 (osnap (getpoint "Diem tim TN tu nhien <end of> : ") "end")) (print)
(setq x0 (car pt0) y0 (cadr pt0))
(setq ed (entget (car (entsel "\nChon cao do tim: "))))
(setq H0 (read (DXF 1 ed)))	
(command "osmode" 15359) 
(setq pt (getpoint "\nDiem chen: "))

(While (/= pt nil)
(Progn
(setq ptside (getpoint "\nPhia chen:" pt)
ang (angle pt ptside))
(setq y (- (cadr pt) y0 (- H0)))
(setq x (- (car pt) x0))
		 
(cond ((> x 0) (setq x (strcat "" (rtos x 2 2))))
		 ((< x 0) (setq x (rtos (abs x) 2 2)))
		 ((= x 0) (setq x "0.00"))		 )
(cond ((> y 0) (setq y (strcat "+" (rtos y 2 2))))
		 ((< y 0) (setq y (rtos y 2 2)))
		 ((= y 0) (setq y "%%p0.00")))
;(setq x (ustr 0 "Khoang cach: " x T))
;(setq y (ustr 0 "Cao do: " y T))

(if (not (tblsearch "block" "LCD1"))
(progn (command "insert" "D:\\Lisp CAD\\BVTN.dwg" "" "" "" "")
(command "erase" (entlast) "")))

( if (AND (>= ang 0) (< ang 1.5708)) (command "INSERT" "LCD1" pt scale scale "0" x y))
( if (AND (>= ang 1.5708) (< ang 3.1416)) (command "INSERT" "LCD2" pt scale scale "0" y x))
( if (AND (>= ang 3.1416) (< ang 4.7124)) (command "INSERT" "LCD3" pt scale scale "0" x y))
( if (AND (>= ang 4.7124) (< ang 6.2832)) (command "INSERT" "LCD4" pt scale scale "0" y x))

(setq pt (getpoint "\nDiem chen: "))
);pro
);while 
(setvar "OSMODE" OSLAST)
(setvar "DIMZIN" DZ)
(setvar "ORTHOMODE" OT))
;---------------------------------------------------------------------------

Không down được file cad bác ạ

 

bác nào đã down được file block thì up lại được không ?

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Ó CÁCH NÀO SỬA LIPS NÀY ĐỂ KO CẦN COPY BLOCK VÀO KHÔNG VÍ DỤ KẾT QUẢ XUẤT RA CHỈ CẦN CHỌN ĐIỂM CHÈN TEXt -> kết quả có dạng  " cao độ ; k/c tới tim " vậy thì lips này sẽ linh động hơn nhìu  mặc dù ko dc đẹp là mấy so vs thể hiện = block

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Ó CÁCH NÀO SỬA LIPS NÀY ĐỂ KO CẦN COPY BLOCK VÀO KHÔNG VÍ DỤ KẾT QUẢ XUẤT RA CHỈ CẦN CHỌN ĐIỂM CHÈN TEXt -> kết quả có dạng  " cao độ ; k/c tới tim " vậy thì lips này sẽ linh động hơn nhìu  mặc dù ko dc đẹp là mấy so vs thể hiện = block

Cái này cũng có chỉ cần tính toán lại các điểm đặt nhưng hơi vất vã do nó còn phụ thuộc vào chiều cao chữ với lại khi muốn xóa 1 cao độ nào đó phải chọn nhiều đối tượng để xóa----> làm block nó tiện hơn.

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

vì mình định sau khi đo xong khoảng cách tới tim và cao độ xog sẽ xuất các text đó + với text lý trình RA excel theo thứ tự từng mặt cắt nửa nên muốn nhờ các bạn chuyển cái block đó về dạng text : " cao độ ; k/c toi tim " thô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

vì mình định sau khi đo xong khoảng cách tới tim và cao độ xog sẽ xuất các text đó + với text lý trình RA excel theo thứ tự từng mặt cắt nửa nên muốn nhờ các bạn chuyển cái block đó về dạng text : " cao độ ; k/c toi tim " thôi 

Chắc bạn làm phân lớp đất đắp????

có cái này bạn tham khảo xem thế nào??

http://www.cadviet.com/forum/topic/118099-lisp-phan-lop-dat-dap-thong-ke-thep-in-tu-dong-moi-viet/

  • 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

mình mới tập làm nên nhiều cái chưa rõ nhờ bạnThaistreetz 

 giúp mình với mình ko có bản vẽ để copy vào ổ D nhờ bạn gửi vào gmail trungdra115@gmail.com giúp mình với 

thank bạn nhiều mình tải lisp về mà vẫn chưa sử dụng đc. mong bạn giúp đỡ

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

Mình gửi các bạn cần Lisp pick Cao độ và khoảng cách tới Tim nhé :D
Có hướng dẫn kèm theo :D

- Bước 1: Mở file cad "BV1" kèm theo, copy hết các mũi tên trong bản vẽ, paste vào file có trắc ngang. Paste vào chỗ nào cũng dc

- Bước 2: Load lisp kèm theo.
- Bước 3: Gõ lệnh "cx" rồi làm theo hướng dẫn

Link: http://www.cadviet.com/upfiles/6/149085_lips_cao_do.ra

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ào toàn thể anh em trên diễn đàn. Bên mình đã viết một vài tiện ích hỗ trợ thiết kế, thi công công trình dạng tuyến, nhất là công trình cầu đường. Tiện ích Pick cắt ngang là một trong số những tiện ích như vậy. Thấy anh em đang trao đổi rất nhiệt tình về tiện ích này, mình xin chia sẻ với anh em tiện ích, link tải tiện ích bên dưới. Hy vọng có thể giúp được anh em bớt thao tác thủ công. Cám ơn anh em đã đọc comment của mình.

 

Tiện ích Pick cắt ngang

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

Mình cũng sử dụng lisp này. Rất hay nhưng mình gặp phải 1 vấn đề là lúc mình dùng cad 2020 trên win 7 thì bình thường. Nhưng giờ mình dùng Win 10 thì nó ra kết quả là 0/0. Nhờ các Bác giúp mình khắc phục với. Thank các Bác nhiều

1111.jpg

2.jpg

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
2 giờ trước, TrauLy đã nói:

Mình cũng sử dụng lisp này. Rất hay nhưng mình gặp phải 1 vấn đề là lúc mình dùng cad 2020 trên win 7 thì bình thường. Nhưng giờ mình dùng Win 10 thì nó ra kết quả là 0/0. Nhờ các Bác giúp mình khắc phục với. Thank các Bác nhiều

1111.jpg

2.jpg

Chạy lisp nó hiện ra bảng thông báo vậy hả?? 

dùng lệnh: ATTDIA nhập số 0 nhé

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
Vào lúc 13/3/2023 tại 16:22, huunhantvxdts đã nói:

Chạy lisp nó hiện ra bảng thông báo vậy hả?? 

dùng lệnh: ATTDIA nhập số 0 nhé

Uhm. Bấm Ok thì nó ra kết quả 0/0 như hình trên

  • 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
Vào lúc 13/3/2023 tại 16:22, huunhantvxdts đã nói:

Chạy lisp nó hiện ra bảng thông báo vậy hả?? 

dùng lệnh: ATTDIA nhập số 0 nhé

Ok được rồi Bác ạ. Thank bác nhiều nhé

 

  • 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
Vào lúc 13/3/2023 tại 16:22, huunhantvxdts đã nói:

Chạy lisp nó hiện ra bảng thông báo vậy hả?? 

dùng lệnh: ATTDIA nhập số 0 nhé

Trước mắt cảm ơn Bác nhé.

Có cách nào sửa cỡ chữ mà khôg vào Unit ko vậy Bá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
Vào lúc 5/9/2023 tại 11:03, TrauLy đã nói:

Trước mắt cảm ơn Bác nhé.

Có cách nào sửa cỡ chữ mà khôg vào Unit ko vậy Bác

Chưa hiểu câu hỏi của bạn. bạn liên hệ zalo để hỗ trợ kịp thời nhé! 0848.998.045

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

×