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

[Yêu cầu] Nhờ viết lisp biến Arc thành line.

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

Nhờ các bác viết dùm lisp biến số lượng lớn các arc biến thành các line với đầu mút của arc trùng với đầu mút của line dùm mình với. Mình xin cảm ơn trước nhiều nhiều nhé! Chúc các bác 1 năm mới sắp đến gặt hái nhiều thành công hơn nữa. :)

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ờ các bác viết dùm lisp biến số lượng lớn các arc biến thành các line với đầu mút của arc trùng với đầu mút của line dùm mình với. Mình xin cảm ơn trước nhiều nhiều nhé! Chúc các bác 1 năm mới sắp đến gặt hái nhiều thành công hơn nữa. :)

Hề hề hề,

1/- Đã có lisp rồi. bạn chịu khó tìm kiếm đi nhé.

2/- bạn nên gử bản vẽ của bạn lên vì nói arc chung chung lắm, Có arc do bạn vẽ ra, có arc do fillet mà ra, lại có arc chui trong các block.... Bạn cần cái chi????

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ề,

1/- Đã có lisp rồi. bạn chịu khó tìm kiếm đi nhé.

2/- bạn nên gử bản vẽ của bạn lên vì nói arc chung chung lắm, Có arc do bạn vẽ ra, có arc do fillet mà ra, lại có arc chui trong các block.... Bạn cần cái chi????

Hì Hì Hì!

Bác PTB dạo này kỹ quá hè! Chắc ý bạn ấy là arc thông thường thôi. Cứ p đầu và p cuối curve mà line xem sao hè.

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ôi cố tìm cho bạn nhưng chưa tìm ra. Trong lúc chờ đợi, bạn dùng cái này thử xem sao

;Doan Van Ha - CADViet.com - Ngay28/12/2011
;Muc dich: Convert Arc to Line.
(defun C:HA()
(vl-load-com)
(if (ssget (list (cons 0 "ARC")))
 (vlax-for obj (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object)))
  (entmake
(list
	(cons 0 "LINE") (cons 10 (vlax-curve-getStartPoint obj)) (cons 11 (vlax-curve-getEndPoint obj))
	(cons 8 (vlax-get-property obj 'Layer))
	(cons 62 (vlax-get-property obj 'Color))
	(cons 6 (vlax-get-property obj 'LineType))
	(cons 370 (vlax-get-property obj 'LineWeight))))
  (vla-delete obj)))
(princ))

  • 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ôi cố tìm cho bạn nhưng chưa tìm ra. Trong lúc chờ đợi, bạn dùng cái này thử xem sao

;Doan Van Ha - CADViet.com - Ngay 28/12/2011
;Muc dich: Convert Arc to Line.
(defun C:HA( / ss objlst p1 p2)
(vl-load-com)
(setq ss (ssget (list (cons 0 "ARC"))))
(setq objlst (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))
(foreach obj objlst
 (setq p1 (vlax-curve-getStartPoint obj) p2 (vlax-curve-getEndPoint obj))
 (vla-delete obj)
 (entmake (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2))))
(princ))

Nếu có thể, Bác bổ sung thêm phần thuộc tính (MatchProp): Layer, Color, LineType, ...
  • 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

Thank bác! Chờ xem chủ topic có ý kiến gì thì làm thêm luôn hè. Bác cho hỏi có cách khác để lấy objlst đơn giản hơn dùng hàm ở trên không?

P/S (13h40): đã bổ sung các thuộc tính của Line giống như Arc. Link cũ.

P/S: OK. Đã lấy objlst đơn giả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

Thank bác! Chờ xem chủ topic có ý kiến gì thì làm thêm luôn hè. Bác cho hỏi có cách khác để lấy objlst đơn giản hơn dùng hàm ở trên không?

Cách lấy list ename bằng ssnamex, acet, duyệt vòng lặp trên diễn đàn hình như có bàn rồi bác ạ

SSnamex code nhanh nhưng tốc độ chậm nhất so với những thằng còn lại. Với số lượng đối tượng thao tác không nhiều thì dùng ssnamex được ạ.

Nếu bác thao tác với các đối tượng vla thì nhanh nhất lại là Active Selection Set

Ngoài ra, nếu trong 1 code mà bác đã dùng 1 dống ACET thì k có lý gì lại k dùng acet-ss-to-list ^^

  • 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ình xin cảm ơn các bác nhé. Mình cũng chỉ muốn biến arc đơn lẻ bình thường (không nằm trong block) của bản vẽ thôi. Các thuộc tính về layer, colour, linetype mình sẽ tự quản lý bằng tay.

P/s: @bác Doan Van Ha: Lisp của bác toàn bắt đầu lệnh bằng "ha". Thương hiệu cá nhân nâng cao thế! Hi hi. Ngưỡng mộ: clap hands!

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

×