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

Kiểm tra layer để thực hiện lệnh

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

Chào các bác. Em tìm trên diễn đàn mà không thấy có chủ đề nào em thắc mắc. Em nhờ các bác viết cho e cái lisp tên là HH để hatch vật liệu với yêu cầu như sau:

Ví dụ bản vẽ của e có  layer là: (HTS)-Hatch. Em muốn khi thực hiện lệnh HH, lisp sẽ kiểm tra xem bản vẽ có layer (HTS)-Hatch không, nếu tìm thấy thì Hatch vật liệu bằng layer (HTS)-Hatch. Nếu không tìm thấy thì Hatch vật liệu bằng layer đang hiện hành

 

em xin cảm ơn các bác. Chúc các bác ngày mới vui vẻ  :)  :)  :)  :)  :)

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

Chào các bác. Em tìm trên diễn đàn mà không thấy có chủ đề nào em thắc mắc. Em nhờ các bác viết cho e cái lisp tên là HH để hatch vật liệu với yêu cầu như sau:

Ví dụ bản vẽ của e có  layer là: (HTS)-Hatch. Em muốn khi thực hiện lệnh HH, lisp sẽ kiểm tra xem bản vẽ có layer (HTS)-Hatch không, nếu tìm thấy thì Hatch vật liệu bằng layer (HTS)-Hatch. Nếu không tìm thấy thì Hatch vật liệu bằng layer đang hiện hành

 

em xin cảm ơn các bác. Chúc các bác ngày mới vui vẻ  :)  :)  :)  :)  :)

 

dddddd_zpsdcm2wdgg.png[/uR

L]

 

Muốn hatch hình chữ nhật (H.1) theo một hatch bất kỳ đã có sẵn trên file,

 anh chỉ việc gõ lệnh HE >>>

Pick chuột vào đối tượng hatch bất kỳ đã có sẵn trên file bản vẽ >>>

Nó sẽ lòi ra bảng sau:

aaaaaaaaaaaaaa_zpscei6dgbp.png

 

Sau khi Clik chuột vào Add: Pick Points rồi Pick chuột vào hình chữ nhật cần hatch, 

sẽ có hai sự lựa chọn lựa chọn :

1/ Nếu bỏ chọn ô Separate hatches >>>

Hatch hình chữ nhật và hatch đã có sẳn sẽ tự động hợp thành 01 đối tượng

2/ Nếu bấm chọn ô Separate hatches >>>

Hatch hình chữ nhật và hatch đã có sẵn sẽ là 02 đối tượ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

Chào các bác. Em tìm trên diễn đàn mà không thấy có chủ đề nào em thắc mắc. Em nhờ các bác viết cho e cái lisp tên là HH để hatch vật liệu với yêu cầu như sau:

Ví dụ bản vẽ của e có  layer là: (HTS)-Hatch. Em muốn khi thực hiện lệnh HH, lisp sẽ kiểm tra xem bản vẽ có layer (HTS)-Hatch không, nếu tìm thấy thì Hatch vật liệu bằng layer (HTS)-Hatch. Nếu không tìm thấy thì Hatch vật liệu bằng layer đang hiện hành

 

em xin cảm ơn các bác. Chúc các bác ngày mới vui vẻ  :)  :)  :)  :)  :)

Nếu bạn biết về lisp thì hàm sau sẽ cho phép cho bạn kiểm tra layer (HTS)-Hatch có trong bản vẽ không

(tblsearch "layer" "(HTS)-Hatch")
Để kiểm tra bạn cũng có thể dùng code trên nhưng thay "0" vào "(HTS)-Hatch")" để thành

(tblsearch "layer" "0")
hàm sẽ trả về nil nếu không có layer tương ứng, và trả về Lisp nếu có Layer này trong bản vẽ

Về yêu cầu của bạn, bạn yêu cầu rõ hơn thì sẽ dễ hơn. chẳng hạn : sau khi dùng xong lệnh HH thì cad hiện hộp thoại Hatch lên hay là chỉ cần đổi mặc định layer Hatch là layer "(HTS)-Hatch"

thì có thể dùng


(defun c:HH()

(if (tblsearch "layer" "(HTS)-Hatch")

(setvar "HPLAYER" "(HTS)-Hatch")

(setvar "HPLAYER" (getvar "clayer"))

))

  • 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

Cảm ơn  Quansla,  đọc bài viết của bác , em mới giật mình vì câu trả lời ở bài viết trên của em hơi bị ...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

Cảm ơn các bác đã giúp em. Em làm được rồi ạ. E mới tập tành học lisp nên chưa biết nhiều. Mục đích câu hỏi của e chỉ là thực hiện lệnh với layer chỉ định, nếu không tìm thấy thì sử dụng layer hiện hành. Cảm ơn bác Quansla nhé.  :)  :)  :)  :)  :)  :D  :D  :D  :D  :D  :D

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

Bác Quansla ơi. Em test thử với các lệnh khác như : Line, dim....thì không được. mà em thấy bác dùng biến Hplayer ở đây là không chuẩn. e đã thay đổi code như sau thì được ạ.


 


Giải thích: lệnh L là để vẽ pline, nếu tìm thấy layer  thì gán (setvar "clayer" "(HTS)-3-THAY"), nếu không tìm thấy thì mặc định là lấy layer hiện hành, sau đó thực hiện lệnh (command "Pline")

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

Bác Quansla ơi. Em test thử với các lệnh khác như : Line, dim....thì không được. mà em thấy bác dùng biến Hplayer ở đây là không chuẩn. e đã thay đổi code như sau thì được ạ.

 

Giải thích: lệnh L là để vẽ pline, nếu tìm thấy layer  thì gán (setvar "clayer" "(HTS)-3-THAY"), nếu không tìm thấy thì mặc định là lấy layer hiện hành, sau đó thực hiện lệnh (command "Pline")

Mình dùng biến HPlayer là do câu hỏi bạn hỏi chưa rõ, mình những tưởng bạn cần mặc định layer dùng để Hatch sau này luôn là (HTS)-3-THAY chứ không nghĩ bạn cần layer dùng để thực hiện mọi lệnhh sau đó là layer (HTS)-3-THAY luôn.

 

Thử thế này coi.


(defun c:L (/ oldlay )

; Luu lai bien layer hien hanh

(setq oldlay (getvar "clayer"))

 

 

;cach 1 dung code IF (tblsearch ....) KQ tra ve "DIM"

(if (tblsearch "layer" "DIM" ) (setvar "clayer" "DIM"))

;cach 2 dung code AND (tblsearch ...) KQ tra ve True (logic)

(and (tblsearch "layer" "DIM" ) (setvar "clayer" "DIM"))

 

 

;layer hien hanh thi di nhien khong can doi

;thuc hien lenh

(command ".pline" (while (> (getvar "cmdactive") 0)(command pause)))

(setvar "clayer" oldlay)

(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

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


×