Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
7 replies to this topic

#1 victor85

victor85

    biết lệnh stretch

  • Members
  • PipPipPip
  • 169 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 28 December 2011 - 03:57 PM

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. :)
  • 0

#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 28 December 2011 - 07:16 PM

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????
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 28 December 2011 - 09:06 PM

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è.
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 28 December 2011 - 11:17 PM

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))

  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#5 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 29 December 2011 - 07:45 AM

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, ...
  • 1

#6 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 29 December 2011 - 08:16 AM

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.
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#7 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 29 December 2011 - 08:43 AM

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 ^^
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#8 victor85

victor85

    biết lệnh stretch

  • Members
  • PipPipPip
  • 169 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 29 December 2011 - 03:39 PM

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!
  • 0