Chuyển đến nội dung
Diễn đàn CADViet
utmap

[Đã xong] lisp Hatch (gạch, bê tông, kính) - hay

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

Xin các cao thủ viết dùm em cái lisp như sau:

1- Gõ lệnh:"hat"

2- (hatch bê tông /hatch gạch [G]/hatch kính [K]):_

B=AR-CONC[scale=20;Angle=0] + ANSI32[scale=200;Angle=0]

G=ANSI31[scale=400;Angle=0]

K=AR-RROOF[scale=500;Angle=45]

3- Khi đã chọn các thông số (B,G hoặc K) như trên thì ta click vào đối tượng khép kín nào thì máy tự động hatch.

 

Và các hatch đó khi ta double vào vẫn hiện ra bảng hatch edit như bình thường.

Rất mong lisp của các bác. thanks all!

  • 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
Xin các cao thủ viết dùm em cái lisp như sau:

1- Gõ lệnh:"hat"

2- (hatch bê tông /hatch gạch [G]/hatch kính [K]):_

B=AR-CONC[scale=20;Angle=0] + ANSI32[scale=200;Angle=0]

G=ANSI31[scale=400;Angle=0]

K=AR-RROOF[scale=500;Angle=45]

3- Khi đã chọn các thông số (B,G hoặc K) như trên thì ta click vào đối tượng khép kín nào thì máy tự động hatch.

 

Và các hatch đó khi ta double vào vẫn hiện ra bảng hatch edit như bình thường.

Rất mong lisp của các bác. thanks all!

Ut sử dụng thử code sau :

 

(defun c:hb(/ ans ten sc ang dt)

(setvar "cmdecho" 0)

(initget "B G K")

(setq ans (getkword "\n Chon kieu hatch :"))

(WHILE (setq dt (car(entsel "\n Chon doi tuong kin de hatch :")))

(if (= ans "B")

(progn

(setq ten "AR-CONC" sc 20.0 ang 0.0

ten2 "ANSI32" sc2 200.0 ang 0.0)

(lh dt ten sc ang)

(lh dt ten2 sc2 ang)

)

)

(if (= ans "G")

(progn

(setq ten "ANSI31" sc 400.0 ang 0.0)

(lh dt ten sc ang)

)

)

(if (= ans "K")

(progn

(setq ten "AR-RROOF" sc 500.0 ang 45.0)

(lh dt ten sc ang)

)

)

);WHILE

(princ)

)

(defun lh(dt name tle goc)

(if (vlax-curve-isClosed dt)

(progn

(vl-cmdf "hatch" "P" name tle goc "S" dt "")

)

(alert "\n Doi tuong khong kin")

 

);if

)

  • Vote tăng 4

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

Lisp xài rất ngon anh Tuệ ạ! không biết nói gì hơn, chỉ mong có ngày đền đáp :s_big:

 

Mọi người mại dzô đê, có lisp này công việc triển khai BV chắc chắn sẽ nhẹ hơn rất nhiều...hoan hô anh Tuệ! :rolleyes:

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
Xin các cao thủ viết dùm em cái lisp như sau:

1- Gõ lệnh:"hat"

2- (hatch bê tông /hatch gạch [G]/hatch kính [K]):_

B=AR-CONC[scale=20;Angle=0] + ANSI32[scale=200;Angle=0]

G=ANSI31[scale=400;Angle=0]

K=AR-RROOF[scale=500;Angle=45]

3- Khi đã chọn các thông số (B,G hoặc K) như trên thì ta click vào đối tượng khép kín nào thì máy tự động hatch.

 

Và các hatch đó khi ta double vào vẫn hiện ra bảng hatch edit như bình thường.

Rất mong lisp của các bác. thanks all!

Viết như bác Tue_NV rất chuẩn. Nhưng để bạn hiểu thêm về hatch 2 thuộc tính cùng 1 lúc bạn nên mở file ACad.pat gộp 2 thuộc tính B=AR-CONC[scale=20;Angle=0] + ANSI32[scale=200;Angle=0] vào với 1 lần chọn trong chương trình hatch bạn được ký hiệu bê tông hoàn chỉnh.

Đây chỉ là cách làm khác. (với Scale tỷ lệ khá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

Lisp này chỉ chọn được đối tượng khép kín sẵn, nếu ko kín phải dùng lệnh PE, vậy có cách nào khi ta click vào vị trí bất kỳ nằm trong phần diện tích (có thể hở) đó mà vẫn hatch được ko các bác??? thanks all!

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
Lisp này chỉ chọn được đối tượng khép kín sẵn, nếu ko kín phải dùng lệnh PE, vậy có cách nào khi ta click vào vị trí bất kỳ nằm trong phần diện tích (có thể hở) đó mà vẫn hatch được ko các bác??? thanks all!

Út sử dụng lại code sau :

Khi Khoang cach diem dau va cuoi cua doi tuong không vuot qua 5000

thì Lisp sẽ tự động hatch cho mình :

 

(defun c:hb(/ ans ten sc ang dt)

(setvar "cmdecho" 0)

(initget "B G K")

(setq ans (getkword "\n Chon kieu hatch :"))

(WHILE (setq dt (car(entsel "\n Chon doi tuong kin de hatch :")))

(if (= ans "B")

(progn

(setq ten "AR-CONC" sc 20.0 ang 0.0

ten2 "ANSI32" sc2 200.0 ang 0.0)

(lh dt ten sc ang)

(lh dt ten2 sc2 ang)

)

)

(if (= ans "G")

(progn

(setq ten "ANSI31" sc 400.0 ang 0.0)

(lh dt ten sc ang)

)

)

(if (= ans "K")

(progn

(setq ten "AR-RROOF" sc 500.0 ang 45.0)

(lh dt ten sc ang)

)

)

);WHILE

(princ)

)

(defun lh(dt name tle goc)

(setvar "hpgaptol" 5000.0)

(if (or (vlax-curve-isClosed dt)

(

(vlax-curve-getendpoint dt)

) (getvar "hpgaptol")

)

)

(progn

(vl-cmdf "hatch" "P" name tle goc "S" dt "")

)

(alert "\n Khoang cach diem dau va cuoi cua doi tuong vuot qua 5000")

);if

)

  • Like 1
  • 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
Lisp này chỉ chọn được đối tượng khép kín sẵn, nếu ko kín phải dùng lệnh PE, vậy có cách nào khi ta click vào vị trí bất kỳ nằm trong phần diện tích (có thể hở) đó mà vẫn hatch được ko các bác??? thanks all!

có đấy bạn làm theo cách của bác hoành ấy. mình không nhớ là mục nào bạn thử seach trên diễn đàn xem!!!

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 sử dụng lại code sau :

Khi Khoang cach diem dau va cuoi cua doi tuong không vuot qua 5000

thì Lisp sẽ tự động hatch cho mình :

 

Bác Tuệ ơi! Em muốn lisp nó như lệnh hatch được không bác (1 chế độ pick point; 1 chế độ select object)

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

Sao mình load về mà apload lên lại không sử dụng được nhỉ. Toàn báo lổi không hiểu lệnh hb?

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 hãy thử với code Lisp này nhé :

http://www.cadviet.com/upfiles/2/hb.lsp

 

Cảm ơn anh Tuệ nhiều nhiều, lisp xài rất ngon, rất có ích cho những họa viên khi triển khai bản vẽ, năng suất có thể nói tăng 20% :rolleyes:

Bầu anh làm Thống đốc bang Autolisp :s_big:

@cd2k44: lisp dùng bình thường mà bạn, bạn test lại xem.

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
Sao mình load về mà apload lên lại không sử dụng được nhỉ. Toàn báo lổi không hiểu lệnh hb?

Các bạn cần chú ý 1 điểm khi sử dụng Lisp là :

Lisp có thể hatch với miền Hatch có khoảng hở và khoảng hở đó được định nghĩa bằng dòng code :

(setvar "hpgaptol" 50.0). Các bạn có thể thay giá trị HPgaptol cho phù hợp với công việc của mình

 

CAD2004 trở về trước thì không sử dụng được Lisp này vì CAD2004 trở về trước chỉ hatch được miền kín, không hatch được miền hở.

Không biết CAD 2005,2006 có Hatch được miền hở hay không nhưng với CAD2007 trở lên thì Hatch được miền hở và sử dụng được code Lisp này. CAD2004 trở về trước muốn sử dụng được code này thì bỏ dòng (setvar "hpgaptol" 50.0) đi

  • Vote tăng 3

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 hãy thử với code Lisp này nhé :

http://www.cadviet.com/upfiles/2/hb.lsp

Mỗi nét hatch là 1 layer khác nhau .

ví dụ :

hatch "G " là dành cho tường , em dùng layer I-Wall-hatch , color bylayer , linetype continuous

hatch "B " là dành cho tường , em dùng layer I-Wall-hatch , color bylayer , linetype continuous

hatch "K " là dành cho kính , em dùng layer I-Fur-hatch , color bylayer , linetype continuous

Bác có cách nào để khi em dùng hatch "G" là nó đúng layer I-Wall-hatch không mặc dù layer hiện hành đang vẽ là layer khá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
Mỗi nét hatch là 1 layer khác nhau .

ví dụ :

hatch "G " là dành cho tường , em dùng layer I-Wall-hatch , color bylayer , linetype continuous

hatch "B " là dành cho tường , em dùng layer I-Wall-hatch , color bylayer , linetype continuous

hatch "K " là dành cho kính , em dùng layer I-Fur-hatch , color bylayer , linetype continuous

Bác có cách nào để khi em dùng hatch "G" là nó đúng layer I-Wall-hatch không mặc dù layer hiện hành đang vẽ là layer khác

'miennui_tomo3d' sử dụng code Lisp sau :

http://www.cadviet.com/upfiles/2/hb12.lsp

Đương nhiên là các bạn có thể sửa Lisp tuỳ biến cho công việc của mình

  • Vote tăng 2

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
'miennui_tomo3d' sử dụng code Lisp sau :

http://www.cadviet.com/upfiles/2/hb12.lsp

Đương nhiên là các bạn có thể sửa Lisp tuỳ biến cho công việc của mình

:rolleyes:

Em dựa vào lisp ấy em sua lai cac layer , them vai cái hatch .

Phải nói là tuyệt vời . ka ka ka .

Thanks bác nhiề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

Thế mấy bác ui! Có thể chỉnh lại lisp thêm chức năng là chỉnh độ nét của vật liệu theo ý của mình vậy các bạn.

Mình có tìm hiểu và cũng có thử hiệu chỉnh lại độ nét của nét vật liệu nhưng không được( có thể mặc định độ nét nhất định hoặc là chỉnh độ nét theo câu lệnh của lisp).

Mong các bạn 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

Tớ xài CAD 2007 ma sử dụng vẫn không được.Pick điểm hoài vẫn không ra hack.Chắc làm không đúng cách.Bạn hướng dẫn cụ thể mình cái đưọc Không.Lisp hatch vùng hơ ấy.Mình đang làm cái quy hoạch giao thông.Muốn hatch đường cho nó nổi lên.Mà hatch hoài không được ức ghê.

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ác bác ơi giúp em vấn đề này với, cái lisp hatch này muốn khi hatch nó không đè lên số như hình bền thì làm thế nào để nhanh và thuận tiện cho công việc em làm nhỉ

(defun c:hh5 (/ A B C)

(command "-layer" "m" "Hatch" "c" "8" "" "")

(SETQ A (GETPOINT "CHON DIEM : "))

(command "-boundary" A "")

(setq B (ssget "L"))

(command "offset" "0.5" B A "")

(setq C (ssget "L"))

(command "hatch" "ANSI31" "3" "0" C B "")

(COMMAND "CHPROP" (ssget "L") "" "LA" "HATCH" "")

(command "erase" B "")

(command "erase" C "")

(princ))

 

untitled.jpg

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ác bác ơi giúp em vấn đề này với, cái lisp hatch này muốn khi hatch nó không đè lên số như hình bền thì làm thế nào để nhanh và thuận tiện cho công việc em làm nhỉ

(defun c:hh5 (/ A B C)

(command "-layer" "m" "Hatch" "c" "8" "" "")

(SETQ A (GETPOINT "CHON DIEM : "))

(command "-boundary" A "")

(setq B (ssget "L"))

(command "offset" "0.5" B A "")

(setq C (ssget "L"))

(command "hatch" "ANSI31" "3" "0" C B "")

(COMMAND "CHPROP" (ssget "L") "" "LA" "HATCH" "")

(command "erase" B "")

(command "erase" C "")

(princ))

 

untitled.jpg

bạn ơi cho mình hỏi một tý nhé. Mình giờ cũng mới tập tành lisp, mình down các file chạy về máy, upload máy báo thành công rồi mà khi mình gõ lệnh toàn bị Unknown thôi hả bạn, có phải lệnh tắt là cái lệnh sau: defun c: đó không hả bạn. Rất mong bạn trả lời giúp mì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

bạn ơi cho mình hỏi một tý nhé. Mình giờ cũng mới tập tành lisp, mình down các file chạy về máy, upload máy báo thành công rồi mà khi mình gõ lệnh toàn bị Unknown thôi hả bạn, có phải lệnh tắt là cái lệnh sau: defun c: đó không hả bạn. Rất mong bạn trả lời giúp mình

VD: (defun c:hh5 (/ A B C) => Lệnh là hh5

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ác bác ơi giúp em vấn đề này với, cái lisp hatch này muốn khi hatch nó không đè lên số như hình bền thì làm thế nào để nhanh và thuận tiện cho công việc em làm nhỉ

......

 

untitled.jpg

Nếu đã lỡ Hatch đè lên số thì bạn mang thêm "mặt nạ" cho Text bằng lệnh Textmask. Đảm bảo Text sẽ đè lên hatch

Lệnh Textmask : một lệnh trong bộ phụ trợ Express

  • Vote tăng 1
  • Vote giảm 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

Tình hình là dựa vào gợi ý của bác Ketxu và lisp sẵn của bác Tue_NV nhưng em vẫn ko viết được lisp theo đúng yêu cầu. Nhờ bác Tue_NV bỏ chút thời gian giúp em nhé.

mô tả:

Lệnh H1 thì cad tự động chuyển sang layer "aaa"(có sẵn trong bản vẽ) và hỏi kiểu chọn hatch

p/s để chọn điểm hoặc đường bo, sau đó tự động hatch solid

Thanks bá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

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

×