Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp spline các điểm có tọa độ nhập từ .txt


  • Please log in to reply
22 replies to this topic

#1 phitrongtuyen

phitrongtuyen

    biết zoom

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

Đã gửi 07 May 2012 - 09:19 AM

mình đang cần vẽ spline tọa độ lấy từ 1 file txt.trong đó tọa độ mỗi điểm là một cột(như file dưới đây)
tìm nhiều trên diễn đàn mà không thấy bài nào giống mình cả.
bạn nào có lisp gửi cho m với.mình đang học năm cuối mới học lisp nên gà mờ quá

http://www.cadviet.c...24_thankhai.txt
  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 07 May 2012 - 10:23 AM

mình đang cần vẽ spline tọa độ lấy từ 1 file txt.trong đó tọa độ mỗi điểm là một cột(như file dưới đây)
tìm nhiều trên diễn đàn mà không thấy bài nào giống mình cả.
bạn nào có lisp gửi cho m với.mình đang học năm cuối mới học lisp nên gà mờ quá
http://www.cadviet.c...24_thankhai.txt

Đây bạn ơi!

;Doan Van Ha - CADViet.com - Ngay 7/5/2012
;Muc dich: Ve Spline tu cac diem lay tu file txt (moi diem la 1 cot, cac cot cach nhau boi 2 ky tu trang " ").
(defun C:HA(/ pr lst1 lst2 z lst)
(vl-load-com)
(setq pr (open (getfiled "Chon file de lay so lieu" "" "txt" 0) "r"))
(setq lst1 (cdr (LM:str->lst (read-line pr) " ")))
(setq lst2 (cdr (LM:str->lst (read-line pr) " ")))
(close pr)
(setq z 0)
(repeat (length lst1)
(setq lst (cons (list (atof (nth z lst1)) (atof (nth z lst2))) lst))
(setq z (1+ z)))
(Spline lst)
(princ))
(defun LM:str->lst (str del / pos) (if (setq pos (vl-string-search del str)) (cons (substr str 1 pos) (LM:str->lst (substr str (+ pos 1 (strlen del))) del)) (list str)))
(defun Spline (lst) (entmakex (append (list '(0 . "SPLINE") '(100 . "AcDbEntity") '(100 . "AcDbSpline") (cons 71 3) (cons 74 (length lst))) (mapcar (function (lambda (p) (cons 11 p))) lst))))

  • 2

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#3 phitrongtuyen

phitrongtuyen

    biết zoom

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

Đã gửi 07 May 2012 - 11:42 AM

cảm ơn bạn nhiều.cho mình hỏi thêm tí.có cách nào vẽ đường đường tròn qua điểm đấu va cuối của đường spline trên ko?mình cần vẽ bánh răng mà :)
thầy hướng dẫn bọn mình mình muốn vẽ trực tiếp hình dạng cái bánh răng bằng lisp được không bạn?mình thấy hơi khó vì phần trim những đoạn thừa làm trên lisp khó quá.bạn có cách gì giúp m với?
  • 0

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 07 May 2012 - 11:48 AM

cảm ơn bạn nhiều.cho mình hỏi thêm tí.có cách nào vẽ đường đường tròn qua điểm đấu va cuối của đường spline trên ko?mình cần vẽ bánh răng mà :)
thầy hướng dẫn bọn mình mình muốn vẽ trực tiếp hình dạng cái bánh răng bằng lisp được không bạn?mình thấy hơi khó vì phần trim những đoạn thừa làm trên lisp khó quá.bạn có cách gì giúp m với?

Đỏ: đường tròn thì phải đi qua 3 điểm chứ? Hay điểm đầu và cuối chính là 2 mút của đường kính? Nếu vậy thì OK.
Xanh: vẽ được (không cần trim đâu), nhưng bạn phải cho biết hình dạng và quy luật đó như thế nào?
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#5 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 07 May 2012 - 12:12 PM

cảm ơn bạn nhiều.cho mình hỏi thêm tí.có cách nào vẽ đường đường tròn qua điểm đấu va cuối của đường spline trên ko?mình cần vẽ bánh răng mà :)
thầy hướng dẫn bọn mình mình muốn vẽ trực tiếp hình dạng cái bánh răng bằng lisp được không bạn?mình thấy hơi khó vì phần trim những đoạn thừa làm trên lisp khó quá.bạn có cách gì giúp m với?

Hề hề hề,
Vẽ biên dạng răng bằng spline không phải là cách hay đâu bạn ạ. nên sử dụng pline sẽ tốt hơn vì khi dùng spline, nếu số diểm chia không đủ lớn thì Cad sẽ tự định dạng đường spline theo các bán kính cong của nó chứ không hẳn đã là cái bán kinh cong bạn cần. Hơn nữa sau khi vẽ nếu muốn chỉnh sửa spline thì sẽ rắc rối hơn thằng pline nhiều bạn ạ.
Nếu bạn có chút kiến thức về lisp thì có thể tham khảo ở đây để biết cách làm lisp theo yêu cầu về cái bánh răng của bạn.
http://www.cadviet.c...?showtopic=9238

Chúc bạn thành công.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#6 phitrongtuyen

phitrongtuyen

    biết zoom

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

Đã gửi 07 May 2012 - 01:49 PM

Đỏ: đường tròn thì phải đi qua 3 điểm chứ? Hay điểm đầu và cuối chính là 2 mút của đường kính? Nếu vậy thì OK. Xanh: vẽ được (không cần trim đâu), nhưng bạn phải cho biết hình dạng và quy luật đó như thế nào?

ý của em là 2 đường tròn đồng tâm (0,0) đi qua điểm đầu và điểm cuối.(chính là chân răng và đỉnh răng đó)
mà anh có lisp nào vẽ toàn bộ biên dạng răng không.các thông số miinhf nhập twf bàn phím
bài của em thầy yêu cầu xây dựng ma trận điểm .em dung matlab rồi.giờ chỉ còn hoàn thiện cái bánh răng nữa là ok mà
  • 0

#7 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 07 May 2012 - 02:07 PM

ý của em là 2 đường tròn đồng tâm (0,0) đi qua điểm đầu và điểm cuối.(chính là chân răng và đỉnh răng đó)
mà anh có lisp nào vẽ toàn bộ biên dạng răng không.các thông số miinhf nhập twf bàn phím
bài của em thầy yêu cầu xây dựng ma trận điểm .em dung matlab rồi.giờ chỉ còn hoàn thiện cái bánh răng nữa là ok mà

1). Vẽ đường tròn như bạn diễn tả: được.
2). Tôi là người ngoại đạo cơ khí nên bạn chỉ nói vậy thì tôi bó tay. Có 2 cách:
- Hoặc nhờ bác nào dân CK mà rành lisp viết giùm bạn (mách nhỏ: bác Phamthanhbinh ấy!).
- Bạn cho tôi biết quy luật vẽ bánh răng: hoặc thể hiện bằng 1 hàm số, hoặc thể hiện bằng 1 hình vẽ để biết cái gì cần nhập vào, đặng đưa vào lisp.
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#8 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 07 May 2012 - 02:49 PM

ý của em là 2 đường tròn đồng tâm (0,0) đi qua điểm đầu và điểm cuối.(chính là chân răng và đỉnh răng đó)
mà anh có lisp nào vẽ toàn bộ biên dạng răng không.các thông số miinhf nhập twf bàn phím
bài của em thầy yêu cầu xây dựng ma trận điểm .em dung matlab rồi.giờ chỉ còn hoàn thiện cái bánh răng nữa là ok mà

Hề hề hề,
Lisp vẽ biên dạng răng không phải không thể làm, nhưng răng của bạn là răng gì , răng voi hay răng ngựa chớ nói vậy có mà vẽ ra răng trâu à????
Các thông số nhập từ bàn phím của bạn là thông số chi vậy??? Nên nhớ mỗi loại răng lại có các thông số kich thước khác nhau chớ chả phải răng chi cũng rứa đâu hè...
Bạn đã có ma trận điểm ấy là những điểm gì vậy??? Bạn dùng matlab để được cái chi và cái nớ nó ra răng??? Không post lên thì ai biết nó mà mần.
Túm lại nếu bạn muốn có cái lisp làm việc gì thì bạn cần:
1/- Cung cấp bản vẽ (hay bản viết) thể hiện rõ những cái đầu vào bạn có
2/- Cung cấp bản vẽ thể hiện cái đầu ra bạn cần.
3/- Nếu có thể thì trình bày thêm những mục tiêu khác bạn muốn mà chưa cần.

Hề hề hề,
Trong topic mình gửi bạn đã có cái lisp vẽ cả cặp bánh răng xycloid của bác SSG. Bạn hãy đọc nó để hiểu rằng muốn có lisp như bạn muốn thì bạn cần cung cấp cho người viết lisp những gì bạn nhé.
Mình là dân cơ khí thất nhưng cũng không thể viết được lisp vẽ bánh răng như bác ĐoanVanHa nói nếu như chả biết ngô khoai sắn gì về cái bánh răng bạn cần.
Hề hề hề,
Nếu bạn muốn vẽ bánh răng thân khai thì bạn cũng cần cung cấp cái hàm biểu diễn toán học của đường thân khai mới xài được cái lisp của bác Hoành trong topic nói trên.
Bằng không thì chỉ còn cách vẽ theo kiểu dựng hình. Tuy chả khó nhưng cũng chả dễ bạn ạ.

Là người làm kỹ thuật bạn cần hiểu và thông cảm với những đồng nghiệp khi trình bày vấn đề kỹ thuật của mình bạn ạ. Đừng bắt người khác phải hiểu những gì chỉ mình bạn hiểu.
Hề hề hề,...
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#9 phitrongtuyen

phitrongtuyen

    biết zoom

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

Đã gửi 07 May 2012 - 04:51 PM

thôi vc còn lai có khi để em.
bac cho em hỏi?đường spline lúc nãy gán cho 1 biến rồi truy xuất điểm đầu điểm cuối của nó dc ko?bác sửa lại dùm em nhé:)
hề hề
  • 0

#10 quocvietmdf

quocvietmdf

    Chưa sử dụng CAD

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

Đã gửi 14 March 2013 - 10:03 PM

Anh (chị) giúp em với:

Em có 01 đoạn spline, đo với command: LEN thì spline này dài 100mm, em muốn xác định 01 điểm cách 1 trong 2 điểm gốc của spline đó một khoảng 60mm để dựng một đoạn thẳng qua điểm đó mà không biết làm thế nào cả. Cảm ơn anh (chị) rất nhiều.


  • 0

#11 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 15 March 2013 - 10:05 AM

thôi vc còn lai có khi để em.
bac cho em hỏi?đường spline lúc nãy gán cho 1 biến rồi truy xuất điểm đầu điểm cuối của nó dc ko?bác sửa lại dùm em nhésmile.png
hề hề

Can chi mà gán rồi truy trong khi vừa vẽ nó bằng các tọa độ xong?


  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#12 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 15 March 2013 - 10:09 AM

Anh (chị) giúp em với:

Em có 01 đoạn spline, đo với command: LEN thì spline này dài 100mm, em muốn xác định 01 điểm cách 1 trong 2 điểm gốc của spline đó một khoảng 60mm để dựng một đoạn thẳng qua điểm đó mà không biết làm thế nào cả. Cảm ơn anh (chị) rất nhiều.

 

(defun c:vvv ()
(setq duong (car (entsel "Chon doi tuong")))
(command "line" (vlax-curve-getStartPoint duong) (vlax-curve-getPointAtDist duong 60) "")
)

  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#13 quynt83

quynt83

    biết pan

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

Đã gửi 14 March 2014 - 10:09 AM

Đây bạn ơi!

;Doan Van Ha - CADViet.com - Ngay 7/5/2012
;Muc dich: Ve Spline tu cac diem lay tu file txt (moi diem la 1 cot, cac cot cach nhau boi 2 ky tu trang "  ").
(defun C:HA(/ pr lst1 lst2 z lst)
 (vl-load-com)
 (setq pr (open (getfiled "Chon file de lay so lieu" "" "txt" 0) "r"))
 (setq lst1 (cdr (LM:str->lst (read-line pr) "  ")))
 (setq lst2 (cdr (LM:str->lst (read-line pr) "  ")))
 (close pr)
 (setq z 0)
 (repeat (length lst1)
  (setq lst (cons (list (atof (nth z lst1)) (atof (nth z lst2))) lst))
  (setq z (1+ z)))
 (Spline lst)
 (princ))
(defun LM:str->lst (str del / pos) (if (setq pos (vl-string-search del str)) (cons (substr str 1 pos) (LM:str->lst (substr str (+ pos 1 (strlen del))) del)) (list str)))
(defun Spline (lst) (entmakex (append (list '(0 . "SPLINE") '(100 . "AcDbEntity") '(100 . "AcDbSpline") (cons 71 3) (cons 74 (length lst))) (mapcar (function (lambda (p) (cons 11 p))) lst))))

Chào anh Doan Van Ha, e có thử bài này của anh vào cad load file ha.lsp, roi dung lenh "ha" để load file txt như hướng dẫn của anh mà ko hiển thị gì, rất mong anh chỉ dẫn, cảm ơn anh nhiều


  • 0

#14 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 14 March 2014 - 10:13 AM

Chào anh Doan Van Ha, e có thử bài này của anh vào cad load file ha.lsp, roi dung lenh "ha" để load file txt như hướng dẫn của anh mà ko hiển thị gì, rất mong anh chỉ dẫn, cảm ơn anh nhiều

Bạn gởi file txt lên đây đi!


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#15 quynt83

quynt83

    biết pan

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

Đã gửi 14 March 2014 - 10:45 AM

File txt đây anh ạ


  • 0

#16 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 14 March 2014 - 10:46 AM

File txt đây anh ạ

???


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#17 quynt83

quynt83

    biết pan

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

Đã gửi 14 March 2014 - 10:49 AM

???

http://www.cadviet.c...128943_pr_2.txt


  • 0

#18 quynt83

quynt83

    biết pan

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

Đã gửi 14 March 2014 - 10:50 AM

mạng chán quá nên e gửi hơi khó, anh xem giúp ạ


  • 0

#19 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 14 March 2014 - 10:56 AM

Trong lisp đã ghi rõ là:

1). Mỗi điểm là 1 cột.

2). Các cột cách nhau bởi 2 ký tự trống.

Ngoài ra:

3). Số thập phân phải format là dấu chấm, không format dấu phẩy.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#20 quynt83

quynt83

    biết pan

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

Đã gửi 14 March 2014 - 11:01 AM

Vâng anh, e hiểu rồi ạ, cảm ơn anh nhiều,


  • 0