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ị

bác Ketxu ơi giúp em sửa cái lisp hatch (HH5) tạo luôn mặt lạ cho số giúp em để khi hatch nó tự hiểu và không đè lên số với được không a? trân thành cảm ơn bác ketxu!

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ình thật không hiểu nối sau topic này

http://www.cadviet.c...showtopic=61454

Điều bạn k thể làm được là gì ?

 

Em hoàn toàn ko hiểu về ngôn ngữ viết lisp, dựa vào gợi ý và xem lisp các bác viết rồi chắp vá nhưng ko thành công.

Và sau khi mò mẫm ko được thì đến giai đoạn nản rồi bác ạ.

Em đành lên đây nhờ các bác dành chút thời gian viết vậy, nếu ko được thì chắc cũng ko mò mẫm nữa đâu.

Có lẽ bác sẽ mắng là "ăn sẵn, lợi dụng..." nhưng em xin nhận hết ạ. Em ko đam mê nên ko tiếp tục nghiên cứu đâu ạ.

Cảm ơn bác đã dành rất nhiều thời gian và sự nhiệt tình cho em.

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 Ketxu ơi giúp em sửa cái lisp hatch (HH5) tạo luôn mặt lạ cho số giúp em để khi hatch nó tự hiểu và không đè lên số với được không a? trân thành cảm ơn bác ketxu!

Bạn dùng textmask như bác Tuệ đã gợi ý ởi bài #21 chưa ? Hay bạn chưa đọc ?

Có thể ngó qua lisp này sau khi hatch :

http://www.cadviet.com/forum/index.php?showtopic=61201&view=findpost&p=186080

 

Em hoàn toàn ko hiểu về ngôn ngữ viết lisp, dựa vào gợi ý và xem lisp các bác viết rồi chắp vá nhưng ko thành công.

Và sau khi mò mẫm ko được thì đến giai đoạn nản rồi bác ạ.

Em đành lên đây nhờ các bác dành chút thời gian viết vậy, nếu ko được thì chắc cũng ko mò mẫm nữa đâu.

Có lẽ bác sẽ mắng là "ăn sẵn, lợi dụng..." nhưng em xin nhận hết ạ. Em ko đam mê nên ko tiếp tục nghiên cứu đâu ạ.

Cảm ơn bác đã dành rất nhiều thời gian và sự nhiệt tình cho em.

Đúng là không những không đam mê, bạn còn k nhiệt tình nữa.

Trong cái yêu cầu ở bên topic kia, mình viết cho bạn theo đúng tiêu chí "ăn sẵn.." rồi đó chứ, nhưng bạn cũng chỉ phán mỗi câu "Không dùng được..."

Mà cái chuyện muôn thuở ở Topic nào viết lisp theo yêu cầu người viết cũng phải nhắc người dùng là nhấn F2 đọc thông báo lỗi khi dùng mà post lên, lẽ nào bạn (các bạn) chưa một lần từng nghe qua ? Nhắc nhiều đến mức sự nhiệt tình của những người viết cũng rơi rụng, chán đế không buồn nhắc nữa, nên sản phẩm kết cục cũng không đi đến đầu đến đũa.

Mình cũng xuất thân từ người đi học mót, cũng bị các bác ở 4room mắng nhiều, nhưng cũng may được tí hứng thú nhẫn nhịn, người ta còn nói là người ta còn muốn mình tốt hơn. GIờ cũng mong mỗi câu hỏi ra đều có người mắng. Khi tập tọe được thì cũng nhiệt huyết giúp đỡ mọi người khi có 1 yêu cầu, dù mình chẳng có tí vốn liếng gì, thậm chí bỏ cả việc sếp giao, cặm cụi tìm kiếm, đêm ngủ cũng không ngon vì vắt óc nghĩ những vấn đề chẳng phải của mình. Nhiều người trên 4room cũng vậy. Vậy mà, đại đa số đều coi đây là nơi để gửi yêu cầu theo đúng nghĩa đen, không tự thân vận động, khiến các bác nhiệt huyết ngày 1 rời xa 4room..Thật đáng buồn.

 

Bạn không tiếp tục nghiên cứu cũng có lý của bạn, nhưng cái sự vụ Hatch này, thật đã có quá nhiều ví dụ, và nó chỉ là edit lại Chữ "A" thành chữ "B", rất rõ ràng, chứ k liên quan gì đến cấu trúc lệnh cả

  • 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

em có dùng lệnh Textmask trước khi hatch nhưng sao nó vẫn đè lên trữ? em biết anh đang bực mình nhưng quả thực em cũng đang sợ.

Bạn thử dùng lệnh textmask hoặc Lisp trong link mình gửi sau khi đã Hatch xem có được không ?

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

em dùng textmask sau đó chon Dim rồi dùng HH5 nhưng vẫn cứ hatch đè lên số, còn cái lisp bác gửi kia cũng vẫn vậy, hatch kín cả khung thì nó không đè lên số còn hatch theo cái lisp em gửi bao xung quanh 1 phần thì không được.

em có đoạn code này thì hatch được như vậy nhưng phải tạo khung bao sau đó mới hatch được hơi lâu hơn cái kia 1 chút:

(defun c:H5( / A B C)

(command "-osnap" "none")

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

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

(command "-boundary" A "")

(setq B (ssget "L"))

(command "offset" "0.8" B A "")

(setq C (ssget "L"))

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

(command "bhatch" "P" "ANSI31" "4" "0" A "")

(COMMAND "-LAYER" "N" "HATCH" "")(PRINC)

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

(command "erase" B "")

(command "erase" C "")(prompt "\nDA TAO HATCH XONG!")(princ)

(command "-osnap" "End,Mid,Int,Perp"))

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

- Quái nhỉ, những cái số bạn đang nói là Text, sao giờ lại lòi ra là chọn DIM ?

- Mình có nói là bạn dùng lệnh Textmask hoặc Lisp kia SAU khi bạn chạy lisp của bạn rồi, mà bạn vẫn lặp lại điệp khúc "sau khi dùng textmask...rồi dùng hh5 " ?

- Mình đã nhắc bạn cho code vào thẻ code chưa ? Nếu chưa từng thì giờ mình nhắc vậy, bạn vui lòng edit nhé :)

  • 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

Vậy là tất cả đều nhầm, do bạn post nhõn cái hình ảnh , cả mình và bác Tuệ đều nghĩ đó là text. Trên ảnh cũng k ai nghĩ nó là Dimension cả (k có mũi tên, extension line...) Bạn lại phải ngâm lại cái nội quy post file hình ảnh kèm File minh họa rồi :)

Cả lệnh Textmask và lisp mình gửi đều chỉ tác động đến lisp, đều có bước chọn Text, sử dụng đến bước này bạn phải hiểu là đã nhầm nhọt rồi chứ nhỉ... Haiza...Bạn vui lòng post DWG ver thấp để mọi người cùng xem

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

oh, tại em làm ở mảng cấp sổ nhà đất nên hình nhà và đất không có mũi tên, còn đường mới dùng tới mũi tên.

dạ đây là hình minh họa em gửi rất mong các anh giúp đỡ!

http://www.cadviet.com/upfiles/3/89068_banve.dwg

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

Em dùng code của bác Tue_NV và cho chỉnh lại một chút theo nhu cầu sử dụng của mình nhưng mà khi chỉnh có phần em không hiểu.

Xin bác Tue_NV và mọi người giải thích dùm em ý nghĩa của hai phần code lisp em bôi đen bên dưới.

 

(defun c:h1(/ p dt ans ten sc ang dt)

(setvar "cmdecho" 0)

(initget "B G K")

(setq ans (getkword "\n Chon kieu hatch < B/G/K > :"))

(initget "P S")

(setq ansp (getkword "\n Chon kieu pick diem hay chon doi tuong < P/S > :"))

(setq tl1 (getreal "\n Nhap ti le hatch: "))

(setq p nil dt t)

;(WHILE (or (not p) (not dt))

(if (= ans "B")

(progn

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

ten2 "ANSI32" sc2 (* tl1 10.0) ang 0.0)

(if (= ansp "P")

(progn

(while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))

(lh1 p ten sc ang)

(lh1 p ten2 sc2 ang)

)

)

(progn

(princ "\n Chon doi tuong can hatch :")

(while (setq dt (ssget) )

(lh dt ten sc ang)

(lh dt ten2 sc2 ang)

)

)

)

)

)

(if (= ans "G")

(progn

(setq ten "ANSI31" sc tl1 ang 0.0)

(if (= ansp "P")

(progn

(while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))

(lh1 p ten sc ang)

)

)

(progn

(princ "\n Chon doi tuong can hatch :")

(while (setq dt (ssget) )

(lh dt ten sc ang)

)

)

)

 

)

)

(if (= ans "K")

(progn

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

(if (= ansp "P")

(progn

(while (setq p (getpoint "\n Chon 1 diem trong vung can hatch :"))

(lh1 p ten sc ang)

)

)

(progn

(princ "\n Chon doi tuong can hatch :")

(while (setq dt (ssget) )

(lh dt ten sc ang)

)

)

)

)

)

;);WHILE

(princ)

)

;;;;;;;;

(defun lh1(p name tle goc)

(setvar "hpgaptol" 50.0)

(vl-cmdf "bhatch" "P" name tle goc p "")

)

;;;;;;;;;;

(defun lh(dt name tle goc)

(setvar "hpgaptol" 50.0)

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

)

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

Em dùng code của bác Tue_NV và cho chỉnh lại một chút theo nhu cầu sử dụng của mình nhưng mà khi chỉnh có phần em không hiểu.

Xin bác Tue_NV và mọi người giải thích dùm em ý nghĩa của hai phần code lisp em bôi đen bên dưới.

(defun lh1(p name tle goc)

(setvar "hpgaptol" 50.0)

(vl-cmdf "bhatch" "P" name tle goc p "")

)

;;;;;;;;;;

(defun lh(dt name tle goc)

(setvar "hpgaptol" 50.0)

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

)

Đây là 2 hàm tạo Hatch.

Hàm ở trên tạo Hatch theo: tên, tỉ lê, góc và 1 điểm bên trong đối tượng.

Hàm ở dưới tạo Hatch theo: tên, tỉ lê, góc và đối tượng.

(setvar "hpgaptol" 50.0) là đặt giá trị khoảng hở max của đối tượng (nếu nó không kín)

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

Ủa, vậy trong hàm này Lisp hiểu kí hiệu "lh1 và lh" là một biến hay là tên lệnh. Nếu là 1 biết thì mình không thấy nó được khai báo còn là một tên lệnh thì sao, đến cuối cùng mới định nghĩa nó mà phía bên trên mình đã thấy nó xuất hiện trong thân hàm rồi.

Chà, rối quá.

Không có căn bản về Lisp nên mót mấy món này mình có hỏi tào lao thì mấy bác đừng cười nha.

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

Ủa, vậy trong hàm này Lisp hiểu kí hiệu "lh1 và lh" là một biến hay là tên lệnh. Nếu là 1 biết thì mình không thấy nó được khai báo còn là một tên lệnh thì sao, đến cuối cùng mới định nghĩa nó mà phía bên trên mình đã thấy nó xuất hiện trong thân hàm rồi.

Chà, rối quá.

Không có căn bản về Lisp nên mót mấy món này mình có hỏi tào lao thì mấy bác đừng cười nha.

Nó là lệnh. 2 lệnh này đã được sử dụng trong hàm chính. Còn việc định nghĩa trước hay sau thì tuỳ quan điểm của người viết. Nếu viết nó riêng ra thì khi load file hàm này sẽ hiệu lực, còn viết nó trong hàm chính thì nó chỉ có hiệu lực khi hàm chính được gọi. Không có vấn đề gì rối ở đây cả, chỉ là do bạn chưa hiểu hết bản chất thôi. Cứ từ từ mà!

Thân thương!

  • Vote tăng 2
  • 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

Nó là lệnh. 2 lệnh này đã được sử dụng trong hàm chính. Còn việc định nghĩa trước hay sau thì tuỳ quan điểm của người viết. Nếu viết nó riêng ra thì khi load file hàm này sẽ hiệu lực, còn viết nó trong hàm chính thì nó chỉ có hiệu lực khi hàm chính được gọi. Không có vấn đề gì rối ở đây cả, chỉ là do bạn chưa hiểu hết bản chất thôi. Cứ từ từ mà!

Thân thương!

Lh1 và Lh là 2 hàm con

1./ Nếu viết nó riêng ra thì hàm con có hiệu lực khi bất kì hàm chính nào gọi nó,

 

2./ Còn nếu viết trực tiếp trong hàm chính :

Khi Load Main function có các Local Function viết trong Main function

Nếu trong hàm chính ta không giải phóng các hàm con (Local function) thì các hàm con vẫn sẽ có hiệu lực như Trường hợp 1 ở trên vậy.

Chỉ khi trong hàm chính viết hàm con và hàm chính giải phóng các hàm con thì lúc này hàm con mới không còn hiệu lực khi các Main function khác gọi đến nó

  • 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

Lh1 và Lh là 2 hàm con

1./ Nếu viết nó riêng ra thì hàm con có hiệu lực khi bất kì hàm chính nào gọi nó,

 

2./ Còn nếu viết trực tiếp trong hàm chính thì có lẽ bạn DVH đã nhầm lẫn.

Khi Load Main function có các Local Function viết trong Main function

Nếu trong hàm chính ta không giải phóng các hàm con (Local function) thì các hàm con vẫn sẽ có hiệu lực như Trường hợp 1 ở trên vậy.

Chỉ khi trong hàm chính viết hàm con và hàm chính giải phóng các hàm con thì lúc này hàm con mới không còn hiệu lực khi các Main function khác gọi đến nó

1). Đang ý kiến thì bác Tue_NV sửa lại, nên thôi. Nghĩa là: viết bên ngoài thì nó có hiệu lực bất cứ lúc nào được gọi.

2). Viết bên trong trong thì nó chỉ có ý nghĩa:

2a). Ban đầu nó vô nghĩa. Chỉ khi hàm chính được gọi ít nhất 1 lần thì nó mới có ý nghĩa.

2b). Sau khi được gọi 1 lần thì nó có hiệu lực.

2c). Nó mất hiệu lực khi được giải phóng (như là 1 tên biến trong hàm chính). Cách giải phóng hàm con như là 1 biến cũng gây ra lỗi???

Tôi đâu có nhầm nhỉ?

  • 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

Nó là lệnh. 2 lệnh này đã được sử dụng trong hàm chính. Còn việc định nghĩa trước hay sau thì tuỳ quan điểm của người viết. Nếu viết nó riêng ra thì khi load file hàm này sẽ hiệu lực, còn viết nó trong hàm chính thì nó chỉ có hiệu lực khi hàm chính được gọi. Không có vấn đề gì rối ở đây cả, chỉ là do bạn chưa hiểu hết bản chất thôi. Cứ từ từ mà!

Thân thương!

Sorry bạn!

Tue_NV có sự nhầm lẫn ở từ chỉ có hiệu lực của bạn.

Khi load mainfunction có các local function lồng trong nó (mà không giải phóng Local function) thì các Local function luôn có hiệu lực khi các Mainfunction khác gọi nó.

Có thể mình chưa hiểu hết ý của bạn. Sorry, sorry, quan trọng là hiểu cốt lõi vấn đề là như thế.

Tue_NV đã sửa lại bài viết trên của mình rồi

Thanks bạn

  • 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

... Haiza...Bạn vui lòng post DWG ver thấp để mọi người cùng xem

- anh Ketxu ơi, em không hiểu ý anh, em hiểu là gửi file CAD thấp nên em gửi để các anh giúp. quả thật là em hỏi nhiểu quá nên các anh nản nên không giúp được rồi?

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

Hehe hai bác Doan Van Ha va bác Tue_NV giải thích rõ ràng quá...

Đọc xong cái này giống như được đã thông tư tưởng zậy.

Giền cái món lập trình Lisp này rồi hehe...

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

mình có bản vẽ mặt đứng với mặt cắt trong đồ án, ông thầy bảo là phải có hatch vật liệu cho mặt đứng và mặt cắt, nhưng mà mình đã hacth bê tông ở mặt cắt ròi


còn mặt đứng thì toàn là kính với tường thì hacth thế nào ạ ? mọi ngừoi giúp em với ko thì e bị loại đồ án mất 


file bản vẽ của em đây, mọi ngừoi giúp e với 


 


https://drive.google.com/file/d/0B9t9Gjl8eMBpQWJLNWNlSEdBUms/edit?usp=sharing


em lập topic mà ko ai vào giúp em 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

Định mở mục mới nhưng viết ở đây luôn cho tiện kg biết đc kg.

Mình có một vài xử lý trên Hatch nhưng nó phức tạp quá khi Hatch dính chùm nhau.

Nhờ các bạn viết giúp mình đoạn lisp kiểm tra và tách những hatch "dính chùm" thành những hatch độc lập như file sau:

http://www.cadviet.com/upfiles/4/37170_vd4.dwg

Cám ơn các bạn

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

Định mở mục mới nhưng viết ở đây luôn cho tiện kg biết đc kg.

Mình có một vài xử lý trên Hatch nhưng nó phức tạp quá khi Hatch dính chùm nhau.

Nhờ các bạn viết giúp mình đoạn lisp kiểm tra và tách những hatch "dính chùm" thành những hatch độc lập như file sau:

http://www.cadviet.com/upfiles/4/37170_vd4.dwg

Cám ơn các bạn

Bạn chọn Hatch cần tách_ đánh Hatchedit_Tích vào Separate Hatches _ Ok là dc 

  • 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 bạn. Ý mình là trên bản vẽ có hàng ngàn hatch Lisp phải tìm ra để xử lý. Theo chỉ dẫn của bạn mình làm đc TH thông thường.

 

Cũng có loại hatch không biết hình thành kiểu gí mà kg làm vậy được bạn ạ.http://www.cadviet.com/upfiles/4/37170_vd4_1.dwg

Cái hatch đó còn kg tính đc diện tích, tách nó ra đc may ra, mình chưa làm đc TH này

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

×