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

Nhờ sừa lisp. chia nhỏ pline

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

Mình vừa kiếm được lisp chia nhỏ 1 pline (có cả đoạn cong) thành các đoạn nhỏ nhưng sử dụng vẫn chưa đúng ý. nhờ các cao nhân sửa giúp mình tí:

1. có thể lựa chọn nhiều pline để chia nhỏ 1 lúc

2. nếu có thể thì nối các pline nhỏ lại vs nhau luôn. 

Cảm ơn mọi người nhiều nhiều

 

Chia- Pline.lsp

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ái lisp của bác Hạ xài tốt với 1 pline, hoặc bạn kiếm ng tạo vòng lặp để chọn nhiều pline 1 lúc, hoặc bạn đành phải làm từng cái 1. Muốn có lisp free mà đòi hỏi nhiều ko đc đâ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
Vào lúc 24/5/2019 tại 09:01, thienxd đã nói:

Cái này chia đường cong nó bị lỗi bác ah. nó ko chọn được nhiều đường một lúc. 

Thế mỗi 1 pline nó nhiều segment cong thì làm sao tự động biết được chia ở segment nào nếu ko phải chủ thớt pick chọ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
2 giờ trước, thienxd đã nói:

Ý mình là lúc chọn để chia. thì có thể chọn 1 lúc nhiều đường để chia nhỏ ấy bạn.

Cho mình hỏi: Với Pline nhiều phân đoạn, nếu phân đoạn trước chia cho "chiều dài đoạn chia" <DIS> không hết (có nghĩa là dư 1 đoạn < DIS), thì phân đoạn tiếp theo cộng dồn đoạn dư hay là từ điểm xuất phát của phân đoạn tiếp theo chia tiếp tục với DIS???

Mô tả bằng hình ảnh:

 

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

Không biết lệnh JOIN của cad xuất hiện từ phiên bản nào???

(defun c:chia  (/ c_chia_PL ent kc ss)
  (defun c_chia_PL  (ent kc / p oldos oldp findp ss)
    (defun findp (ent) (vlax-curve-getPointAtDist ent kc))
    (setq oldos (getvar "osmode"))
    (setvar "osmode" 0)
    (setq ss (ssadd)
          ss (ssadd ent ss))
    (while (and (setq p (findp ent)) (not (equal p oldp 0.01)))
      (command ".break" ent p p)
      (setq ent  (entlast)
            ss   (ssadd ent ss)
            oldp p))
    (command ".join" ent ss "")
    (setvar "osmode" oldos))
  (if (and (setq ss (ssget '((0 . "LWPOLYLINE"))))
           (setq kc (getdist "\nVAo khoang cach: ")))
    (while (and (setq ent (ssname ss 0)) (ssdel ent ss)) (c_chia_PL ent kc)))
  (princ))

 

  • Like 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

×