Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
4 replies to this topic

#1 Hieuss

Hieuss

    biết lệnh mtext

  • Vip
  • PipPipPipPip
  • 286 Bài viết
Điểm đánh giá: 163 (tàm tạm)

Đã gửi 12 March 2007 - 11:40 PM

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
  • 0

#2 RaKk

RaKk

    biết zoom

  • Members
  • Pip
  • 11 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 13 March 2007 - 10:05 AM

Hướng dẫn cụ tỉ đi bác Hiếu ơi
  • 0

#3 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 30 March 2007 - 05:50 PM

Đợ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
Hình đã gửi

Mặt đứng khi chưa nâng
Hình đã gửi

Mặt đứng khi đã nâng
Hình đã gửi

Phối cảnh khi đã nâng
Hình đã gửi
  • 2

#4 htqk9

htqk9

    biết vẽ circle

  • Members
  • PipPip
  • 38 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 06 February 2009 - 09:21 PM

Đợ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
Hình đã gửi

Mặt đứng khi chưa nâng
Hình đã gửi

Mặt đứng khi đã nâng
Hình đã gửi

Phối cảnh khi đã nâng
Hình đã gửi




Pro thật tuyệt vời! thank u so much!
  • 0
...nothing 4ever...

#5 fbh81

fbh81

    biết vẽ ellipse

  • Members
  • PipPip
  • 51 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 06 April 2009 - 11:14 AM

link die rồi bác Hiếu làm ơn up lại đi
  • 0