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.
phongtran86

[yêu cầu &thảo luận] lisp vẽ mặt bằng kết cấu

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

líp HA cua anh ha sao vẽ trên file mới tinh thi đc. vẽ trên 1 số file có rồi thi bị lỗi ko thấy có hình offset đâu. ko hiểu luôn

1). Có thể do nó chọn nhầm thêm các đối tượng khác ngoài hệ trục chăng?

2). Cách sửa lỗi lisp down về nhưng chỉ có 1 dòng: xem link này.

http://www.cadviet.com/forum/topic/71169-how-to-use-visual-lisp-editor/page-2

3). Dầm phụ, dầm xiên, dầm cong, dầm méo... ư? Bạn y/c cho trường hợp nào thì tôi mần cho trường hợp đó thôi. Viết xong mới biết có lisp của PNT.KTS >> bạn nên dùng của PNT.KTS chắc sẽ tổng quát hơn.

  • 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

cảm ơn hà nhé. lỗi 1 là do file cad. không hiểu vì sao hinh chữ nhật mặt bằng nó chạy ra 1 đoạn khá xa so với trục. File này mình copy bản vẽ khác sang nó cung bị thế. point kích cách xa hình bản vẽ sang. ko biết vì sao :D

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

http://www.cadviet.com/upfiles/3/21028_vetuong_vt_vc_1.lsp Đây là file lisp của phan ngoc tu kts :D  Mình đã chỉnh được rồi nhưng có cái bất tiện chút là các đường trục phải giao nhau tại endpoint của nó, ko thi nó sẽ dài ra. :D với lại đường dim nó, bác bỏ nó đi họ em dc không :) Cảm ơn HA 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

Srr bạn. Tình cờ đọc được bên ấy nên tôi kéo link qua để giới thiệu cho bạn. Ai ngờ, test thì thấy đúng là không ổn. Nếu lisp không có những dòng ghi chú thì còn hy vọng.

  • 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

Lisp của Pham ngoctu KTS em đã dung vlisp chạy rồi, nhung có chut bất tiện là các đường trục phải giao nhau tại enpoint. nếu không sẽ có đoạn thừa bên ngoài. Với lại lisp này có cả dim với trục định vị nữa ( co lệnh vẽ đường tròn ở cuối rồi nhập bán kính). anh chỉnh sửa và bỏ đi phần dim và vẽ trục định vị này) giúp em. phần tường vẽ ra anh để ở layer hiện thời cho em. ( ở đây tạo layer tường) :D Lisp em up link trên đấy

http://www.cadviet.com/link/?f=upfiles/3/21028_vetuong_vt_vc_1.lsp&w=7125421028_hve.png

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

1). Cách loại DIM ra khỏi lisp:

Thay:

(dimtuong)

Bằng:

;(dimtuong)

2). Loại bỏ phần tường thừa 4 phía:

Không sửa được, bởi bản chất lisp này là thế. Sửa nó chẳng khác nào viết mới, mà viết cho trường hợp tổng quát thì oải lắm.

 

(dimtuong)
Bằng:
;  (dimtuong)
2). Loại bỏ phần tường thừa bên ngoài:
Không sửa được, vì cách viết này bản chất nó là thế. Sửa nó chẳng khác nào viết mới hoàn toàn. Mà viết cho trường hợp tổng quát thì oải lắm.
  • 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

Đừng huhu nữa! Bạn dùng lisp bán tự động này để vẽ, tuy có hơi lâu tí, nhưng nó lành!


 

;Doan Van Ha - CADViet.com - Ngay 18/05/2013
;Chuc nang: ve luoi tuong theo he truc, kieu ban tu dong.
(defun C:HA1( / lstpt lstpt1 ent)
 (vl-load-com)
 (command "undo" "be")
 (or kc (setq kc 110))
 (setq kc (cond ((getdist (strcat "\nBe day tuong <" (rtos kc 2 2) ">:"))) (kc)))
 (while (setq pt (getpoint "\nPick vao giua tung o kin [enter de ket thuc]: "))
  (command "boundary" pt "")
  (setq lstpt (mapcar 'cdr (vl-remove-if-not '(lambda(x) (= (car x) 10)) (entget (setq ent (entlast))))))
  (setq lstpt1 (append lstpt lstpt1))
  (HA:hcn (car lstpt) (caddr lstpt) kc)
  (command "erase" ent ""))
 (setq lstpt1 (vl-sort lstpt1 '(lambda(p1 p2) (if (equal (car p1) (car p2) 1E-8) (< (cadr p1) (cadr p2)) (< (car p1) (car p2))))))
 (HA:hcn (car lstpt1) (last lstpt1) (- kc))
 (command "undo" "e")
 (princ))
;----- Ve HCN
(defun HA:hcn(p1 p3 kc / p1x p3x)
 (setq p1x (list (+ (min (car p1) (car p3)) kc) (+ (min (cadr p1) (cadr p3)) kc))
       p3x (list (- (max (car p1) (car p3)) kc) (- (max (cadr p1) (cadr p3)) kc)))
 (command "rectang" "non" p1x "non" p3x))

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

Khó! Phức tạp! Nhất là tìm cho ra thuật toán để giải 1 bài toán tưởng chừng như đơn giản!

 

Lisp này vẽ lưới tường theo hệ các line trục đã có. Yêu cầu: các ô phải là hình chữ nhật.

 

(bạn phongtran86 chắc phải 10 like mới xứng  :lol:)

67029_untitled_9.png


 

;Doan Van Ha - CADViet.com - Ngay 20/05/2013
;Chuc nang: ve luoi tuong theo he truc // truc X va // truc Y, luoi break bat ky nhung cac o phai la HCN.
(defun C:HA(/ lst giao x y ss lstg1 lstg ent ptx pty kcm)
 (vl-load-com) (command "undo" "be") (setq cmd (getvar "cmdecho") hpb (getvar "hpbound")) (setvar "cmdecho" 0) (setvar "hpbound" 1)
 (or kc (setq kc 110))
 (setq kc (cond ((getdist (strcat "\nBe day tuong <" (rtos kc 2 2) ">:"))) (kc)))
 (princ "\nChon cac Line duong truc...")
 (setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LINE")))))))
 (foreach ent1 lst
  (setq lstg1 nil)
  (foreach ent2 lst
   (if (setq giao (car (HA:Giao (vlax-ename->vla-object ent1) (vlax-ename->vla-object ent2) acExtendNone)))
    (setq lstg1 (cons giao lstg1))))
  (if lstg1 (setq lstg (append lstg1 lstg))))
 (setq lstg (vl-sort lstg '(lambda(p1 p2) (if (equal (car p1) (car p2) 1E-8) (< (cadr p1) (cadr p2)) (< (car p1) (car p2))))))
 (setq lstg (LM:UniqueFuzz lstg 1E-8))
 (HA:hcn (car lstg) (last lstg) (/ kc -2.))
 (setq kcm (* 0.9 (KcMin lstg)))
 (setq ss (ssadd) ptx (polar (car lstg) 0 kcm))
 (while (< (car ptx) (car (last lstg)))
  (setq pty (polar ptx (/ pi 2) kcm))
  (while (< (cadr pty) (cadr (last lstg)))
   (setq ent (entlast))
   (command "boundary" pty "")
   (if (setq ent (entnext ent)) (setq ss (ssadd ent ss)))
   (setq pty (polar pty (/ pi 2) kcm)))
  (setq ptx (polar ptx 0 kcm)))
 (load "overkillsup.lsp")
 (acet-overkill2 (list ss 1E-8 nil "N" "N" "N"))
 (setq ss (ssget "w" (polar (car lstg) (* 1.25 pi) 1) (polar (last lstg) (* 0.25 pi) 1) '((0 . "LWPOLYLINE"))))
 (foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
  (setq lst (mapcar 'cdr (vl-remove-if-not '(lambda(x) (= (car x) 10)) (entget ent))))
  (setq lst (vl-sort lst '(lambda(p1 p2) (if (equal (car p1) (car p2) 1E-8) (< (cadr p1) (cadr p2)) (< (car p1) (car p2))))))
  (HA:hcn (car lst) (last lst) (/ kc 2.))
  (entdel ent))
 (setq ss (ssget "w" (polar (car lstg) (* 1.25 pi) 1) (polar (last lstg) (* 0.25 pi) 1) '((0 . "LWPOLYLINE"))))
 (acet-overkill2 (list ss 1E-8 nil "N" "N" "N"))
 (setvar "cmdecho" cmd) (setvar "hpbound" hpb) (command "undo" "e") (princ))
(defun HA:Giao(obj1 obj2 mode / l r)
 (setq l (vlax-invoke obj1 'intersectwith obj2 mode))
 (repeat (/ (length l) 3)
  (setq r (cons (list (car l) (cadr l) (caddr l)) r) l (cdddr l)))
 r)
(defun HA:hcn(p1 p3 kc / p1x p3x)
 (setq p1x (list (+ (min (car p1) (car p3)) kc) (+ (min (cadr p1) (cadr p3)) kc))
       p3x (list (- (max (car p1) (car p3)) kc) (- (max (cadr p1) (cadr p3)) kc)))
 (command "rectang" "non" p1x "non" p3x))
(defun LM:RemoveOnce(x l)
 (if l
  (if (equal x (car l))
   (cdr l)
   (cons (car l) (LM:RemoveOnce x (cdr l))))))
(defun KcMin(lst / lst1)
 (foreach pt lst
  (setq lst1 (append (mapcar '(lambda(x) (distance pt x)) (LM:RemoveOnce pt lst)) lst1)))
 (apply 'min lst1))
(defun LM:UniqueFuzz(l fz)
 (if l 
  (cons (car l) (LM:UniqueFuzz (vl-remove-if '(lambda(x) (equal x (car l) fz)) (cdr l)) fz))))
  • 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

@Ha : tôi không sử dụng Lisp này nhưng thông thường chiều rộng dầm theo 2 phương (ngang dọc) là khác nhau.

nên nhiều khả năng là sẽ có yêu cầu này ? Hà chuẩn bị trước 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

@Ha : tôi không sử dụng Lisp này nhưng thông thường chiều rộng dầm theo 2 phương (ngang dọc) là khác nhau.

nên nhiều khả năng là sẽ có yêu cầu này ? Hà chuẩn bị trước nhé!

Nếu chỉ có 1 B ngang và 1 B dọc thì chắc sửa OK, còn như n B ngang và m B dọc thì nhờ Thiên Lôi thôi!

  • 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

 

Khó! Phức tạp! Nhất là tìm cho ra thuật toán để giải 1 bài toán tưởng chừng như đơn giản!

 

Lisp này vẽ lưới tường theo hệ các line trục đã có. Yêu cầu: các ô phải là hình chữ nhật.

 

(bạn phongtran86 chắc phải 10 like mới xứng  :lol:)

 

Ví dụ : Nhà chữ L chia thành 2 hình chữ nhật, chạy ra không đúng nữa rồi

  • 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

Giới hạn đã nói rồi!

 

Thấy bác ghi yêu cầu các ô là hình chữ nhật mà  :) . Chữ L chia thành 2 ô chữ nhật thoả mãn yêu cầu  :lol:

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

Thấy bác ghi yêu cầu các ô là hình chữ nhật mà  :) . Chữ L chia thành 2 ô chữ nhật thoả mãn yêu cầu  :lol:

Đề bài toán bao gồm vẽ cả ô ngoài nữa >> các ô phải là HCN bao gồm cả ô ngoài!

  • 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

9like cho anh Hà. :D Còn 1 yêu cầu nhỏ nữa, cái này chắc ko khó là mấy cái dầm phụ có thể ko dung bề rông với dầm chính. Nên anh chỉnh chút giúp em là nhập bề rộng dầm chọn 1 số trục, enter, nhập bề rộng dầm khác- chọn trục tiếp enter là xong (nếu ở bước nhập bề rộng dầm khác mà ko có nhấn enter thi kết thúc lệnh luôn :D Cảm ơn sự nhiệt huyết của anh :)

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

ui chờ anh :) anh sửa chút là chọn đối tượng trụcc trước, nhập bề rồng dầm được chọn ---->chọn đối tượng trục khác(dầm phụ) bề rộng dầm(nếu ko nhập bước này mà nhập enter thị thực hiện trục trc)---> chọn đối tượng trục khác:D bề rộng( nếu enter thi thực hiện lệnh ngay). Công tác chọn đối tượng và bề rộng dầm anh cho vao vong lặp cho em. HÌ hì. cảm ơn anh 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

ui chờ anh :) anh sửa chút là chọn đối tượng trụcc trước, nhập bề rồng dầm được chọn ---->chọn đối tượng trục khác(dầm phụ) bề rộng dầm(nếu ko nhập bước này mà nhập enter thị thực hiện trục trc)---> chọn đối tượng trục khác:D bề rộng( nếu enter thi thực hiện lệnh ngay). Công tác chọn đối tượng và bề rộng dầm anh cho vao vong lặp cho em. HÌ hì. cảm ơn anh nhiều nhiều.

 

Mình hỏi bạn chút: giả dụ bạn chọn trục rồi chọn bề rộng dầm rồi thì làm sao bạn biết bạn đã chọn trục chưa, bề rộng dầm nhập cho trục đó là bao nhiêu? Mặt bằng tương đối lớn rất dễ nhâm lẫn đó bạn. Hơn nữa, vẽ bề rộng dầm dựa vào lưới trục thì còn phải dựa vào hệ tường nữa. Chứ không phải là chùi sạch Mặt bằng kiến trúc đi chỉ để lưới trục mà vẽ dầm, bởi lẽ còn phải dựa vào tường để vẽ dầm nữa, rồi có khi còn phải tính tới độ lẹch trục dầm so với lưới trục là bao nhiêu? chứ không phải lúc nào trục cũng không lệch so với trục dầm như hình bạn post

 

Bản thân mình thấy làm được, mức độ hoàn thành có thể đạt 100%, làm cho đường xiên, Mặt bằng phức tạp. Có điều phải giải quyết mấy điều phân tích trên có lẽ mới nhanh được. Nếu không Lisp viết ra sẽ ngang ngữa với vẽ thủ công mà thậm chí vẽ thủ công còn nhanh hơn vì không phải ngồi dò nữa

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


×