Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
tienlong

nối đường 3dpolyline tự động

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

Doan Van Ha    2.677

Viết giùm cho bạn đây luôn! Lần sau y/c thì phải ghi rõ ràng trên CADViet, chứ đừng gói nó vào 1 file như thế là không nên.

Thân thương!

;Doan Van Ha - CADViet.com. 01/12/2011
;Noi cac block diem 3D thanh Polyline theo thu tu ten diem.
(defun c:HA (/ lst)
(vl-load-com)
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq lst (acet-ss-to-list (ssget (list (cons 0 "insert")))))
(setq lst (vl-sort lst '(lambda (x y) (<
(atoi (cdr (assoc 1 (entget (entnext x)))))
(atoi (cdr (assoc 1 (entget (entnext y)))))))))
(command "3dpoly")
(foreach x lst
 (command (cdr (assoc 10 (entget x)))))
(command "")
(setvar "osmode" oldos)
(command "undo" "e")
(princ))

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

Cảm ơn Bác nhiều nhé! khổ quá em mới lên lần đầu nên chưa biết mấy

một lần nữa cảm ơn bác nhé! em dùng thử rồi chạy tít lắm.

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
Doan Van Ha    2.677

Cảm ơn Bác nhiều nhé! khổ quá em mới lên lần đầu nên chưa biết mấy

một lần nữa cảm ơn bác nhé! em dùng thử rồi chạy tít lắm.

 

Cám ơn tới 2 lần mà không nhấn nỗi cái "Like this" ở góc phải à. Hì hì hì!

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    263

Viết giùm cho bạn đây luôn! Lần sau y/c thì phải ghi rõ ràng trên CADViet, chứ đừng gói nó vào 1 file như thế là không nên.

Thân thương!

;Doan Van Ha - CADViet.com. 01/12/2011
;Noi cac block diem 3D thanh Polyline theo thu tu ten diem.
(defun c:HA (/ lst)
(vl-load-com)
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq lst (acet-ss-to-list (ssget (list (cons 0 "insert")))))
(setq lst (vl-sort lst '(lambda (x y) (<
(atoi (cdr (assoc 1 (entget (entnext x)))))
(atoi (cdr (assoc 1 (entget (entnext y)))))))))
(command "3dpoly")
(foreach x lst
 (command (cdr (assoc 10 (entget x)))))
(command "")
(setvar "osmode" oldos)
(command "undo" "e")
(princ))

Chào Hà, rất may là bạn lấy giá trị của thuộc tính đầu trong block để sắp xếp thứ tự các ename của block. Nếu trường hợp giá trị cần so sánh để sắp xếp không rơi vào thuộc tính đầu "(assoc 1)" thì người dùng phải viết lại lisp thì cực lắm!

Hãy để người dùng thêm tuỳ chọn là thuộc tính nào cần lấy giá trị so sánh để sắp xếp thì nó mới trọn vẹn lisp này.

Ngoài ra khi đã sắp xếp được các ename trong lst rồi thì lọc tiếp để lấy tọa độ insert của block (assoc 10) cho vào 1 list (lst2), sau đó dùng hàm (ACET-PLINE-MAKE (list lst2)) thì lisp sẽ chạy nhanh hơn vì bỏ đươc các "command"!

Thân á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
Doan Van Ha    2.677

Chào Hà, rất may là bạn lấy giá trị của thuộc tính đầu trong block để sắp xếp thứ tự các ename của block. Nếu trường hợp giá trị cần so sánh để sắp xếp không rơi vào thuộc tính đầu "(assoc 1)" thì người dùng phải viết lại lisp thì cực lắm!

Hãy để người dùng thêm tuỳ chọn là thuộc tính nào cần lấy giá trị so sánh để sắp xếp thì nó mới trọn vẹn lisp này.

Ngoài ra khi đã sắp xếp được các ename trong lst rồi thì lọc tiếp để lấy tọa độ insert của block (assoc 10) cho vào 1 lisp (lst2), sau đó dùng hàm (ACET-PLINE-MAKE (list lst2)) thì lisp sẽ chạy nhanh hơn vì bỏ đươc các "command"!

Thân ái!

 

OK các góp ý. Thêm 1 dòng chọn thuộc tính sắp xếp cũng được vậy. Rất may là tôi đã có cái hình bên cạnh của tác giả để suy ra cái "rất may" của (assoc 1). Hì hì hì. Ngoài ra, do lấy lisp trong kho tài nguyên ra sửa nên làm biếng vậy mà!

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
DanKhaosat    14
  1. Mình có:          - Tập hợp các điểm POINT (x, y, z)
  • Đường chuẩn (Polyline, 3Dpolyline)
  1. Mình muốn nối các đường dạng 3dPoly theo chiều của đường chuẩn ở trên với điều kiện:
  • Nối các POINT (x, y, z) trên tập hợp
  • Các đường nối đều theo chiều đường chuẩn
  • Các đường này không cắt nhau
  • Các đường gần đường chuẩn nối liền tiếp theo đến các đường sau
  • Như file mình đính kèm

Rất mong các cao thủ giúp đỡ nhất là bạn Đoàn Văn Hà

Trân trong cảm ơn!

http://www.cadviet.com/upfiles/3/123341_ve_3dpoly_1.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
Doan Van Ha    2.677

Cám ơn bạn đã nhớ đến tôi, dù không chính xác lắm.

Riêng với y/c này thì tôi không thể giúp bạn được, vì bài toán này rắc rối quá. Hy vọng được giúp bạn 1 dịp khá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

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

Đăng nhập để thực hiện theo  

×