Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
gachick87

[Yêu cầu] Xin Lisp biến pline có bề dày thành rectang

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

gachick87    0

các bác viết giúp em lisp sau với ạ:

lisp: p2r.lsp

Lisp biến cùng lúc nhiều pline có bề dày trong khung cửa sổ lựa chọn thành rectang bao quanh vừa khít Pline có độ dày đó.

Với layer vẽ rectang mới là layer hiện hành của bản vẽ ạ.

 

Hình minh họa:

 

1-1.jpg

 

Em xin cảm ơn các bác nhiều nhiề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
ketxu    2.649

Yêu cầu của bạn toàn Pline nằm ngang ? hãy nhớ để dựng hình thì thằng ngang khác với thằng k ngang (dễ hơn ^^) :)

 

Ví dụ nhanh với Pline ngang :

 

(defun c:p2r(/ massocV eRec isSame id tmp lst lstObj ov)
(defun massocV (id data)
 (mapcar 'cdr (vl-remove-if-not '(lambda(x)(eq id (car x))) data))
)
(defun eRec (p1 p2 hw / lst)(setq lst (list 0 hw 0))
 (entmake
  (append
(list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline")
	(cons 8 (getvar 'cLayer))    
	(cons 90 4)(cons 70 1)
) 
(mapcar '(lambda (x) (cons 10 x)) (mapcar '(lambda(x y)(mapcar x y lst)) '(+ + - -) (list p1 p2 p2 p1)))
  )
 ) 
)
(defun isSame (lst)(and (not (zerop (car lst)))(apply 'and (mapcar '(lambda(x y)(equal x y)) lst (cdr lst)))))
(setq id '(40 41) ov (getvar 'plinewid))
(setvar 'plinewid 0)
(foreach obj (setq lstObj (acet-ss-to-list (ssget (list (cons 0 "*POLYLINE")(cons 90 2)))))
 (if (isSame (setq lst (apply 'append (mapcar '(lambda(x)(massocV x (entget obj))) id))))
  (erec (car (setq tmp (massocV 10 (entget obj))))(last tmp) (* 0.5 (car lst)))
 )
)
(if (wcmatch (getstring "\nXoa duong goc [Y/N]? <Y> :") ",[yY]")
 (mapcar 'entdel lstObj)
)
(setvar 'plinewid ov)
)

 

- Nếu k ngang thì lại phải sửa đi 1 chút

- Nếu k phải chỉ có 1 segment thì lại sửa đi 1 chút nữa

- Nếu k phải chỉ có segment thẳng thì lại phải sửa đi nhiều nữa

- Nếu k phải chiều dày đầu cuối bằng nhau thì ...

....

....

Google!

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

uầy, quả thật không đơn giản. Thế bác xem sửa cho em đúng với các pline chỉ gồm 1 đoạn thẳng, góc quay bất kì, chiều dày đầu cuối bằng nhau được không ạ?

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
gia_bach    1.442

- Nếu chiều dày bằng nhau thì ...

....

....

... offset 2 bên với k/cách bằng 1/2 chiều dày, sau đó bít 2 đầu chắc là đượ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
gachick87    0

Yeah, link của ketxu hàng khủng quá. Chuẩn không cần chỉnh bác ạ. Em cảm ơn bác nhiều nhiều nhé. Chúc bác mạnh khỏe cống hiến được nhiều hơn nữa cho đờ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
ketxu    2.649

... offset 2 bên với k/cách bằng 1/2 chiều dày, sau đó bít 2 đầu chắc là được ?!

Được bác ạ, em đã thử làm từ lúc chiều. Tuy nhiên khi đó phải explode 2 đối tượng vừa offset ra (vì nó vẫn mang Plinewid của phân đoạn cũ), sau đó bít 2 đầu và nối lại ^^ Hơn nữa cách đó chỉ áp dụng nếu startwidth và endwidth giống nhau .

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
haanh    1.586

các bác viết giúp em lisp sau với ạ:

lisp: p2r.lsp

Lisp biến cùng lúc nhiều pline có bề dày trong khung cửa sổ lựa chọn thành rectang bao quanh vừa khít Pline có độ dày đó.

Với layer vẽ rectang mới là layer hiện hành của bản vẽ ạ.

 

Hình minh họa:

 

1-1.jpg

 

Em xin cảm ơn các bác nhiều nhiều ạ.

Em tò mò muốn hỏi bác: " biến Pline có bề dày thành Rectang có ứng dụng gì trong công việc ? Nếu chỉ để in ra giấy nhìn đoạn PL nó giống như hình chữ nhật thì chỉ cần dùng 02 lệnh AutoCAD là có thể làm được đúng như hình minh họ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

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  

×