Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
68 replies to this topic

#1 utmap

utmap

    biết vẽ arc

  • Members
  • PipPip
  • 45 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 20 May 2010 - 10:26 AM

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 [B]/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!
  • 1

#2 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 20 May 2010 - 11:56 AM

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 [B]/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 < B/G/K > :"))
(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
)

  • 4

#3 utmap

utmap

    biết vẽ arc

  • Members
  • PipPip
  • 45 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 20 May 2010 - 12:42 PM

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

#4 18011985

18011985

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 255 Bài viết
Điểm đánh giá: 61 (tàm tạm)

Đã gửi 20 May 2010 - 01:20 PM

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 [B]/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)
  • 0
Trăng 16 trăng tròn
Em 16 bụng ... như trăng

Hướng dẫn sử dụng diễn đàn:
Để cảm ơn hay bài viết có ích: Ấn dấu + cuối bài.
Không vừa lòng hay bài spam: Ấn dấu - cuối bài.

#5 utmap

utmap

    biết vẽ arc

  • Members
  • PipPip
  • 45 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 20 May 2010 - 01:58 PM

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

#6 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 20 May 2010 - 02:40 PM

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 < B/G/K > :"))
(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)
(<= (distance (vlax-curve-getstartpoint 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
)

  • 1

#7 duyngoc

duyngoc

    biết vẽ pline

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

Đã gửi 20 May 2010 - 05:17 PM

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

#8 utmap

utmap

    biết vẽ arc

  • Members
  • PipPip
  • 45 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 20 May 2010 - 05:24 PM

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

#9 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 20 May 2010 - 10:32 PM

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)

Út hãy thử với code Lisp này nhé :
http://www.cadviet.c...pfiles/2/hb.lsp
  • 6

#10 cd2k44

cd2k44

    Edu level: li5

  • Members
  • PipPipPipPipPipPipPip
  • 648 Bài viết
Điểm đánh giá: 121 (tàm tạm)

Đã gửi 20 May 2010 - 11:04 PM

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

#11 utmap

utmap

    biết vẽ arc

  • Members
  • PipPip
  • 45 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 21 May 2010 - 07:00 AM

Út hãy thử với code Lisp này nhé :
http://www.cadviet.c...pfiles/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.
  • 0

#12 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 21 May 2010 - 08:05 AM

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

#13 miennui_tomo3d

miennui_tomo3d

    biết dimcenter

  • CADViet Team
  • PipPipPipPipPip
  • 325 Bài viết
Điểm đánh giá: 113 (tàm tạm)

Đã gửi 21 May 2010 - 10:56 AM

Út hãy thử với code Lisp này nhé :
http://www.cadviet.c...pfiles/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
  • 0
Sống Trên Đời Cần Phải Có Một Tấm Lòng Dù Để ......... Tối Nấu Ăn !

#14 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 21 May 2010 - 11:28 AM

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.c...iles/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
  • 2

#15 miennui_tomo3d

miennui_tomo3d

    biết dimcenter

  • CADViet Team
  • PipPipPipPipPip
  • 325 Bài viết
Điểm đánh giá: 113 (tàm tạm)

Đã gửi 21 May 2010 - 11:50 AM

'miennui_tomo3d' sử dụng code Lisp sau :
http://www.cadviet.c...iles/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 .
  • 0
Sống Trên Đời Cần Phải Có Một Tấm Lòng Dù Để ......... Tối Nấu Ăn !

#16 trioby1

trioby1

    biết pan

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

Đã gửi 15 October 2010 - 03:02 PM

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

#17 nguyenvinhok

nguyenvinhok

    biết zoom

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

Đã gửi 09 May 2011 - 10:30 AM

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

#18 toiyeuvietnam

toiyeuvietnam

    biết vẽ polygon

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

Đã gửi 26 December 2011 - 11:57 PM

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

Hình đã gửi
  • 0

#19 bkhn_2011

bkhn_2011

    biết vẽ pline

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

Đã gửi 27 December 2011 - 12:19 AM

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

Hình đã gửi

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

#20 Chiron

Chiron

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 90 (tàm tạm)

Đã gửi 27 December 2011 - 05:38 AM

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