Đến nội dung


Hình ảnh

Nối đường spline


  • Please log in to reply
9 replies to this topic

#1 tn20159

tn20159

    biết vẽ circle

  • Members
  • PipPip
  • 32 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 15 April 2009 - 03:21 PM

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.
  • 0

#2 tuannguyen314169

tuannguyen314169

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 297 Bài viết
Điểm đánh giá: 57 (tàm tạm)

Đã gửi 16 April 2009 - 10:51 PM

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.
  • 0

#3 tdvn

tdvn

    biết lệnh rotate

  • Members
  • PipPipPip
  • 134 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 17 April 2009 - 12:58 AM

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é.
  • 0

#4 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 09 May 2009 - 04:07 PM

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)
)

  • 0

#5 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 09 May 2009 - 04:22 PM

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)
)



  • 2

#6 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 10 May 2009 - 08:05 AM

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:
  • 1

#7 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 10 May 2009 - 11:59 AM

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?
  • 0

#8 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 10 May 2009 - 01:08 PM

À 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.
  • 0

#9 tn20159

tn20159

    biết vẽ circle

  • Members
  • PipPip
  • 32 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 10 May 2009 - 03:00 PM

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.
  • 0

#10 bruce_lee6891

bruce_lee6891

    biết pan

  • Members
  • Pip
  • 5 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 26 June 2009 - 09:51 AM

Mình cũng đang bí về vấn đề nối spl thành 1 đường duy1 đây.Cad mình dùng :s_big:
làm sao bi h???????????????????????
  • 0