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

Viết Lisp Tạo Đường Bao

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

Nhờ các bác viết giúp em lisp tạo đường bao với ạ

Mô tả như sau: Tạo ra Hatch bằng cách pick điểm, tạo đường bao của Hatch rồi xóa Hatch đi ạ.

Thanks

dùng lệnh boundary hoặc -bo ^_^

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

boundary chỉ được 1 ô thôi ạ. Mình muốn pick nhiều ô thành 1 ô như lisp tính diện tích ấy./

pót ví dụ hình ảnh hoặc dwg xem nao !

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

sao không dùng lệnh Hatch đó bạn? Lệnh Hatch cũng tạo ra Hatch với đường bao mà đồng thời cũng cho pick nhiều vùng cùng một lầ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

Ý mình là như vậy này: pick vào các hình A, B, C rồi tạo đường bao cho cho cả 3 hình ấy.

http://www.cadviet.com/upfiles/7/159384_duong_bao.dwg

Cái này thì đơn giản. Nhưng đến cuối tuần mình mới rảnh được, bao nhiêu deadline đang giục, đến tầm đó chưa ai viết thì mình sẽ viết cho. 

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

sao không dùng lệnh Hatch đó bạn? Lệnh Hatch cũng tạo ra Hatch với đường bao mà đồng thời cũng cho pick nhiều vùng cùng một lần đó

 

Sao em dùng Hatch không được ??? ( Xóa hatch còn lại 3 miền kín  chứ không phải là 1 miền kín)

Dùng hatch chắc chắn không hay bằng dùng lệnh  bo tạo 3 miền kín rời rạc rồi lại union thành 1 miền kí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

Tiện đây nhờ các anh cho em hỏi xíu ?
Nếu miền cần tạo polyline không được khép kín mà bị hở ra ví dụ như phòng chức năng có ô cửa đi thì lisp có làm được không ạ.
Cái này lúc trước em có thấy trên diễn đàn có đề cập rồi nhưng em tìm không ra bài viết, mong các anh trợ giúp.

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à như vậy này: pick vào các hình A, B, C rồi tạo đường bao cho cho cả 3 hình ấy.

http://www.cadviet.com/upfiles/7/159384_duong_bao.dwg

Quick code

 

(defun c:bao()
  (setq p (getpoint "pick diem :"))
  (command "._boundary" "A" "O" "R" "" p "")
  (Command "._region" "L" "")
  (setq el (entlast)) (redraw el 3)
  (while (setq p (getpoint "pick diem :"))
      (command "._boundary" p "")
      (Command "._region" "L" "")
    (command "._union" el "L" "")
    (setq el (entlast))
    (redraw el 3)
  )
)
  • Like 1
  • 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

 

Quick code

(defun c:bao()
  (setq p (getpoint "pick diem :"))
  (command "._boundary" "A" "O" "R" "" p "")
  (Command "._region" "L" "")
  (setq el (entlast)) (redraw el 3)
  (while (setq p (getpoint "pick diem :"))
      (command "._boundary" p "")
      (Command "._region" "L" "")
    (command "._union" el "L" "")
    (setq el (entlast))
    (redraw el 3)
  )
)

Anh có thể bỏ bắt điểm được không. Vì ở đây mình chỉ cần pick vào vùng kín.

Với lại sau khi xong region nó cứ như là được chọn vậy anh, mặc dù nó có được đâu ạ.

  • 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

Anh có thể bỏ bắt điểm được không. Vì ở đây mình chỉ cần pick vào vùng kín.

Với lại sau khi xong region nó cứ như là được chọn vậy anh, mặc dù nó có được đâu ạ.

Mục đích mình hiện sáng đối tượng để dễ quan sát. Nếu bạn thích thì trong lisp bỏ dòng (redraw el 3)

Bổ sung thêm cái bỏ chế độ bắt điểm

Quick code

 

(defun c:bao(/ p os)
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  (setq p (getpoint "pick diem :"))
   
  (command "._boundary" "A" "O" "R" "" p "")
  (Command "._region" "L" "")
  (setq el (entlast))
 (redraw el 3)
  (while (setq p (getpoint "pick diem :"))
      (command "._boundary" p "")
      (Command "._region" "L" "")
    (command "._union" el "L" "")
    (setq el (entlast))
    (redraw el 3)
  )
  (setvar "osmode" os)
)
  • 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

 

Mục đích mình hiện sáng đối tượng để dễ quan sát. Nếu bạn thích thì trong lisp bỏ dòng (redraw el 3)

Bổ sung thêm cái bỏ chế độ bắt điểm

Quick code

(defun c:bao(/ p os)
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  (setq p (getpoint "pick diem :"))
   
  (command "._boundary" "A" "O" "R" "" p "")
  (Command "._region" "L" "")
  (setq el (entlast))
 (redraw el 3)
  (while (setq p (getpoint "pick diem :"))
      (command "._boundary" p "")
      (Command "._region" "L" "")
    (command "._union" el "L" "")
    (setq el (entlast))
    (redraw el 3)
  )
  (setvar "osmode" os)
)

Đúng ý mình rồi. Cảm ơn bạn nhiều 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
Vào lúc 29/3/2017 tại 11:55, Tue_NV đã nói:

Quick code

 


(defun c:bao()
  (setq p (getpoint "pick diem :"))
  (command "._boundary" "A" "O" "R" "" p "")
  (Command "._region" "L" "")
  (setq el (entlast)) (redraw el 3)
  (while (setq p (getpoint "pick diem :"))
      (command "._boundary" p "")
      (Command "._region" "L" "")
    (command "._union" el "L" "")
    (setq el (entlast))
    (redraw el 3)
  )
)

Anh có thể giúp em chỉnh lại chút được không anh? 

- Thay vì tạo thành region thì tạo thành pline mục đich là sau khi tạo được đường bao muốn kéo dãn căn chỉnh còn làm được

- Đường bao được chọn trong quá trình chọn sẽ đậm hẳn lên để phân biệt với vị trí chưa được chọn

- Sau khi kết thúc các vùng chọn thì sẽ tạo được 1 đường bao hoàn chỉnh với độ dày nét khoảng 0.05 (mục đích để nổi bật còn kiểm soát xem đã còn vùng nào chưa được chọn)

xin chân thành cảm ơn 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

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  

×