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

Tạo boundary cho đa giác hở

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

Mình muốn tạo boundary cho một đa giác hở

:cry: không thể. anh em cadviet bó tay. hở thì làm sao có ranh giới hả bạ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
:cry: không thể. anh em cadviet bó tay. hở thì làm sao có ranh giới hả bạn?

Ý mình là lisp sẽ tự động nối phần hở bằng cách extend các đoạn thẳng chưa cắt nhau để tạo thành 1 vùng kín sau đó mới tạo boundary

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 là lisp sẽ tự động nối phần hở bằng cách extend các đoạn thẳng chưa cắt nhau để tạo thành 1 vùng kín sau đó mới tạo boundary

Pro nao giúp mình vớ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
Bạn xem ở đây: Nối line arc không chạm nhau

và ở đây: Hatch vào miền hở

Thanks bac Hoanh, tôi đã làm đc trên cad 2007, nhưng với cad 2004, 2005 thì bó tay vì cái lệnh "-h" của cad này ko ra những lựa chọn như lệnh "-hatch" của 2007

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
Thanks bac Hoanh, tôi đã làm đc trên cad 2007, nhưng với cad 2004, 2005 thì bó tay vì cái lệnh "-h" của cad này ko ra những lựa chọn như lệnh "-hatch" của 2007

nhưng với cad 2004, 2005 thì bó tay vì cái lệnh "-h" của cad này ko ra những lựa chọn như lệnh "-hatch" của 2007. Bạn có thể nói rõ cái ý này được không? . Tue_NV đang sử dụng CAD2004

Đoạn Code sau tạo boundary cho đa giác "hở". Hy vọng chạy đúng ý bạn:

(defun c:boh()
(vl-load-com)
(prompt "\n Chon doi tuong tao thanh Boundary : ")
(setq ssg (ssget))
(setq po (getpoint "\n Pick 1 diem trong da tuyen :"))
(setq frome (entlast))
(Command "copy" ssg "" po "@")
(setq toe (entlast))
(setq cur frome ; khoi tao
ssgg (ssadd)
)
(while (not (eq cur toe)) ;; 
(setq
cur (entnext cur)
ssgg (ssadd cur ssgg)
)
)

(setq n (sslength ssg)
i 0)
(while ((setq curve (ssname ssg i))
(setq dd (vlax-curve-getStartPoint curve))
(setq dc (vlax-curve-getEndPoint curve))
(command "extend" ssg "" "e" "e" dd dc "")
(setq i (1+ i))
)

(setq frome (entlast))
(Command "boundary" po "")
(setq toe (entlast))
(setq cur frome ; khoi tao
ss (ssadd)
)
(while (not (eq cur toe)) ;; 
(setq
cur (entnext cur)
ss (ssadd cur ss)
)
)
(Command "erase" ssgg "")
(sssetfirst ss ss) 

(princ)
)

PS : Nói tạo tạo boundary cho đa giác "hở" thì không đúng. Vì tạo boundary trên một đa giác kín trên cơ sở extend các đường hở để tạo thành các đường kín.

Hy vọng code chạy đúng ý bạn.

Chúc thành công nhé :cheers:

  • Vote tăng 5

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 20/4/2009 tại 05:52, Tue_NV đã nói:

nhưng với cad 2004, 2005 thì bó tay vì cái lệnh "-h" của cad này ko ra những lựa chọn như lệnh "-hatch" của 2007. Bạn có thể nói rõ cái ý này được không? . Tue_NV đang sử dụng CAD2004

Đoạn Code sau tạo boundary cho đa giác "hở". Hy vọng chạy đúng ý bạn:

 


(defun c:boh()
(vl-load-com)
(prompt "\n Chon doi tuong tao thanh Boundary : ")
(setq ssg (ssget))
(setq po (getpoint "\n Pick 1 diem trong da tuyen :"))
(setq frome (entlast))
(Command "copy" ssg "" po "@")
(setq toe (entlast))
(setq cur frome ; khoi tao
ssgg (ssadd)
)
(while (not (eq cur toe)) ;; 
(setq
cur (entnext cur)
ssgg (ssadd cur ssgg)
)
)

(setq n (sslength ssg)
i 0)
(while ((setq curve (ssname ssg i))
(setq dd (vlax-curve-getStartPoint curve))
(setq dc (vlax-curve-getEndPoint curve))
(command "extend" ssg "" "e" "e" dd dc "")
(setq i (1+ i))
)

(setq frome (entlast))
(Command "boundary" po "")
(setq toe (entlast))
(setq cur frome ; khoi tao
ss (ssadd)
)
(while (not (eq cur toe)) ;; 
(setq
cur (entnext cur)
ss (ssadd cur ss)
)
)
(Command "erase" ssgg "")
(sssetfirst ss ss) 

(princ)
)
 

 

PS : Nói tạo tạo boundary cho đa giác "hở" thì không đúng. Vì tạo boundary trên một đa giác kín trên cơ sở extend các đường hở để tạo thành các đường kín.

Hy vọng code chạy đúng ý bạn.

Chúc thành công nhé :cheers:

File không chạy được anh ơi

  • 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

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

×