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  
hakhoailang

[ hỏi ] cách nối đường 3D để có 1 đường 3d kín

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

hakhoailang    2

e có 2 đường 3D song song với nhau . và để tạo 1 3D kín e đã dùng lệnh 3P ( bắt điểm chính xác) để vẽ 2 cái PL 3D mới chặn ngay 2 đầu hở của 2 cái 3D cũ song song đấy .

sau đó dùng lệnh F để đóng kín như trong 2D nhưng ko dc .

các bác cho e giải pháp để chiến đấu cái vướng mắc này tí .

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
Hoan1111    694

e có 2 đường 3D song song với nhau . và để tạo 1 3D kín e đã dùng lệnh 3P ( bắt điểm chính xác) để vẽ 2 cái PL 3D mới chặn ngay 2 đầu hở của 2 cái 3D cũ song song đấy .

sau đó dùng lệnh F để đóng kín như trong 2D nhưng ko dc .

các bác cho e giải pháp để chiến đấu cái vướng mắc này tí .

Đóng kín được tốt sao lại không ??? Bác em thử gửi file hình vẽ lên xem "2 đường 3D song song với nhau" kiểu gì???

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
Hoan1111    694

Tại 2 đầu mà bác em nối cạnh mầu trắng hai đoạn mầu đỏ không // với nhau nó chéo nhau nên không thể Fillet được!

Có thể dễ dàng kiểm tra bằng cách vẽ một đoạn thẳng và cách đường mầu trắng một đoạn rồi dùng lệnh trim cắt >>> Sau đó copy đoạn nọ sang đoạn kia sẽ thấy là chúng chéo nhau:

114276_sdggw387_1.png

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
Hoan1111    694

có cách nào để nó nối lại dc ko bác nhỉ . để nó là 1 PL kín

Sử dụng lệnh 3DPOLY vẽ thủ công lại tất cả là đượ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
hakhoailang    2

có nhiều cái thủ công ko thể dc ấy chứ có khoảng nghìn điểm sao picsk hết . với lại cao độ chắc gì đã chuẩn . híc

 

bác DOAN VAN HA có thể giúp e cái lisp dc ko

thank bá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
Doan Van Ha    2.676

Đây là cái lisp của "người ta", dùng để nối các 3D Line thành 3D Polyline. Tôi đã test thử trên bản vẽ của bạn, thấy OK, nhưng lâu thì khỏi nói, vì polyline của bạn vô vàn điểm!

Cách dùng:

1). Vẽ 2 LINE nối 2 đầu của cặp POLYLINE.

2). EXPLODE 2 POLYLINE ra thành 1 mớ LINE.

3). Load và dùng lisp: chọn tất cả đối tượng gồm: 2 line + đống line do explode sinh ra => pha cà phê nhâm nhi ít phút => có 1 POLYLINE liền nhau.

;; Routine to convert 3d lines to as few as possable 3d polylines
;;  CAB 12/23/03
;;
;;   Collect all lines into a selection set
;;   Create a list of end points
;;   Walk through end points and find matches
;;   Create a list of points then make into plines
;;
(defun c:3dp (/ sslines lc ssl lep en end end1 end2 ptr 3dll pt)

 (if (setq sslines (ssget '((0 . "LINE"))))
   (prompt "\nWorking, Please Wait.")
   (progn
     (prompt "\nNo Lines Found.    ")
     (exit)
   )
 )
 (setq usercmd (getvar "CMDECHO"))
 (setvar "CMDECHO" 0)
 (setq useros (getvar "osmode"))
 (setvar "osmode" 0)
 (setq lc    0
ssl   (sslength sslines)
lep   (list)
3dcnt 0 ; # of 3d lines
fuzz  0 ; change as needed
 )
 (prompt (strcat "\n" (rtos (/ ssl 2) 2 0) " lines found."))
 (command "undo" "begin")
 (while (< lc ssl) ; make a list of line end points
   (setq en  (entget (ssname sslines lc))
lep (cons (cdr (assoc 11 en)) lep)
lep (cons (cdr (assoc 10 en)) lep)
lc  (1+ lc)
   ) ; inc pointer
 ) ; end while

 (while lep
   ;; lep is a collection of line end points
   (setq end1 (car lep) ; get one end
end2 (cadr lep) ; get the other end
lep  (cddr lep) ; remove that line from list
3dll (list)
3dll (cons end2 3dll)
3dll (cons end1 3dll); 3dll is the first segment of 3d poly line
ptr  0 ; pointer
   )
   ;;  
   (while (<= (1+ ptr) (length lep))
     (setq end (nth ptr lep)) ; get a line end point from list
     (cond
((equal end end1 fuzz) ; found a matching point
(if (/= (/ ptr 2.0) (fix (/ ptr 2.0))) ; end of line
 ;; get pevious point
 (setq 3dll (cons (nth (1- ptr) lep) 3dll); add to begining of 3dll
end1 (car 3dll)
lep  (remove_pt (1- ptr) ptr)
 ) ; remove the end points from the list
 ;; else begining of line
 ;; get next point
 (setq 3dll (cons (nth (1+ ptr) lep) 3dll)
end1 (car 3dll)
lep  (remove_pt ptr (1+ ptr))
 ) ; remove the end points from the list
) ; endif
(setq ptr 0) ; reset pointer
) ; end cond 1

((equal end end2 fuzz)
(if (/= (/ ptr 2.0) (fix (/ ptr 2.0))) ; end of line
 ;; get pevious point
 (setq 3dll (append 3dll (list (nth (1- ptr) lep))); add to end of 3dll
end2 (nth (1- ptr) lep)
lep  (remove_pt (1- ptr) ptr)
 )
 ;; else begining of line
 ;; get next point
 (setq 3dll (append 3dll (list (nth (1+ ptr) lep)))
end2 (nth (1+ ptr) lep)
lep  (remove_pt ptr (1+ ptr))
 )
) ; endif
(setq ptr 0) ; reset pointer
) ; end cond 2
(t
(setq ptr (1+ ptr)) ; inc pointer
)
     ) ; end cond stmt
   ) ; end while
;;;=====================================================
;;;  Draw 3d poly here using points collected in 3dll
;;;=====================================================
   (if 3dll
     (progn
(command "3dpoly")
(foreach pt 3dll
(command pt)
)
(command "")
(setq 3dcnt (1+ 3dcnt))
     )
   ); endif
 ) ; end while
 (command "_erase" sslines "")
 (command "undo" "end")
 (prompt (strcat "\n" (rtos 3dcnt 2 0) " 3dPoly lines created."))
 (prompt "\nProcess complete.\n")
 (setvar "osmode" useros)
 (setvar "CMDECHO" usercmd)
) ; end defun main

(defun remove_pt (first sec / cnt llen newlist)
 (setq cnt 0
llen (length lep)
newlist (list)
 )
 (while (< cnt llen)
   (if (and (/= cnt first) (/= cnt sec))
     (setq newlist (cons (nth cnt lep) newlist))
   )
   (setq cnt (1+ cnt))
 ); end while
 (reverse newlist)
); end defun

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

cảm ơn bác khi x ra công nhận là có nghìn điểm híc . cũng may là e timdc hướng giải quyết . ko phải EXPLODE nó ra mà rất nhanh . Dùng chính công cụ đẻ nó ra . nối 2 đường chặn nó lại bá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
Hoan1111    694

có nhiều cái thủ công ko thể dc ấy chứ có khoảng nghìn điểm sao picsk hết . với lại cao độ chắc gì đã chuẩn . híc

 

bác DOAN VAN HA có thể giúp e cái lisp dc ko

thank bác

:D :D :D :D

Đúng là như vậy! Nhưng ở trường hợp khác cơ!

"e có 2 đường 3D song song với nhau . và để tạo 1 3D kín e đã dùng lệnh 3P ( bắt điểm chính xác) để vẽ 2 cái PL 3D mới chặn ngay 2 đầu hở của 2 cái 3D cũ song song đấy ."

Khi em Hoằn kiểm tra

thì nó lại chéo nhau chứ quyết không chịu song song mới gọi là ...thẳng mực tầu đau...thân gỗ mới gọi là buồn cưới (cờ ươi cươi sắc cưới) bác 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
hakhoailang    2

em dùng cái pm mà e vẽ ra cái đó . ko cần X ra cũng chẳng cần điều kiện . đánh lệnh nối pl 3d chọn pl các pl đó là nối vo tư . nhẹ nhà như mây .chắc đây là công cụ của cái pm mà em dùng để thiết kế . e nghĩ đây là 1 đoạn mã gì đó của pm để xử lý những trường hợp thế này . đây e gửi các bác cái file mà e ko hề phải x nó ra .

mất 1s để đánh lệnh 1s để nối 1 s để đóng kín pl nếu cần thiết e làm video cho các bác xem .http://www.cadviet.com/upfiles/3/71598_3d_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

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  

×