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  
haoetic

Yêu cầu lisp thay thế nhiều Hatch đã chọn bằng Hatch có sẵn (pick chuột)-ko dùng Ma

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

haoetic    0

Dear all!

Nhờ các cao thủ viết giúp mh lisp thực hiện công việc như sau:

Mh muốn thay thế hàng loạt Hatch đã chọn bằng một Hatch có sẵn bằng cách pick chuột.

Thao tác:

B1: Chọn các Hatch cần thay thế (dùng Quick select vì mh chọn rất nhiều đối tượng)

B2: Tên lệnh

B3: chọn Hatch nguồn

B4: Kết quả: Tất cả các Hatch đã chọn được thay thế bằng Hatch nguồn.

Xin cảm ơn các cao thủ trướ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
Doan Van Ha    2.676

Lisp thay thế các kiểu Hatchs được chọn bởi kiểu Hatch mẫu.

;Doan Van Ha - CADViet.com - Ngay 25/10/2012
;Muc dich: Thay the cac Hatchs bang Hatch mau.
(defun C:HA (/ acdoc hat kieu ss i ent)
(vl-load-com)
(cond ((not acdoc) (setq acdoc (vla-get-activedocument (vlax-get-acad-object)))))
(while (not (progn (princ "\rChon 1 Hatch mau... ") (setq hat (ssget ":S" '((0 . "HATCH")))))))
(setq kieu (cdr (assoc 2 (entget (ssname hat 0)))))
(princ "\nChon cac Hatch can Convert ...")
(if (setq ss (ssget (list (cons 0 "HATCH") (cons 2 (strcat "~" kieu)))))
 (progn
  (vla-StartUndoMark acdoc)
  ((lambda (i / ent)
(while
     (setq ent (ssname ss (setq i (1+ i))))
     (vla-setPattern (vlax-ename->vla-object ent) acHatchPatternTypePreDefined kieu))) -1)
  (vla-EndUndoMark acdoc)))
(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
haoetic    0

Trước tiên, xin cảm ơn sự giúp đỡ của bạn!

Nhưng còn một chút vấn đề, nhờ bạn chỉnh sửa giúp mh với.

Mh cần 1 lisp làm việc giống như lệnh Ma (kết quả đem lại hoàn toàn giống Ma), Nhưng thao tác thì ngược lại.

Nghĩa là: chọn đối tượng cần thay thế trước, rồi đến lệnh, rồi đến đối tượng nguồn.

(Lệnh Ma thì chọn đối tượng nguồn trước, rồi mới đến đối tượng cần thay thế, giống với lệnh Ha của bạn, nhưng Ha của bạn thì chỉ thay thế loại Hatch, không thay đổi layer và scale)

Thuật toán là: (Hàng loạt Hatch đã chọn = Hatch mẫ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

Chọn trước hay chọn sau thì trở ngại gì đối với bạn? Trong lisp này thì chọn sau có ưu điểm hơn, nên cảm phiền bạn là tôi không sửa, vì lisp free thì nhiều người dùng.

  • 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
ketxu    2.649
(defun c:banthichdatgithidat(/ ss tm)
(if
(and  (setq ss (ssget (list (cons 0 "HATCH"))))
  (setq tm (car (entsel "\nHatch mau :")))
  (= (cdr (assoc 0 (entget tm))) "HATCH")
) 
(command ".MATCHPROP" tm ss "" ^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
haoetic    0

Chọn trước hay chọn sau thì trở ngại gì đối với bạn? Trong lisp này thì chọn sau có ưu điểm hơn, nên cảm phiền bạn là tôi không sửa, vì lisp free thì nhiều người dùng.

Ưu điểm của việc chọn đối tượng trước là chọn được 1 lúc rất nhiều đối tượng theo Quick select, còn chọn đối tượng sau thì phải pick chuột nhiều lần, di chuyển chuột và khung nhìn nhiều lần, bất tiện hơn 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
ketxu    2.649

 

Nghĩa là: chọn đối tượng cần thay thế trước, rồi đến lệnh, rồi đến đối tượng nguồn.

Vẫn thế thôi bác H ạ :) đến command thì thằng (setq ss kia sẽ tự nhận Active SS ^^

P/s chủ topic : :)

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
haoetic    0

Tại sao phải pick chuột nhiều lần? Bạn thử chọn "ALL" xem cái gì nó lòi ra!

Cảm ơn bạn nhiều nhé.Cái lisp banthichgithidat đó làm đúng cái việc mh cần rồi. Nhưng cảm phiền bạn chỉnh lại tí để kết quả xuất ra hoàn toàn giống lệnh MA cho mh với. (Hatch được thay thế hoàn toàn giống hatch nguồn)

Cái lisp đó chỉ mới thay thế phần Hatch, còn các thuộc tính khác chưa hoàn toàn thay giống Ma.

Bạn giúp mh tí nhé, Mh đang cần.

Bạn đổi lại giúp mh tên lệnh là Th luôn hen.

Xin 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
haoetic    0

Cảm ơn bạn nhiều nhé.Cái lisp banthichgithidat đó làm đúng cái việc mh cần rồi. Nhưng cảm phiền bạn chỉnh lại tí để kết quả xuất ra hoàn toàn giống lệnh MA cho mh với. (Hatch được thay thế hoàn toàn giống hatch nguồn)

Cái lisp đó chỉ mới thay thế phần Hatch, còn các thuộc tính khác chưa hoàn toàn thay giống Ma.

Bạn giúp mh tí nhé, Mh đang cần.

Bạn đổi lại giúp mh tên lệnh là Th luôn hen.

Xin cảm ơn!

Ok! Được rồi bạn ơi.

Cảm ơn bạn nhiều nhé!

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
lp_hai    207

Ưu điểm của việc chọn đối tượng trước là chọn được 1 lúc rất nhiều đối tượng theo Quick select, còn chọn đối tượng sau thì phải pick chuột nhiều lần, di chuyển chuột và khung nhìn nhiều lần, bất tiện hơn bạn à.

hehehe nếu bạn biết xài qselect thì cũng có thể ko cần lisp

sau khi bạn qselect được các đt cần thay đổi, bạn thoát ra. xong gõ lệnh ma, chọn hatch mẫu, tiếp theo là giai đoạn chọn dt để thay đổi bạn chỉ gõ P (chọn dt previous).

Mình hay dùng cái này vì có thể áp dụng cho mọi đối tượng dim, layer, text..... để kết hợp qselect với Ma

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  

×