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

Tính thể tích, trọng tâm, momen

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

ssg    1.088
Rất cảm ơn vì bạn đã giúp mình rất nhiệt tình. Bạn cứ yên tâm hướng dẫn vì mình có đọc tài liệu và hỏi các bạn chuyên về autocard một số lệnh như union, subtract,intersect dùng để cộng ,trừ và giao các solid hoặc lệnh Draw>Modeling>Loft để tạo các solid bằng cách nối các biên dạng theo đường cong (guides) theo đường dẫn (path) hoặc vào Loft settings để nối các biên dạng lại với nhau như: Reuled,smooth, normal,draft angel nhưng mình không chắc chắn lắm. Kiến thức và thời gian mình có hạn mà công việc thì quá nhiều vì vậy bạn thông cảm giúp mình cụ thể để mình hiểu và làm được vấn đề trên (tính V1-1c).

Đó chỉ là một trong những hình đơn giản để mình làm được những hình phức tạp hơn và sai số không quá 0,5% so với yêu cầu tính toán.

Số điện thoại bàn, di động của mình là (068.824257-0919650499) và bạn có thể cho mình số điện thoại bàn và di động để mình dễ liên lạch hơn

Chúc bạn thành công. Mong bạn sớm trả lời.

Xin trả lời bạn một số ý:

 

1- Mục đích của diễn đàn là để nhiều người cùng tham gia thảo luận và học hỏi lẫn nhau. Theo ssg, nếu không cần thiết lắm, mọi vấn đề chuyên môn bạn cứ nêu lên diễn đàn. Nếu có vấn đề gì không tiện nêu công khai, bạn có thể liên lạc với ssg qua email: maickkha@yahoo.com.vn

 

2- Các hình khối tương tự như của bạn, dùng lệnh loft là hợp lý. Bạn có thể vào Help để thấy các điều kiện sử dụng:

 

loft_hep.jpg

 

Cụ thể, 2 cross section của bạn không bảo đảm yêu cầu (gồm line + spline). Mình đã chuyển cái spline thành pline bằng lisp. Sau đó joint với các line còn lại thành 1 pline duy nhất -> bảo đảm điều kiện của loft. Nếu phức tạp hơn, có thể tạo solid từng phần rồi dùng các lệnh union, subtract, intersect để xử lý.

 

3- Lisp convert spline -> pline mình đã post ở đâu đó rồi. Tìm lại cũng... mệt, post lại ở đây:

;;;***********************************************************
;;;CONVERT TO PLINES PROGRAM WITH FULL COMMENTS!
;;;Convert all objects: Line, Pline, Spline, Arc, Circle, Ellipse_
;;;to Plines. Length of 1 segment is specified by user
;;;Copy & Paste to Notepad, Saveas *.lsp, Appload then Type C2P to run
;;;Happy New Year 2008!
;;;Written by ssg - January 2008 - www.cadviet.com 
;;;***********************************************************

;;;-------------------------------------------------------------
(defun makepl ( e d1 / ps pe d d2 p2) ;;;Make pline along curve e. Length of 1 segment = d1
(vl-load-com) ;;;Load Visual LISP extensions before use vlax-xxxx functions
(setq
   ps (vlax-curve-getStartPoint e) ;;;Start point
   pe (vlax-curve-getEndPoint e) ;;;End point
   d (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)) ;;;Length of curve e
   d2 d1 ;;;Init variable distance
)
(command "pline") ;;;Call pline command
(command ps) ;;;Start point
(while (<= d2 d) ;;;While not over end point pe
   (setq p2 (vlax-curve-getPointAtDist e d2)) ;;;Variable point at d2 = length along curve
   (command p2) ;;;Continue pline command from current point to p2
   (setq d2 (+ d2 d1)) ;;;Increase distance d2 by d1
) ;;;End while
(command pe "") ;;;Pline to pe and finish command
)
;;;-------------------------------------------------------------
(defun C:C2P( / d1 ss oldos i e ans) ;;;Convert to Plines
(if (not d0) (setq d0 0.5)) ;;;Init dividual distance, global variable
(setq d1 (getreal (strcat "\nLength of 1 segment <" (rtos d0) ">:"))) ;;;Input distance
(if d1 (setq d0 d1) (setq d1 d0)) ;;;Reset or get distance
(setq
   ss (ssget '((0 . "LINE,LWPOLYLINE,SPLINE,ARC,CIRCLE,ELLIPSE"))) ;;;Selection set
   oldos (getvar "osmode") ;;;Save osmode
   i 0 ;;;Init counter
)
(setvar "osmode" 0) ;;;Disable osmode
(repeat (sslength ss) ;;;Repeat for all entities in ss
   (setq e (ssname ss i)) ;;;Set e for entity with ordinal i in selection set ss
   (makepl e d1) ;;;Use makepl function. Make pline along e
   (setq i (1+ i)) ;;;Increase counter
)
(initget "Y N") ;;;Init keywords
(setq ans (getkword "\nDelete source objects? [Yes/No] :")) ;;;Get answer from user
(if (= ans "Y") (command "erase" ss "")) ;;;Erase source objects if ans = "y" or "Y"
(setvar "osmode" oldos) ;;;Reset osmode
(princ) ;;;Silent quit
)
;;;-------------------------------------------------------------

 

4- Khả năng 3D của AutoCAD có hạn, bạn có nhu cầu làm việc nhiều với 3D phức tạp thì nên nghiên cứu các phần mềm chuyên 3D: SolidWorks, Inventor, Rhino... Hoặc cao cấp hơn (và có nhu cầu đối với phần gia công - CAM) thì: MasterCAM, Pro/E, Catia...

Bản thân ssg cũng rất ngại khi phải làm việc nhiều với 3D phức tạp trong CAD. Nhiều mô hình phức tạp mình phải đơn giản hoá bớt đi. Trường hợp bất khả kháng thì phải dùng các phần mềm khác để xử lý và có thể trả kết quả về cho AutoCAD.

Ssg mới bắt đầu tiếp cận SolidWorks nhưng thấy nó rất hay, hoàn toàn đáp ứng được nhu cầu hiện tại của mình (và các trường hợp tương tự như của bạn). Bạn có thể tham khảo ở đây, và nếu có thể thì tham gia cùng anh em cho có khí thế:

 

http://www.cadviet.com/forum/index.php?sho...amp;#entry23891

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

Bạn thông cảm cho mình hỏi lại:

1. Trong autocard mình tìm không có pline mà chỉ có line và spline ?.

2. Lisp convert spline -> pline hay là Lips convert spline -> pline là phần mềm dùng để bạn viết chuyển convert spline -> pline ?

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
ssg    1.088
Bạn thông cảm cho mình hỏi lại:

1. Trong autocard mình tìm không có pline mà chỉ có line và spline ?.

2. Lisp convert spline -> pline hay là Lips convert spline -> pline là phần mềm dùng để bạn viết chuyển convert spline -> pline ?

1- Pline là cách nói gọn (rất thông dụng) của Polyline. Bạn nhập lệnh "pline" vẽ thử, vào properties sẽ thấy.

2- Không hiểu ý bạn! Mã lisp post ở trên là một chương trình ứng dụng hoàn chỉnh. Bạn chỉ việc load và sử dụng, chi tiết mình đã viết rất kỹ ở các dòng đầu. Nếu bạn chưa biết cách sử dụng lisp (nói chung) thì vào topic "Hướng dẫn sử dụng mã lisp".

  • 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
1- Pline là cách nói gọn (rất thông dụng) của Polyline. Bạn nhập lệnh "pline" vẽ thử, vào properties sẽ thấy.

2- Không hiểu ý bạn! Mã lisp post ở trên là một chương trình ứng dụng hoàn chỉnh. Bạn chỉ việc load và sử dụng, chi tiết mình đã viết rất kỹ ở các dòng đầu. Nếu bạn chưa biết cách sử dụng lisp (nói chung) thì vào topic "Hướng dẫn sử dụng mã lisp".

Mình đã hiểu ý bạn do mình chưa biết cách sử dụng lisp. Mình muốn hỏi bạn ssg là sau khi chuyển đổ bằng lisp để vật thể ban đầu chuyển thành solid bằng các bước trong đó có sử dụng lisp thì sai số về thể tích là bao nhiêu % ?. Trong khi đó mình sử dụng lệnh loft thì sai số về thể tích đối với ssg là 3,42%.

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
ssg    1.088
Mình đã hiểu ý bạn do mình chưa biết cách sử dụng lisp. Mình muốn hỏi bạn ssg là sau khi chuyển đổ bằng lisp để vật thể ban đầu chuyển thành solid bằng các bước trong đó có sử dụng lisp thì sai số về thể tích là bao nhiêu % ?. Trong khi đó mình sử dụng lệnh loft thì sai số về thể tích đối với ssg là 3,42%.

Không thể nói trước là sai số bao nhiêu %, vì nó phụ thuộc vào từng trường hợp cụ thể.

Khi bạn dùng lisp trên, khi chương trình hỏi "Length of 1 segment...", bạn nhập số càng nhỏ thì kết quả càng chính xác. Tuy nhiên, khi đó số segment trong pline nhiều hơn -> kích thước file lớn hơn.

Bạn có thể tự kiểm tra độ chính xác về diện tích khi convert spline->polyline. Ví dụ:

- Vẽ 1 spline kín

- Dùng lệnh area sẽ thấy diện tích của vùng mà nó bao quanh

- Convert sang pline và làm tương tự

- So sánh 2 diện tích trên sẽ biết sai số

Sai số tương đối của diện tích cũng có thể xem là sai số tương đối của thê tích vì khi bạn dùng loft, sai số dọc theo path hoặc guide rất nhỏ (do AutoCAD thực hiện), trong tính toán kỹ thuật là không đáng kể (có thể không quá 1 phần triệu), xem như chính xác hoàn toàn.

Nói chung, bạn chọn "length of 1 segment" hợp lý, bạn có thể đạt độ chính xác không dưới 1/10.000 một cách rất bình thườ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

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


×