Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
11 replies to this topic

#1 haoetic

haoetic

    biết zoom

  • Members
  • Pip
  • 11 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 25 October 2012 - 02:23 PM

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

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 25 October 2012 - 02:29 PM

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

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


#3 haoetic

haoetic

    biết zoom

  • Members
  • Pip
  • 11 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 25 October 2012 - 03:14 PM

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

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 25 October 2012 - 04:13 PM

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

ketxu

    Copier - Paster - Editor

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

Đã gửi 25 October 2012 - 04:46 PM


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

  • 0

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


#6 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 25 October 2012 - 04:54 PM

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.


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

haoetic

    biết zoom

  • Members
  • Pip
  • 11 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 25 October 2012 - 04:55 PM

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

#8 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 25 October 2012 - 04:56 PM

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


#9 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 25 October 2012 - 05:23 PM



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

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


#10 haoetic

haoetic

    biết zoom

  • Members
  • Pip
  • 11 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 25 October 2012 - 05:34 PM

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

#11 haoetic

haoetic

    biết zoom

  • Members
  • Pip
  • 11 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 25 October 2012 - 05:58 PM

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

#12 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 26 October 2012 - 11:57 AM

Ư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
  • 0
Hình đã gửi