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

NHỜ VIẾT LISP

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

Chào các bác. tình hình là em cần 1 lisp nỗi nhanh các đoan thẳng  trong Cad mà loai hoay mãi không làm được.

Nhờ các cao nhân giúp đỡ ạ. Yêu cầu của em là: Chọn các đoạn thẳng sau đó nối chúng lại tại 1 điểm giao nhau ạ

 

image.png.201411f8776d898cb1919878d5dc165f.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
6 phút trước, limfx đã nói:

Bạn dùng lệnh FILLET với R =0 thôi, ko cần lisp đâu

Ví dụ thế này ạ, Em muốn nối chúng lại bằng 1 lần quét chọn. BV của em nó nhiều lắm ạ

 

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

Bạn dùng thử cái này nhé. viết nhanh chất lượng thấp nhưng hiệu quả khá tốt.

B1 thứ nhất chọn các đường dọc

B2 chọn các đường ngang

Lệnh FA và chỉ dùng với line thôi nhé. bạn x hết các đường pline ra.

 

(defun c:FA (/ ss1 ss2 ent p1 p2 lstxl lstpt1 lstpt2)

  (setq

    ss1 (acet-ss-to-list (ssget '((0 . "LINE"))))

    ss2 (acet-ss-to-list (ssget '((0 . "LINE"))))

  )

  (foreach item ss1

    (setq

      ent (entget item)

      p1 (cdr (assoc 10 ent))

      p2 (cdr (assoc 11 ent))

      lstpt1 (append lstpt1 (list p1 p2))

    )

    (vl-cmdf "XLINE" p1 p2 "")

    (setq lstxl (cons (entlast) lstxl))

  )

  (foreach item ss2

    (setq

      ent (entget item)

      lstpt2 (cons (cdr (assoc 10 ent)) lstpt2)

      lstpt2 (cons (cdr (assoc 11 ent)) lstpt2)

    )

  )

  (apply 'vl-cmdf (append '("extend") lstxl '("") lstpt2 '("")))

  (mapcar 'entdel lstxl)

  (apply 'vl-cmdf (append '("extend") ss2 '("") lstpt1 '("")))

  (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

Lệnh nó như vậy thôi.

Command: PE PEDIT
Select polyline or [Multiple]: m
Select objects: Specify opposite corner: 4 found
Select objects:
Convert Lines, Arcs and Splines to polylines [Yes/No]? <Y> y
Enter an option [Close/Open/Join/Width/Fit/Spline/Decurve/Ltype gen/Reverse/Undo]: j
Join Type = Extend
Enter fuzz distance or [Jointype] <0.0000>:  Specify second point: Pick 2 điểm hoặc gõ số
3 segments added to polyline
Enter an option [Close/Open/Join/Width/Fit/Spline/Decurve/Ltype gen/Reverse/Undo]:

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
6 giờ trước, tannguyen291 đã nói:

Bạn dùng thử cái này nhé. viết nhanh chất lượng thấp nhưng hiệu quả khá tốt.

B1 thứ nhất chọn các đường dọc

B2 chọn các đường ngang

Lệnh FA và chỉ dùng với line thôi nhé. bạn x hết các đường pline ra.

 

(defun c:FA (/ ss1 ss2 ent p1 p2 lstxl lstpt1 lstpt2)

  (setq

    ss1 (acet-ss-to-list (ssget '((0 . "LINE"))))

    ss2 (acet-ss-to-list (ssget '((0 . "LINE"))))

  )

  (foreach item ss1

    (setq

      ent (entget item)

      p1 (cdr (assoc 10 ent))

      p2 (cdr (assoc 11 ent))

      lstpt1 (append lstpt1 (list p1 p2))

    )

    (vl-cmdf "XLINE" p1 p2 "")

    (setq lstxl (cons (entlast) lstxl))

  )

  (foreach item ss2

    (setq

      ent (entget item)

      lstpt2 (cons (cdr (assoc 10 ent)) lstpt2)

      lstpt2 (cons (cdr (assoc 11 ent)) lstpt2)

    )

  )

  (apply 'vl-cmdf (append '("extend") lstxl '("") lstpt2 '("")))

  (mapcar 'entdel lstxl)

  (apply 'vl-cmdf (append '("extend") ss2 '("") lstpt1 '("")))

  (princ)

)

 

Em cảm ơn. để em thử xem ạ. Dùng lệnh của Bác cuongtk2 thì em cũng biết nhưng nó tác ngách quá mà nhiều khi không được như ý muố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

Rõ ràng bài toán này nếu chỉ là ngang và dọc thế kia thì có thể quét chọn một loạt được và k quá khó để code. Còn trường hợp tổng quát thì e là không được, dễ râu ông nọ nối đít ông kia lắm :)

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

×