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.
Đăng nhập để thực hiện theo  
vetgo

[yêu cầu] Lisp tạo Boundary ra Polyline với Layer tùy chọn

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

vetgo    17

Hiện e đang phải Boundary rất nhiều đối tượng với nhiều Layer khác nhau, việc chuyển qua lại việc setcurent các layer làm em rất mất thời gian, vì vậy em nhờ các bác viết hộ e 1 cái Lisp với ý tưởng như sau:

+ Gõ lệnh "B" (tương ứng như việc Boundary)

+ Chọn 1 đối tượng có Layer mong muốn

+ Kết quả: ra Polyline có Layer vừa chọn

Thank' các bác truớc!

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
Doan Van Ha    2.676

Hiện e đang phải Boundary rất nhiều đối tượng với nhiều Layer khác nhau, việc chuyển qua lại việc setcurent các layer làm em rất mất thời gian, vì vậy em nhờ các bác viết hộ e 1 cái Lisp với ý tưởng như sau:

+ Gõ lệnh "B" (tương ứng như việc Boundary)

+ Chọn 1 đối tượng có Layer mong muốn

+ Kết quả: ra Polyline có Layer vừa chọn

Thank' các bác truớc!

Phải thế này không?

(defun C:B1()
(acet-sysvar-set (list "Clayer" (cdr (assoc 8 (entget (car (entsel "\nChon doi tuong de lay layer mau: ")))))))
(command "boundary" (getpoint "\nPick diem nam trong vung: ") "")
(acet-sysvar-restore))

  • 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
ketxu    2.652

Có thể nên làm như thế này :

(defun c:b2 (/ elast lay) (setq elast (entlast) lay (cdr (assoc 8 (entget (car (entsel "\nPick an entity to gap Layer :"))))))
(command ".boundary")
(while (= (logand (getvar "CMDACTIVE") 1) 1) (command pause))
(while (setq elast (entnext elast))(vla-put-Layer (vlax-ename->vla-object elast) lay)))

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

Có thể nên làm như thế này :

(defun c:b2 (/ elast lay) (setq elast (entlast) lay (cdr (assoc 8 (entget (car (entsel "\nPick an entity to gap Layer :"))))))
(command ".boundary")
(while (= (logand (getvar "CMDACTIVE") 1) 1) (command pause))
(while (setq elast (entnext elast))(vla-put-Layer (vlax-ename->vla-object elast) lay)))

Thí dụ hình chữ nhật được tạo bởi 4 đoạn thẳng,3 đoạn liền nhau cùng là NETBAO còn 1 đoạn là NETTHEP thì lisp của bác sẽ đưa về cùng 1 layer,Bác có thể sửa lại giùm e nếu nhiều đoạn thẳng cùng 1 layer liền nhau thì nối lại thành BOUNDARY nét khác layer thì không?Thanks.

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
ketxu    2.652

Hự, cái lisp nó tạo ra đối tượng Boundary hoàn toàn mới, là 1 PLine KHÉP KÍN, nên vấn đề bạn yêu cầu mình không thể hiểu được :unsure: Bạn đã sử dụng lệnh Boundary chưa ??

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

Hự, cái lisp nó tạo ra đối tượng Boundary hoàn toàn mới, là 1 PLine KHÉP KÍN, nên vấn đề bạn yêu cầu mình không thể hiểu được :unsure: Bạn đã sử dụng lệnh Boundary chưa ??

Ý mình là:

1.Nếu cùng 1 layer thì nối thành 1 polyline,không cùng layer thì không nối bạn ah.

2.Nếu có thể không cùng layer vẫn nối thành 1 polyline nhưng vẫn giữ nguyên thuộc tính của layer,ví dụ có 2 layer nét liền và nét đứt khi dùng lisp nó nối thành polyline nhưng nét liền vẫn là nét liền,nét đứt vẫn là nét đứt.

Nếu 2 không được thì 1 cũng được bạn ah.Cảm ơn bạn 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
ketxu    2.652

Ý mình là:

1.Nếu cùng 1 layer thì nối thành 1 polyline,không cùng layer thì không nối bạn ah.

2.Nếu có thể không cùng layer vẫn nối thành 1 polyline nhưng vẫn giữ nguyên thuộc tính của layer,ví dụ có 2 layer nét liền và nét đứt khi dùng lisp nó nối thành polyline nhưng nét liền vẫn là nét liền,nét đứt vẫn là nét đứt.

Nếu 2 không được thì 1 cũng được bạn ah.Cảm ơn bạn nhiều.

1. Công việc của lệnh Boundary là bạn click vào 1 điểm, nó sẽ tạo vùng bằng các Pline kín hoặc Region là khoảng trống bao quanh điểm pick đó. Mình không thể biết nguyên bản xung quanh điểm bạn pick thì có những đối tượng nào, nói chi đến việc xét Layer của nó ? => Mình bó tay với yêu cầu tạo Boundary này của bạn

Bạn dùng lệnh PEDIT chưa ?? Việc bạn yêu cầu nghe giống với việc Join Pline hơn, vì đầu vào của nó là bạn cần chọn các đối tượng để thao tác, và các lisp Join Pline trên 4room kha khá rồi.

 

2. Bạn có thể giúp mình post lên 1 bản vẽ có Pline mà nửa đầu là liền, nửa sau là đứt không ??

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/5/103752_ho_1.lsp 

Nhờ các anh sửa giúp em thêm lực nét của boundary = 1mm với ạ!

(defun c:HO ()
(vl-load-com)
(prompt "pick diem")  
 (COMMAND "-LAYER" "m" "Ho" "color" "5" "" "") ;;; "lw" "1" 
(command "boundary" pause "") (princ))

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/5/103752_ho_1.lsp

Nhờ các anh sửa giúp em thêm lực nét của boundary = 1mm với ạ!

(defun c:HO ()
(vl-load-com)
(prompt "pick diem")  
 (COMMAND "-LAYER" "m" "Ho" "color" "5" "" "") ;;; "lw" "1" 
(command "boundary" pause "") (princ))

 

sao không đưa được code lên nhi

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  

×