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

lisp dựng phối cảnh nhà trong quy hoạch

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

cái này rất tiện khi dựng lại một khu dân cư hiện trạng có hàng nghìn cái nhà. Bạn chỉ cần kết hợp với lisp nối pline để tạo thành những hình chữ nhật kín rồi dùng lisp dựng nhà bắt hết những hình chữ nhật đó là được. Lisp sẽ tự động dựng những hình chữ nhật đó lên theo những kiểu nhà ngẫu nhiên từ 1 đến 3 tầng có cả mái dốc.

download file tại đây

http://thunglungden.org/thuvien/hieuss/DungNha.rar

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 vừa rồi viết được một lisp move nhà trong quy hoạch vào đúng địa hình.

 

Chia sẻ cùng mọi người:

 

(defun c:movenha()
 (defun 2d(p)
   (list (car p) (cadr p))
 )
 (defun timcao (p)
   (setq ss1 (ssget "F" (list (2d p) (setq pf1 (2d (polar p (* 0.0 pi) 80000.0)))) '((0 . "LWPOLYLINE")))
  ss2 (ssget "F" (list (2d p) (setq pf2 (2d (polar p (* 0.5 pi) 80000.0)))) '((0 . "LWPOLYLINE")))
  ss3 (ssget "F" (list (2d p) (setq pf3 (2d (polar p (* 1.0 pi) 80000.0)))) '((0 . "LWPOLYLINE")))
  ss4 (ssget "F" (list (2d p) (setq pf4 (2d (polar p (* 1.5 pi) 80000.0)))) '((0 . "LWPOLYLINE")))
  z1 10000.0
  z2 10000.0
  z3 10000.0
  z4 10000.0
   )
   (setq test false)
(if test (progn
(command ".line" p pf1 "")
(command ".line" p pf2 "")
(command ".line" p pf3 "")
(command ".line" p pf4 ""))
)
   (if ss1
     (setq z1 (cdr (assoc 38 (entget (ssname ss1 0)))))
   )
   (if ss2
     (setq z2 (cdr (assoc 38 (entget (ssname ss2 0)))))
   )
   (if ss3
     (setq z3 (cdr (assoc 38 (entget (ssname ss3 0)))))
   )
   (if ss4
     (setq z4 (cdr (assoc 38 (entget (ssname ss4 0)))))
   )

   (if (not (or ss1 ss2 ss3 ss4)) (princ "\nXay ra loi"))

   (min z1 z2 z3 z4)

 )
 (defun movz (ent z)
   (command ".move" ent "" (list 0.0 0.0 0.0) (list 0.0 0.0 z))
 )
 (defun moveone(ent)    
   (setq
     entver (entnext ent)
     tt (entget entver)
     p (cdr (assoc 10 tt))	  
   )    
   (movz ent (timcao p))
 )
 (init)  
 (setq ss (ssget '((0 . "POLYLINE"))))
 (luuos)
 (setvar "OSMODE" 0)
 (sudung moveone ss)
 (traos)
 (done)
)

 

dùng lệnh MOVENHA để sử dụng.

Đối tượng nhà phải là Mesh.

Đối tượng đường đồng mức phải là LWPolyline đã được nâng

Mặt bằng

MVN_MB.gif

 

Mặt đứng khi chưa nâng

MVN_MD.gif

 

Mặt đứng khi đã nâng

MVN_KC.gif

 

Phối cảnh khi đã nâng

MVN_SHA.gif

  • Vote tăng 2

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 vừa rồi viết được một lisp move nhà trong quy hoạch vào đúng địa hình.

 

Chia sẻ cùng mọi người:

 

(defun c:movenha()
 (defun 2d(p)
   (list (car p) (cadr p))
 )
 (defun timcao (p)
   (setq ss1 (ssget "F" (list (2d p) (setq pf1 (2d (polar p (* 0.0 pi) 80000.0)))) '((0 . "LWPOLYLINE")))
  ss2 (ssget "F" (list (2d p) (setq pf2 (2d (polar p (* 0.5 pi) 80000.0)))) '((0 . "LWPOLYLINE")))
  ss3 (ssget "F" (list (2d p) (setq pf3 (2d (polar p (* 1.0 pi) 80000.0)))) '((0 . "LWPOLYLINE")))
  ss4 (ssget "F" (list (2d p) (setq pf4 (2d (polar p (* 1.5 pi) 80000.0)))) '((0 . "LWPOLYLINE")))
  z1 10000.0
  z2 10000.0
  z3 10000.0
  z4 10000.0
   )
   (setq test false)
(if test (progn
(command ".line" p pf1 "")
(command ".line" p pf2 "")
(command ".line" p pf3 "")
(command ".line" p pf4 ""))
)
   (if ss1
     (setq z1 (cdr (assoc 38 (entget (ssname ss1 0)))))
   )
   (if ss2
     (setq z2 (cdr (assoc 38 (entget (ssname ss2 0)))))
   )
   (if ss3
     (setq z3 (cdr (assoc 38 (entget (ssname ss3 0)))))
   )
   (if ss4
     (setq z4 (cdr (assoc 38 (entget (ssname ss4 0)))))
   )

   (if (not (or ss1 ss2 ss3 ss4)) (princ "\nXay ra loi"))

   (min z1 z2 z3 z4)

 )
 (defun movz (ent z)
   (command ".move" ent "" (list 0.0 0.0 0.0) (list 0.0 0.0 z))
 )
 (defun moveone(ent)    
   (setq
     entver (entnext ent)
     tt (entget entver)
     p (cdr (assoc 10 tt))	  
   )    
   (movz ent (timcao p))
 )
 (init)  
 (setq ss (ssget '((0 . "POLYLINE"))))
 (luuos)
 (setvar "OSMODE" 0)
 (sudung moveone ss)
 (traos)
 (done)
)

 

dùng lệnh MOVENHA để sử dụng.

Đối tượng nhà phải là Mesh.

Đối tượng đường đồng mức phải là LWPolyline đã được nâng

Mặt bằng

MVN_MB.gif

 

Mặt đứng khi chưa nâng

MVN_MD.gif

 

Mặt đứng khi đã nâng

MVN_KC.gif

 

Phối cảnh khi đã nâng

MVN_SHA.gif

 

 

 

Pro thật tuyệt vời! thank u so much!

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  

×