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

[Hỏi] Break multiple points

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

Mình muốn viết một Lisp để break một đối tượng (có thể là LINE, POLYLINE,  LWPOLYLINE, SPLINE, ARC, ELLIPSE, RAY, XLINE) tại n điểm (thành n+1 đối tượng khác nhau).

 (defun BreakCurveList (Curve ListPoint)
(foreach n ListPoint
(command ".break" Curve (trans n 0 1)(trans n 0 1)))
)

 

Ngặt một nỗi, sau khi Break xong thì nó tạo ra thêm một đối tượng mới. Nếu điểm ngắt lần thứ 2 không nằm trên đối tượng cũ (biến Curve) mà nằm trên đối tượng mới tạo ra thì lần gọi lệnh thứ 2 sẽ không thể thực hiện được, và như vậy, nó chỉ ngắt được mỗi một điểm đầu tiên thôi.

 

Xin hỏi các bác có cách nào khắc phục để break ở tất cả các điểm 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

Lệnh break sau khi ngắt xong điểm đầu tiên sẽ tạo ra đối tượng mới, bạn có thể dùng làm (entlast) để bắt lấy đối tượng này.

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

nhưng ở đây là break theo danh sách, làm sao biết được điểm nào đang nằm ở đối tượng nào hả bác?

Hề hề hề.

Bạn thử thêm dòng code sau đây vào phía trên dòng code (command .....) trong hàm foreach xem sao nhé:

(setq curve (ssname (ssget "c" (list (- (car n) 0.01) (- (cadr n) 0.01)) (list (+ (car n) 0.01) (+ (cadr n) 0.01))) 0))

  • 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

Hề hề hề.

Bạn thử thêm dòng code sau đây vào phía trên dòng code (command .....) trong hàm foreach xem sao nhé:

(setq curve (ssname (ssget "c" (list (- (car n) 0.01) (- (cadr n) 0.01)) (list (+ (car n) 0.01) (+ (cadr n) 0.01))) 0))

Màu đỏ có 2 sự phiêu lưu bác Bình ơi:

1). Chưa chắc (ssname e 0) đã phải là em muốn break tiếp. Có thể nó là em kia thì sao?

2). Chưa chắc ssget quanh n thì chỉ có curve. Có thể có các đối tượng khác quanh n thì sao?

  • 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àu đỏ có 2 sự phiêu lưu bác Bình ơi:

1). Chưa chắc (ssname e 0) đã phải là em muốn break tiếp. Có thể nó là em kia thì sao?

2). Chưa chắc ssget quanh n thì chỉ có curve. Có thể có các đối tượng khác quanh n thì sao?

Hề hề hề,

1/- Em kia thì chắc là không vì lúc đó mình chưa break mà.

2/- Em khác thì rất có khả năng nếu như bản vẽ quá đông bác ạ. Với cái ô lựa chọn có kích thước 0.02 thì mình nghĩ cái đối tượng ngoại lai hơi hiếm. Tùy theo người dùng có thể giảm nhỏ thằng cu này và cũng có thể cho thêm vào các bộ lọc cho nó tránh bớt phiền toái.

Tối ưu thì chắc là chưa ổn song đây chỉ là một cách gợi ý để mọi người suy nghĩ thêm.

Ý của mình chỉ là chọn đối tượng cần break theo điểm, Mà do chưa rành lắm nên chỉ mới nghĩ ra cách củ chuối này. Có thể còn chát, nhưng cũng có thể sử dụng với một ít gia vị nữa để xài đỡ khi đói chă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

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  

×