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

[Nhờ sửa lisp] vẽ taluy

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

đây là lisp mình tìm trên mạng đã sữa lại theo những gì mình muốn nhưng còn một số chỗ chưa sữa được mong mọi người sữa lại giùm

những yêu cầu sau:

1. Có thể undo lại khi vẽ thấy taluy không hợp lí:

- Thay đổi khoảng cách giữa các vạch ngắn dài

- Thay đổi chiều đánh taluy

2. Có chọn điểm bắt đầu và điểm kết thúc ( bỡi trên đường mình chọn chỉ muốn đánh 1 đoạn nào đó)

sau đây là đoạn lisp:

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=5947
;;; ======================== VE DUONG TALUY - LENH B1 (BATTER) =========================
;;; ================================================================================
=======
;; ============================================= Batter ================================================
(defun c:Batter()
  (setvar "cmdecho" 0)
  (setvar "blipmode" 0)
  (setvar "aunits" 0)
  (setvar "angbase" (/ pi 2))
  (setvar "angdir" 1)
  (if (not lint) (setq lint 10.0))
  (setq int (getdist (strcat "\nKhoang cach giua vach ngan - vach dai <" (rtos lint 2 3) ">: ")))
  (if int (setq lint int) (setq int lint))
  (command "line" (list 0.0 0.0) (list 0.0 0.0001) "")
  (if (tblsearch "block" "tadtick")
  (command "block" "tadtick" "y" (list 0.0 0.0) (entlast) "")
  (command "block" "tadtick" (list 0.0 0.0) (entlast) "")
  )
  (while (setq refent (entsel "\nChon duong thu nhat: "))
  (command "undo" "group")
  (redraw (car refent) 3)
  (initget 1 "Dao Mai")
  (setq reply (getkword "\nMai [D]ao or [M]ai dap: "))
  (setq s (ssget))
  (command "measure" refent "b" "tadtick" "y" int)
  (setq p (ssget "p") cn 0)
  (if s
  (progn
  (while (< cn (sslength p))
 	(setq en (entget (ssname p cn)) p0 (cdr (assoc 10 en)) pt1 p0 pt2 nil b (cdr (assoc 50 en)))
 	(entdel (ssname p cn))
 	(setq p1 (polar p0 (+ (/ pi 2) B) 0.0001))
 	(command "line" p0 p1 "")
 	(command "extend" s "" (list (entlast) p1) "")
 	(setq xent (entget (entlast)))
 	(setq xdist (distance (cdr (assoc 10 xent)) (cdr (assoc 11 xent))))
 	(if (not (equal xdist 0.0001 0.0001))
 	(setq pt2 (cdr (assoc 11 xent)))
 	(progn
 	(command "extend" s "" (list (entlast) p0) "")
 	(setq xent (entget (entlast)))
 	(setq xdist (distance (cdr (assoc 10 xent)) (cdr (assoc 11 xent))))
 	(if (not (equal xdist 0.0001 0.0001))
 	(setq pt2 (cdr (assoc 10 xent)))
 	)
 	)
 	)
 	(entdel (entlast))
 	(if pt2
 	(if (= reply "Mai")
 	(if (= (rem cn 2) 0)
 	(progn
 	(command "-layer" "set" "canh dai" "")
 	(command "line" pt1 pt2 "")
 	)
 	(progn
 	(command "-layer" "set" "canh ngan" "")
 	(command "line" pt1 (polar pt1 (angle pt1 pt2) (/ (distance pt1 pt2) 2)) "")
 	)
 	)
 	(if (= (rem cn 2) 0)
 	(progn
 	(command "-layer" "set" "canh dai" "")
 	(command "line" pt2 pt1 "")
 	)
 	(progn
 	(command "-layer" "set" "canh ngan" "")
 	(command "line" pt2 (polar pt2 (angle pt2 pt1) (/ (distance pt2 pt1) 2)) "")
 	)
 	)
 	)
 	)
 	(setq cn (1+ cn))
  )
  )
  )
  (command "undo" "en")
  )
  (setvar "blipmode" 1)
  (princ)
)
(prompt "\nDraw cut/fill batter slope lines.")
;====================== BAT1 (BATTER)===========================================
(defun c:B1( / mode)
(command "-layer" "new" "canh dai" "color" "8" "canh dai" "")
(command "-layer" "new" "canh ngan" "color" "2" "canh ngan" "")
;(command "-layer" "set" "canh dai" "")
(setvar "osmode" 0)
(c:batter)
(setvar "blipmode" 0)
(setvar "osmode" 167)
)

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  

×