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

Hỏi về cách vẽ 1 cung có kích thước chính xác.

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

phamthanhbinh    3.123

 

Xin lỗi cả nhà, các bác có thể cho em xin lisp vẽ cung khi biết điểm đầu, điểm cuối và chiều dài cung được không, hoặc có thể chỉ cho e la phải tìm cái này ở đâu không. Em đang rất cần. Thanks các bác trước.

Hề hề hề,

Tiện tay mình chỉnh luôn cái lisp của bác Hoành để bạn tùy nghi lựa chọn. Lệnh chạy là acl2.

 


(setq saiso 0.0000001)
(defun timx (k / xn xn+1)
 (setq xn   (sqrt (- 6.0 (* 6.0 k)))
xn+1 (+ xn (* 2.0 saiso))
 )
 (while (> (abs (- xn+1 xn)) saiso)
   (setq xn   xn+1
xn+1 (- Xn (/ (- (sin Xn) (* k Xn)) (- (cos Xn) k)))
   )
 )
 xn
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun C:ACL (/ C L p1 p2 x dx h p3 oldos)
;;;Arc with Chord + Length
 (setq
   C (getreal "\nChieu dai day:")
   L (getreal "\nChieu dai cung:")
 )
 (if (>= C L) (progn (alert "Error! Chieu dai day phai nho hon chieu dai cung!")(exit)))
 (setq
   p1 (getpoint "\nDiem chuan:")
   p2 (polar p1 pi C)
   k (/ C L)
 )

 (setq
   x     (* 2.0 (timx k))
   x   (/ (* x 180.0) pi) ;; convert radian to degree
   oldos (getvar "osmode")
 )
 (setvar "osmode" 0)
 (command "arc" p1 "E" p2 "A" x)
 (setvar "osmode" oldos)
 (princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun C:ACL2 (/ C L p1 p2 x dx h p3 oldos)
;;;Arc with Chord + Length

(setq
   p1 (getpoint "\nDiem neo thu nhat:")
   p2 (getpoint p1 "\n Diem neo thu hai: ")

 )
 (setq
   C (distance p1 p2)
   L (getreal "\nChieu dai cung:")
 )
 (if (>= C L) (progn (alert "Error! Chieu dai day phai nho hon chieu dai cung!")(exit)))

 (setq
    k (/ C L)
   x     (* 2.0 (timx k))
   x   (/ (* x 180.0) pi) ;; convert radian to degree
   oldos (getvar "osmode")
 )
 (setvar "osmode" 0)
 (command "arc" p1 "E" p2 "A" x)
 (setvar "osmode" oldos)
 (princ)
)

Chúc bạn vui và hy vọng bạn sẽ hài lòng khi xài các lisp trên.

  • 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
daik50    22

Hề hề hề,

Tiện tay mình chỉnh luôn cái lisp của bác Hoành để bạn tùy nghi lựa chọn. Lệnh chạy là acl2.

 


(setq saiso 0.0000001)
(defun timx (k / xn xn+1)
 (setq xn   (sqrt (- 6.0 (* 6.0 k)))
xn+1 (+ xn (* 2.0 saiso))
 )
 (while (> (abs (- xn+1 xn)) saiso)
   (setq xn   xn+1
xn+1 (- Xn (/ (- (sin Xn) (* k Xn)) (- (cos Xn) k)))
   )
 )
 xn
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun C:ACL (/ C L p1 p2 x dx h p3 oldos)
;;;Arc with Chord + Length
 (setq
   C (getreal "\nChieu dai day:")
   L (getreal "\nChieu dai cung:")
 )
 (if (>= C L) (progn (alert "Error! Chieu dai day phai nho hon chieu dai cung!")(exit)))
 (setq
   p1 (getpoint "\nDiem chuan:")
   p2 (polar p1 pi C)
   k (/ C L)
 )

 (setq
   x 	(* 2.0 (timx k))
   x   (/ (* x 180.0) pi) ;; convert radian to degree
   oldos (getvar "osmode")
 )
 (setvar "osmode" 0)
 (command "arc" p1 "E" p2 "A" x)
 (setvar "osmode" oldos)
 (princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun C:ACL2 (/ C L p1 p2 x dx h p3 oldos)
;;;Arc with Chord + Length

(setq
   p1 (getpoint "\nDiem neo thu nhat:")
   p2 (getpoint p1 "\n Diem neo thu hai: ")

 )
 (setq
   C (distance p1 p2)
   L (getreal "\nChieu dai cung:")
 )
 (if (>= C L) (progn (alert "Error! Chieu dai day phai nho hon chieu dai cung!")(exit)))

 (setq
	k (/ C L)
   x 	(* 2.0 (timx k))
   x   (/ (* x 180.0) pi) ;; convert radian to degree
   oldos (getvar "osmode")
 )
 (setvar "osmode" 0)
 (command "arc" p1 "E" p2 "A" x)
 (setvar "osmode" oldos)
 (princ)
)

Chúc bạn vui và hy vọng bạn sẽ hài lòng khi xài các lisp trên.

 

 

Thanks bác Bình nhé, cái món lisp này em vẫn chẳng biết gì. Cảm ơn bác 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
tinhtuhop    0

Mình ko biết cách nào để vẽ 1 cung có kích thước chính xác. Ai vẽ được xin chỉ giúp. Thanks nhiều. Ví dụ: Cung có radius=1600, length=1000 (Dùng dimarc để đo).

 

bạn vào Draw chọn ARC -> CHỌN STAR, CENTER,ANGLE vẽ 1 cung tròn với bán kính như bạn cho trước. sau dó bạn dùng đoạn thẳng nối 2 điểm đầu cung tròn đó để làm điểm bắt đầu cho cung tròn có kích thước mà bạn cho trước.sau dó bạn kéo dài cung đó ra và nhập độ dài cung mà bạn muốn vẽ đó sau đó bạn trim cung trước lúc bạn kéo dài cung ra là bạn sẽ có 1 cung với kích thước như bạn muốn.dùng lệnh dar để đo cung đó bạn sẽ thấy kích thước như bạn muốn! mình chỉ biết cách thủ công này thôi có gì xin chỉ giáo thê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
hoan2182    836

Hình như bác em Tinhtuhop nhầm lẫn khái niệm độ dài cung tròn và độ dài dây cung?

 

Bác em thích làm thủ công thì làm theo các bước sau:

 

Command: _arc (vẽ cung tròn: Srart , End , Radius )

Specify start point of arc or

:

Specify second point of arc or [Center/End]: _e

Specify end point of arc:

Specify center point of arc or [Angle/Direction/Radius]: _r Specify radius of arc: 1600

 

Command: LEn

LENGTHEN

Select an object or [DElta/Percent/Total/DYnamic]:

Current length: 1805.6933, included angle: 65

Select an object or [DElta/Percent/Total/DYnamic]: t

Specify total length or [Angle] <1.0000)>: 1000

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


×