Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
6 replies to this topic

#1 hatesale

hatesale

    biết zoom

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

Đã gửi 14 March 2015 - 10:33 AM

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


  • 0

#2 Hoan1111

Hoan1111

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2587 Bài viết
Điểm đánh giá: 692 (tốt)

Đã gửi 14 March 2015 - 02:36 PM



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:

[url=http://s956.photobucket.com/user/hoan2182/media/aaaaaaaaaaaaaa_zpscei6dgbp.png.html]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


  • 1

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...

 

 


#3 quansla

quansla

    biết lệnh xclip

  • Members
  • PipPipPipPipPipPipPip
  • 641 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 14 March 2015 - 09:19 PM

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

  • 1

#4 Hoan1111

Hoan1111

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2587 Bài viết
Điểm đánh giá: 692 (tốt)

Đã gửi 14 March 2015 - 09:45 PM

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 đề!!! :) :) :)


  • 0

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...

 

 


#5 hatesale

hatesale

    biết zoom

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

Đã gửi 15 March 2015 - 08:42 AM

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


  • 0

#6 hatesale

hatesale

    biết zoom

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

Đã gửi 17 March 2015 - 08:57 AM

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


  • 0

#7 quansla

quansla

    biết lệnh xclip

  • Members
  • PipPipPipPipPipPipPip
  • 641 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 18 March 2015 - 08:36 AM

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

  • 0