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

Lisp sửa pline

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

asu2006    3

Nhờ mọi người giúp đỡ.

mình muốn có 1 lisp thay đổi bề rộng (width) của hàng loạt pline theo giá trị (tăng hoặc giảm) khi nhập vào

ví dụ: mình có 10 đường Pline trong đó có 5 đường màu đỏ có width = 20, 5 đường màu xanh có width bằng 30, giờ muốn giảm width cả 10 đường trên đi 10 đơn vị ( tức là đường màu đỏ có width = 10 và đường màu xanh có width = 20)

- Đánh lệnh -> chọn đối tượng -> nhập giá thị ( tăng lên hoặc giảm đi) -> enter

Chân thành cảm ơ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
phamthanhbinh    3.123

Nhờ mọi người giúp đỡ.

mình muốn có 1 lisp thay đổi bề rộng (width) của hàng loạt pline theo giá trị (tăng hoặc giảm) khi nhập vào

ví dụ: mình có 10 đường Pline trong đó có 5 đường màu đỏ có width = 20, 5 đường màu xanh có width bằng 30, giờ muốn giảm width cả 10 đường trên đi 10 đơn vị ( tức là đường màu đỏ có width = 10 và đường màu xanh có width = 20)

- Đánh lệnh -> chọn đối tượng -> nhập giá thị ( tăng lên hoặc giảm đi) -> enter

Chân thành cảm ơn!

Hề hề hề,

Hãy gửi bản vẽ lên. Pline có nhiều loại lắm. có pline từ đầu tới cuối chỉ có một chiều dày, có pline có chiều dày thay đổi theo từng đoạn .... Và nếu như vậy thì việc bạn chọn giá trị trừ không hợp lý sẽ lôi thôi đó.

Hề hề 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
asu2006    3

Cái này dùng qselect hoặc filter rồi properties nó là xong mà, chỉ vài thao tác là xong rồi.

với số đường lên đến hàng trăm, thuộc nhiều layer, màu sắc khác nhau, vẽ cho nhiều loại tỉ lệ lên làm thế rất lâ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
Doan Van Ha    2.676

với số đường lên đến hàng trăm, thuộc nhiều layer, màu sắc khác nhau, vẽ cho nhiều loại tỉ lệ lên làm thế rất lâu

Bạn thử chưa? Chưa chắc lisp nhanh hơn dùng lệnh CH đâu, cho dù có hàng triệu đường đi 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
quansla    232

Bạn thử chưa? Chưa chắc lisp nhanh hơn dùng lệnh CH đâu, cho dù có hàng triệu đường đi nữa.

Lisp của bạn @KangKung thì quả có lâu thật đấy, e với cả triệu đường thì lag tung máy mất. nếu không bạn @asu2006có thể thử dùng code sau

(defun c:thu ( / ss i dt j )
 ;;;???? regen ban ve sau khi bi (redraw (ssname ss i) 3) bang cai j day
 (or #h (setq #h 10))
 (cond
((setq h (getreal(strcat "nhap tang/giam < " (rtos #h 2 2) ">"))) (setq #h h))
((setq h #h))) 
 (setq ss (ssget '(( 0 . "LWPOLYLINE"))) i 0 j 0)
 ;(while (< i (sslength ss))(redraw (ssname ss i) 4)(setq i (1+ i))) (setq i 0)
 (while (< i (sslength ss))
(setq dt (entget(ssname ss i)))
(if(< (+ (cdr(assoc 43 dt)) h) 0)
 	(setq j (1+ j))
 	(entmod(subst (cons 43 (+ (cdr(assoc 43 dt)) h)) (assoc 43 dt) dt))     
 	)
(progn (redraw (ssname ss i) 3)(setq i (1+ i)) )
)
 (if (> j 0)
(alert (strcat "co " (rtos j 2 2) "doi tuong khong sua duoc"))
(princ "cac doi tuong da duoc sua"))
 (princ)
 )

Code của mình có một đoạn mình chưa sửa được, đó là các đối tượng bị Highlight sang 3 thì phải sửa thế nào, hi vọng có mem Cad khác giúp bạ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
Doan Van Ha    2.676

Có lẽ Quansla chưa hiểu ý tôi. Tôi không chê lisp hay dỡ, mà ý là: cái gì cad làm được thì đừng nên cậy đến lisp. Vậy thô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
duy782006    1.373

Theo mình thì việc này cad không làm được.

Mình dịch yêu caầu thế này:

-Một đống pline hiện tại ấy có 1 đống độ dày.

-Sau khi chỉnh độ dày bằng độ dày cũ nhân với 1 hệ số chứ ko phải thành 1 độ dày thống nhất.

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
duy782006    1.373

Thử xem:

 
(defun c:ctw (/ dt gtct stt sdt)
(princ "Chon cac LWPOLYLINE can chinh width !")
(setq dt (ssget (list (cons 0 "LWPOLYLINE"))))
(setq gtct (getreal "\nGia tri thay doi: "))
(setq stt 0)
(setq sdt (sslength dt))
(while (< stt sdt)
(entmod (subst (cons 43 (+ (cdr (assoc 43 (entget (ssname dt stt)))) gtct)) (assoc 43 (entget (ssname dt stt))) (entget (ssname dt stt))))
(setq stt (+ stt 1))
)
(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
asu2006    3

Bạn thử chưa? Chưa chắc lisp nhanh hơn dùng lệnh CH đâu, cho dù có hàng triệu đường đi nữa.

dùng lệnh CH thì chỉ dùng được cho từng đường có width bằng nhau thôi. ở đây mình muốn tất cả các đường cùng tăng lên theo một giá trị.lisp trên đã đáp ứng được nhu cầu của mình.

cảm ơn mọi người giúp đỡ!

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
hiepttr    523

Cho mình spam tí: Đã làm lisp để thay đổi chiều dày nét nhằm mục đích in nhiều tỉ lệ sao ko thay đổi theo kiểu nhân với 1 hệ số mà là cộng trừ nhỉ?! Phải chăng nhân thì khó hơn? Mình mù lisp nên có gì sai mấy bác cứ "choảng" thoải má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
Doan Van Ha    2.676

Cho mình spam tí: Đã làm lisp để thay đổi chiều dày nét nhằm mục đích in nhiều tỉ lệ sao ko thay đổi theo kiểu nhân với 1 hệ số mà là cộng trừ nhỉ?! Phải chăng nhân thì khó hơn? Mình mù lisp nên có gì sai mấy bác cứ "choảng" thoải mái ! :)

Cái "cộng" là y/c của chủ topic. Còn lisp thì cộng trừ nhân chia lũy thừa log liếc đều làm được.

@asu2006: mình nhầm, đã nói ở trên rồ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


×