Chuyển đến nội dung
Diễn đàn CADViet
tuvanthietke.hcm

cắt đoạn thẳng tại chỗ giao nhau

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

Thân gởi các Lisper đang tham gia chủ đề và các bạn khác!

Đây là một bài toán thực tế, nhằm ký hiệu để người đọc hiểu được đường nào nằm trên/dưới đường khác, và xác định tính liên tục khi chúng giao nhau để tránh hiểu nhầm đường này qua đường kia.

Vì chỉ là ký hiệu nên người vẽ có quyền vẽ theo các kiểu khác nhau. Đồng nghiệp của tôi cũng hay vẽ bài toán này, và cũng vẽ ngẫu hứng tùy người. Tôi kiến nghị một cách mà họ hay dùng (và dễ nhìn) là thế này:

- Thông thường, họ vẽ theo một bán kính xác định, nhìn vừa mắt, ta đặt tên là Rmax.

- Khi khoảng cách 2 giao điểm liền kề (gọi là D) nhỏ hơn 2*Rmax thì họ giảm dần bán kính đến giá trị nhỏ nhất (có thể nhìn rõ khi in ra), ta đặt tên là Rmin.

- Khi khoảng cách nhỏ hơn nữa (D<2*Rmin) thì họ vẽ các Arc theo Rmin liền nhau.

Nếu đi theo hướng này sẽ đỡ ngứa con mắt bên phải đỏ con mắt bên trái hơn.

67029_ve_duong_cap.png

  • 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

Lưu ý là không dùng để làm việc nhé vì các lý do sau:

  • cái này chỉ code ra để test thôi
  • dùng nhiều event và các hàm phức tạp nhưng ko bẫy lỗi -> có thể crash AutoCAD bất cứ lúc nào
  • Cái này viết bằng .NET, lisp chắc ko viết được do 1 số API ko support cho lisp. Bạn nào có hứng thú thì cùng thảo luận

83237_cv_1.gif

 

Here we go: http://www.mediafire.com/download/r9ufg9x1a85gmad/CADViet.zip 
Viết code và test trên CAD 2015 (Cad14 và 16 có thể chạy được) - load vào CAD bằng lệnh NETLOAD - Lệnh là : DOIT

  • 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

Mới dòm Video thấy cái này có 1 tính năng rất hay là khi Move các đối tượng thì các Arc biến đổi theo. Bạn nên phát triển để sử dụng sẽ có rất nhiều người cầ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

Mới dòm Video thấy cái này có 1 tính năng rất hay là khi Move các đối tượng thì các Arc biến đổi theo. Bạn nên phát triển để sử dụng sẽ có rất nhiều người cần.

cái phần đó dùng 1 cái event (reactor) để update nhưng trong lúc update nó lại gọi lại chính nó 1 lần nữa -> có thể gây ra lỗi tiềm ẩn nhưng mình ko có time để tìm nguyên nhân nên khuyến cáo cho chắc.

  • 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

Bạn quocmanh04tt cứ tiếp tục đi, cái NET chỉ để test thôi, ko có xài dc với lại nó bị giới hạn thời gian test trong đó nữa -> cái này chắc một số reverser tò mò, trong đó có 1 cái trick nhỏ mới nghĩ ra :D

  • 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ưu ý là không dùng để làm việc nhé vì các lý do sau:

  • cái này chỉ code ra để test thôi
  • dùng nhiều event và các hàm phức tạp nhưng ko bẫy lỗi -> có thể crash AutoCAD bất cứ lúc nào
  • Cái này viết bằng .NET, lisp chắc ko viết được do 1 số API ko support cho lisp. Bạn nào có hứng thú thì cùng thảo luận

83237_cv_1.gif

 

Here we go: http://www.mediafire.com/download/r9ufg9x1a85gmad/CADViet.zip 

Viết code và test trên CAD 2015 (Cad14 và 16 có thể chạy được) - load vào CAD bằng lệnh NETLOAD - Lệnh là : DOIT

Qúa dữ luôn. Từ khi detailing gợi ý addvertex, Thiệp đã theo hướng này, cộng thêm lisp remove vertex sưu tầm của Thaistreet, Thiệp đã ra được lisp giống của Quocmanh chỉ khác về cung tròn ARC và hướng khi setbulge - hoặc +. Rồi đọc commend của Doan Van Ha, Thiep xử lý tiếp trường hợp các bó *LINE có trước nằm sát nhau thì BÍ, chưa biết thuật toán nào để làm được. Nếu xử lý được thì có thể giống như clip trên.

@quocmanh

lisp của bạn khai báo biến chưa đầy đủ, hoặc bạn để toàn cục với tên biến đơn giản nên khi dùng lisp của Quocmạnh xong rồi dùng lisp cuả Thiep thì các đối tượng đã sử lý qua lisp của quocmanh lại tiếp tục "nhảy múa" tiếp, mặc dù Thiep không đụng đến. Chưa biết lỗi gì.

  • 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

@thiep: Lisp của mình cũng add, remove Vertex. Ngoài ra, lisp của mình còn add thêm Xdata để dùng cho lệnh EDR, lệnh EDR này chỉ edit các ARC của lệnh CCL tạo ra, các ARC khác không quan tâm. Trong lisp chỉ để lại biến bán kính (#bankinh#).

  • 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

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


×