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

Nhờ các bác chỉ giáo

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

Em chào các anh chị.

Em thấy có lisp cộng line,polyline rồi mà ko thấy có lisp trừ line các bác nhỉ.

Kính nhờ các cao nhân chỉ cho em viết lisp trừ line dựa theo lisp cộng line này với ạ 

 

;; free lisp from cadviet.com

;;;--------------------------------------------------------------------
(defun Length1(e) (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)))
;;;--------------------------------------------------------------------
(defun C:TF( / ss L e)
(setq
    ss (ssget  (list (cons 0 "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")))
    L 0.0
)
(vl-load-com)
(while (setq e (ssname ss 0))
    (setq L (+ L (length1 e)))
    (ssdel e ss)
)
(alert (strcat "Total length = " (rtos L)))
)
;;;--------------------------------------------------------------------

 

Trân trọng cảm ơn các bá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

Nếu dựa trên lisp vừa rồi, bạn chỉ cần thay chỗ có dấu + thành dấu - là được phép trừ. Chúc vui vẻ.

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

Mình chọn đối tượng bị trừ và đối tượng trừ ấy anh

Cái này để so sánh thôi. nếu là trừ 2 nhóm đối tượng là tập hợp con của nhau thì thay vì chọn đối tượng trừ với bị trừ thì chọn luôn đối tượng hiệu đi.

So sánh 2 lần Length thì làm 2 lần lệnh rồi lấy kết quả trừ cho nhau thôi.

Tính 1 lần thì tf như bình thường. Muốn trừ thì lệnh TruLength

;; free lisp from cadviet.com

;;;--------------------------------------------------------------------
(defun Length1(e) (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)))
;;;--------------------------------------------------------------------
(defun C:TF( / ss  e)
(setq
    ss (ssget  (list (cons 0 "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")))
    L 0.0
)
(vl-load-com)
(while (setq e (ssname ss 0))
    (setq L (+ L (length1 e)))
    (ssdel e ss)
)
(princ (strcat "\nTotal length = " (rtos L)))
(princ)
)
;;;--------------------------------------------------------------------
(defun c:TruLength (/ L Ltong)
(c:tf)
(setq Ltong L)
(c:tf)
(princ (strcat "\nResults: " (rtos Ltong) "-" (rtos L ) " = " (rtos (- Ltong L) )))
(alert (strcat "\nResults: " (rtos Ltong ) "-" (rtos L ) " = " (rtos (- Ltong L) )))
(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

À mà không liên quan nhưng đề nghì đổi lại tiêu đề. Chứ ai cũng dùng từ xin chỉ giáo, xin trợ giúp, giúp mình với.... không mang tính nội dung câu hỏi. Tiêu đề có liên quan đến câu hỏi nhìn diễn đàn mạch lạc hơn, dễ tìm kiếm hơn. Nhiều người họ nhìn qua tiêu đề lấy liên quan đến cái họ biết họ sẽ vào giúp mà chưa cần đọc nội dung câu hỏi.

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

×