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  
phitrongtuyen

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

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

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

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

  • 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

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?

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

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?

  • 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

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.com/forum/index.php?showtopic=9238

 

Chúc bạn thành công.

  • 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
Đỏ: đườ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à

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

ý 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.

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

ý 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ề,...

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

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.

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

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?

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

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

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

 

Đâ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

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à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!

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

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.

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 mới tham gia diễn đàn và cũng mới biết về auto lisp, mình có một bài toán muốn nhờ các bạn trợ giúp đó là vẽ lên autocad đường spline tọa độ (x,y) lấy từ file text http://www.cadviet.com/upfiles/3/128947_thuy19_02.txt ở dạng cột một cột là x, một cột là y rất mong nhận được sự trợ giúp từ các bạ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

Đây bạn!


;Doan Van Ha - CADViet.com - Ngay 14/3/2014
;Muc dich: Ve Spline qua cac diem duoc ghi trong file txt (moi hang la 1 diem, cac so trong hang cach nhau boi 1 ky tu trong).
(defun C:HA2( / fn pr rl txt lst)
 (command "ucs" "w")
 (setq fn (getfiled "Chon file de lay so lieu" "" "txt" 8))
 (setq pr (open fn "r"))
 (while (setq rl (read-line pr))
  (setq txt (HA:str->lst rl " "))
  (setq lst (cons (list (car txt) (cadr txt)) lst)))
 (close pr)
 (setq xx lst)
 (Spline (reverse lst))
 (princ))
;----- String to List, EX: (HA:str->lst "1,2,3,4,5" ",") => (1 2 3 4 5)
(defun HA:str->lst ( str del / pos )
 (if (setq pos (vl-string-search del str))
  (cons (atof (substr str 1 pos)) (HA:str->lst (substr str (+ pos 1 (strlen del))) del)) 
  (list (atof str))))
;----- Ve Spline
(defun Spline (lst)
 (entmake (append (list '(0 . "SPLINE") '(100 . "AcDbEntity") '(100 . "AcDbSpline") (cons 71 3) (cons 74 (length lst))) (mapcar (function (lambda (p) (cons 11 p))) lst))))
 

  • 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

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  

×