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ị

Cũng phải tìm cách nào để tính diện tích và xử lý tách nó ra chứ nhỉ. Mình thử "nắm" cạnh của nó ở chỗ trùng đỉnh kéo ra thì đc một hatch bình thường, tuy nhiên nó đã khác tọa độ chu vi và diện tích.

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ẫn dùng -HATCHEDIT, chọn recreate Boundary => polyline

explode polyline

hatch với các đối tượng đã explode (với HPSEPARATE=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

Kiểm tra DXF 71.

Cũng chưa chính xác lắm đâu bác. Đối với những Hatch tính đc DT thường thì nó =1.

Mình gặp TH Hatch ban đầu kg tính dc DT =0, dxf 71 =0. Nhưng khi nắm cạnh cái hatch này (vị trí trùng đỉnh) kéo ra nó sẽ tính đc diện tích nhưng code 71 vẫn =0

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ế thì lên đời tí:

(vlax-get-property (vlax-ename->vla-object (car (entsel))) 'AssociativeHatch)

:vlax-true nếu Associative

:vlax-false nếu non-Associative

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ế thì lên đời tí:

(vlax-get-property (vlax-ename->vla-object (car (entsel))) 'AssociativeHatch)

:vlax-true nếu Associative

:vlax-false nếu non-Associative

Vẫn vậy bác ơi. Cả 2 TH đều tra về vlax-false nhưng trong đó 1 cái có diện tích: http://www.cadviet.com/upfiles/4/37170_vd5_1.dwg

:vlax-false là trị kiểu gì vậy bác. Nếu muốn từ nó trả về  T hay nil thì làm sao

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ôi đang nói tới Associative hay không. Còn việc có S hay không thì bạn dùng của ndtnv ở bên kia mà kiểm tra. Bạn có thể gởi file mà kiểm tra nó tốn time lên xem thử.

  • 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

Trước đây mình ít phải đụng tới hatch, nay mới cần. Có 1 số hatch kg hiểu sao kg có diện tích, mình kg rõ nguyên nhân, mỗi lần đề cập tới có bạn lại nói đén non-Associative thì chịu, làm mình cứ nghĩ việc thiếu đg bao làm "mất" diện tích, thì ra kg phải như vậy. Cám ơn, do mình mất tập trung làm mất thời gian 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

Nếu DXF 97 = 0 thì chắc chắn là không có diện tích, Hatch có thể đươc tạo từ Boundary hở :)

Vẫn chưa đúng. Kiểm tra trên bản vẽ của TNM gởi lên: 2 hatch đều not_assoc và đều có dxf97=0 nhưng 1 em có S và 1 em khô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

DXF 73 không liên quan tới diện tích.

Kéo 1 node của hatch không có diện tích => DXF 73 = nil nhưng vẫn không có diện tích

  • 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

Lạ thật! Hatch "Solid" rõ ràng là ko tạo được từ Boundary hở nên DXF 73 = 1 và dĩ nhiên có DT (diện tích). Mà tạo Hatch bằng "ansi31"  từ Boundary hở thì DXF 73 = 0 và không có diện tích :wacko: .

Ko hiểu sao bản vẽ của TRUNGNGAMY lại có DXF 73 = 1 và không có DT ;  DXF 73 = 0 thì lại có DT. (DXF 97 = 0 chỉ cho biết là không có  đối tượng Boundary gốc)

Potay!

 
  • 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

Đã biết nguyên nhân có DT và không có DT khi Hatch "Solid" nhưng ko hiểu tại sao lại như thế :unsure: . Post bản vẽ các bạn tìm hiểu có cao kiến giải đáp dùm :D

http://www.cadviet.com/upfiles/4/127397_37170_vd5_2.dwg

  • 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

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

)

Bạn ơi: nếu mình muốn click vào một điểm trong vùng cần hatch rồi hatch chứ ko phải chọn vùng khép kín thì code như thế nào ?

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


×