Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
tn20159

Nối đường spline

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

Nhờ các Bác trên diễn đàn giúp cho làm cách nào để nối các đường spline mà vẫn giữ nguyên thuộc tính của chúng. Ví dụ:

1.Comman spline. first point (Xa,Ya,Za); next point (Xb,Yb,Zb)...... End poit(Xe,Ye,Ze).

2.Comman spline. first point (Xe,Ye,Ze); next point (Xbb,Ybb,Zbb)...... End poit(Xee,Yee,Zee).

3....

Nối 2 hoặc nhiều đường spline thành 1 đường duy nhấ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
Nhờ các Bác trên diễn đàn giúp cho làm cách nào để nối các đường spline mà vẫn giữ nguyên thuộc tính của chúng. Ví dụ:

1.Comman spline. first point (Xa,Ya,Za); next point (Xb,Yb,Zb)...... End poit(Xe,Ye,Ze).

2.Comman spline. first point (Xe,Ye,Ze); next point (Xbb,Ybb,Zbb)...... End poit(Xee,Yee,Zee).

3....

Nối 2 hoặc nhiều đường spline thành 1 đường duy nhất.

Nối đường spline là việc làm khó, tôi đã đọc trên diễn đàn nhiều bài viết nhưng chưa làm được, chỉ có một số bài viết nói về chuyển spline sang pline sau đó nối các pline. Theo tôi bác nên nối spline theo cách thủ công trước đã sau đó chắc các bác trên diễn đàn sẽ có cáh giải quyết. Chúc bác thành cô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
Nhờ các Bác trên diễn ðàn giúp cho làm cách nào ðể nối các ðýờng spline mà vẫn giữ nguyên thuộc tính của chúng. Ví dụ:

1.Comman spline. first point (Xa,Ya,Za); next point (Xb,Yb,Zb)...... End poit(Xe,Ye,Ze).

2.Comman spline. first point (Xe,Ye,Ze); next point (Xbb,Ybb,Zbb)...... End poit(Xee,Yee,Zee).

3....

Nối 2 hoặc nhiều ðýờng spline thành 1 ðýờng duy nhất.

Mình thấy trên diễn ðàn này cũng ðã ðề cập ðến vấn ðề nối các spline rồi, nói chung cách giải quyết hiện nay là ðổi spline thành pline sau ðó nối lại. Mình nghĩ tại sao các bạn không lấy lại tọa ðộ nguyên thủy của spline, kiểm tra tại vị trí ðầu và cuối xem có spline nào gần nó với khoảng cách cho phép không, nếu có thì lấy tọa ðộ nguyên thủy của chúng mà nối lại. Quá trình này cứ lặp lại cho ðến khi không còn tìm thấy trýờng hợp nào nữa thì dừng. Tuy nhiên, do mình chýa nghiên cứu kỹ spline nên mình không rõ cách lấy lại tọa ðộ nguyên thủy (hay tọa ðộ tạo nên cái spline) mà không xảy ra sai sót. Mình thấy cái hàm (entget) cho ra một lốc số liệu. Không rõ có phải mã dxf 11 có phải là tọa ðộ cần thiết ðể vẽ cái spline không. Nếu có bạn nào ðã nghiên cứu kỹ cái spline thì góp ý thêm nhé.

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ấy trên diễn ðàn này cũng ðã ðề cập ðến vấn ðề nối các spline rồi, nói chung cách giải quyết hiện nay là ðổi spline thành pline sau ðó nối lại. Mình nghĩ tại sao các bạn không lấy lại tọa ðộ nguyên thủy của spline, kiểm tra tại vị trí ðầu và cuối xem có spline nào gần nó với khoảng cách cho phép không, nếu có thì lấy tọa ðộ nguyên thủy của chúng mà nối lại. Quá trình này cứ lặp lại cho ðến khi không còn tìm thấy trýờng hợp nào nữa thì dừng. Tuy nhiên, do mình chýa nghiên cứu kỹ spline nên mình không rõ cách lấy lại tọa ðộ nguyên thủy (hay tọa ðộ tạo nên cái spline) mà không xảy ra sai sót. Mình thấy cái hàm (entget) cho ra một lốc số liệu. Không rõ có phải mã dxf 11 có phải là tọa ðộ cần thiết ðể vẽ cái spline không. Nếu có bạn nào ðã nghiên cứu kỹ cái spline thì góp ý thêm nhé.

 

Mình mới viết cái ct này để nối spline, tuy nhiên minh chỉ nối 2 spline thôi và điểm đầu của cái thứ 2 phải gần điểm cuối của cái thứ 1 thì nối đc. Thật ra ct này chẳng qua là lấy các điểm của 2 spline rồi vẽ lại thôi.

 

(vl-load-com)
(defun safelist->list(l / l1 l2 n)
 (setq l2 nil
       n -1)
 (while (< n (1- (length l)))
   (setq l1 nil)
   (repeat 3 (setq l1 (cons (nth (setq n (1+ n)) l) l1)))
   (setq l2 (cons (reverse l1) l2)))
 (reverse l2)
)

(defun c:nspl()
 (setq os (getvar "osmode"))
 (setvar "osmode" 0)
 (setq a (vlax-ename->vla-object (car (entsel "\nChon spline 1:")))
     b (vlax-ename->vla-object (car (entsel "\nChon spline 2:")))
     a1 (vlax-safearray->list (vlax-variant-value (vla-get-FitPoints a)))
     b1 (vlax-safearray->list (vlax-variant-value (vla-get-FitPoints :mellow:))
     c0 (safelist->list (append a1 b1)))
 (command "spline")  
 (mapcar '(lambda(p) (command p)) c0)	
 (command "" "" "")
 (setvar "osmode" os)
)

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

Không hiểu có đụng gì với bb code hay sao mà code của mình bị chèn thêm mấy cái :mellow: . mình phải chép lại :

 

(vl-load-com)
(defun safelist->list(l / l1 l2 n)
 (setq l2 nil
       n -1)
 (while (< n (1- (length l)))
   (setq l1 nil)
   (repeat 3 (setq l1 (cons (nth (setq n (1+ n)) l) l1)))
   (setq l2 (cons (reverse l1) l2)))
 (reverse l2)
)

(defun c:nspl()
 (setq os (getvar "osmode"))
 (setvar "osmode" 0)
 (setq a0 (vlax-ename->vla-object (car (entsel "\nChon spline 1:")))
       b0 (vlax-ename->vla-object (car (entsel "\nChon spline 2:")))
       a1 (vlax-safearray->list (vlax-variant-value (vla-get-FitPoints a0)))
       b1 (vlax-safearray->list (vlax-variant-value (vla-get-FitPoints b0)))
       c0 (safelist->list (append a1 b1)))
 (command "spline")  
 (mapcar '(lambda(p) (command p)) c0)	
 (command "" "" "")
 (setvar "osmode" os)
)


  • 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

Chời ơi. Các đường Spline vẫn nối với nhau được bằng lệnh J (join) mà các bác :mellow: . Chỉ Pline nối với Spline thì mới cần đến lisp hoặc lệnh Flatten để chuyển Spline thành Pline thôi các bác ạ. Hồi xưa em cũng loay hoay, hoá ra lệnh J nó cũng hay phết :mellow:

  • 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
Chời ơi. Các đường Spline vẫn nối với nhau được bằng lệnh J (join) mà các bác :mellow: . Chỉ Pline nối với Spline thì mới cần đến lisp hoặc lệnh Flatten để chuyển Spline thành Pline thôi các bác ạ. Hồi xưa em cũng loay hoay, hoá ra lệnh J nó cũng hay phết :mellow:

À ra thế , mình ko biết, hoá ra công cốc chăng?? Nhưng mình xài cad 2005 đánh lệnh join chẳng epphê gì cả nghĩa là 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
À ra thế , mình ko biết, hoá ra công cốc chăng?? Nhưng mình xài cad 2005 đánh lệnh join chẳng epphê gì cả nghĩa là sao?

 

Mình hiểu rồi, phải tới cad 2008 mới có lệnh join.

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
Chời ơi. Các đường Spline vẫn nối với nhau được bằng lệnh J (join) mà các bác :mellow: . Chỉ Pline nối với Spline thì mới cần đến lisp hoặc lệnh Flatten để chuyển Spline thành Pline thôi các bác ạ. Hồi xưa em cũng loay hoay, hoá ra lệnh J nó cũng hay phết :mellow:

Cảm ơn Bác nataca và tuannguyen314169 rất nhiều, vì có những điều đơn giản nhưng không tìm thấy thì sẽ thành khó khă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

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  

×