Chuyển đến nội dung
Diễn đàn CADViet
cadpro

Kéo cung tròn thành đường tròn?

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

Em có 1 cái cung Arc, em muốn nó chuyển thành đường tròn (nhưng không làm theo cách là vẽ đường tròn rồi xóa Arc ấy đi). Cũng như kiểu kéo đầu này của Arc chập vào đầu kia của Arc ấy (nhưng em kéo mãi mà ko nó vào được :mellow: )

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
Em có 1 cái cung Arc, em muốn nó chuyển thành đường tròn (nhưng không làm theo cách là vẽ đường tròn rồi xóa Arc ấy đi). Cũng như kiểu kéo đầu này của Arc chập vào đầu kia của Arc ấy (nhưng em kéo mãi mà ko nó vào được :mellow: )

Bạn có thể dùng lệnh PE với tham số C (Close). Tuy nhiên kết quả sẽ là đường tròn không phải là "đường tròn"! :mellow:

  • 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
Bạn có thể dùng lệnh PE với tham số C (Close). Tuy nhiên kết quả sẽ là đường tròn không phải là "đường tròn"! :mellow:

Làm theo bác thì nó chỉ ra đường tròn Pline thôi :mellow:

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
Làm theo bác thì nó chỉ ra đường tròn Pline thôi :mellow:

Thế nên tôi mới nói: "kết quả sẽ là đường tròn không phải là "đường tròn"

Bạn dùng lệnh LI kiểm tra xem, nó có phải là Circle đâu! Nhưng mà nó kín và có duy nhất một bán kính đàng hoàng! :mellow:

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
Em có 1 cái cung Arc, em muốn nó chuyển thành đường tròn (nhưng không làm theo cách là vẽ đường tròn rồi xóa Arc ấy đi). Cũng như kiểu kéo đầu này của Arc chập vào đầu kia của Arc ấy (nhưng em kéo mãi mà ko nó vào được :mellow: )

Lisp đây sẽ biến cung arc thành Circle

(defun c:ACi()
(setq ar (car(entsel "\n Chon arc :")))
(setq ent (entget ar))
(command "circle" (cdr (assoc 10 ent)) (cdr (assoc 40 ent)))
(command "erase" ar "")
(princ)
)

  • Vote tăng 4

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
Lisp đây sẽ biến cung arc thành Circle

(defun c:ACi()
(setq ar (car(entsel "\n Chon arc :")))
(setq ent (entget ar))
(command "circle" (cdr (assoc 10 ent)) (cdr (assoc 40 ent)))
(command "erase" ar "")
(princ)
)

Bác Tue_NV là chuyên viên về lisp là :mellow:

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
Lisp đây sẽ biến cung arc thành Circle

(defun c:ACi()
(setq ar (car(entsel "\n Chon arc :")))
(setq ent (entget ar))
(command "circle" (cdr (assoc 10 ent)) (cdr (assoc 40 ent)))
(command "erase" ar "")
(princ)
)

Bác Tue_NV ơi,

Bác có thể dùng hàm entmake thay cho lệnh Cicle bác nhể,

  • 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
Bác Tue_NV ơi,

Bác có thể dùng hàm entmake thay cho lệnh Cicle bác nhể,

dùng hàm entmake thay cho hàm Command

(defun c:ACi(/ ar ent)
(setq ar (car(entsel "\n Chon arc :")))
(setq ent (entget ar))
(entmake (list (cons 0 "CIRCLE") (cons 10 (cdr(assoc 10 ent))) (cons 40 (cdr(assoc 40 ent)))))
(command "erase" ar "")
(princ)
)

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
dùng hàm entmake thay cho hàm Command

(defun c:AtC(/ ar ent ds val); Arc to Circle
 (defun dxf(id ent) (cdr (assoc id ent)) )

 (setq ar (car(entsel "\n Chon arc :")))
 (setq ent (entget ar)
ds (list (cons 0 "CIRCLE") (cons 10 (dxf 10 ent)) (cons 40 (dxf 40 ent)) ))
 (setq ds (append ds (list (cons 8 (dxf 8 ent)))) );layer
 (if (setq val (dxf 62 ent));color
   (setq ds (append ds (list (cons 62 val))) )
   )
 (if (setq val (dxf 6 ent));line type
   (setq ds (append ds (list (cons 6 val))) )
   )
 (if (setq val (dxf 370 ent));line weight
   (setq ds (append ds (list (cons 370 val))) )
   )
 (entmake ds)
 (entdel ar)
 (princ)
)


  • 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
Thế nên tôi mới nói: "kết quả sẽ là đường tròn không phải là "đường tròn"

Bạn dùng lệnh LI kiểm tra xem, nó có phải là Circle đâu! Nhưng mà nó kín và có duy nhất một bán kính đàng hoàng! :mellow:

đâu phải ai cũng rành về lisp đâu. Thế cho nên cái cách chỉ dẫn của anh duongsatdn là hay nhất. Dù đường tròn chưa hẳn là đường tròn nhưng vẫn tuyệt. Xin cảm ơn đại ka duongsatdn nhiều lắm :mellow:

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

Dùng lisp của bác Tue_NV là tuyệt quá rồi. Nhưng kể ra mà nói thì lisp này vẫn "phạm quy":

Em có 1 cái cung Arc, em muốn nó chuyển thành đường tròn (nhưng không làm theo cách là vẽ đường tròn rồi xóa Arc ấy đi). Cũng như kiểu kéo đầu này của Arc chập vào đầu kia của Arc ấy (nhưng em kéo mãi mà ko nó vào được :mellow: )

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 Tue_NV

Xin phép bổ sung phần Properties (thuộc tính : layer, color, linetype, lineweight)

dùng Entdel thay cho Command Erase.

(defun c:AtC(/ ar ent ds val); Arc to Circle
 (defun dxf(id ent) (cdr (assoc id ent)) )

 (setq ar (car(entsel "\n Chon arc :")))
 (setq ent (entget ar)
ds (list (cons 0 "CIRCLE") (cons 10 (dxf 10 ent)) (cons 40 (dxf 40 ent)) ))
 (setq ds (append ds (list (cons 8 (dxf 8 ent)))) );layer
 (if (setq val (dxf 62 ent));color
   (setq ds (append ds (list (cons 62 val))) )
   )
 (if (setq val (dxf 6 ent));line type
   (setq ds (append ds (list (cons 6 val))) )
   )
 (if (setq val (dxf 370 ent));line weight
   (setq ds (append ds (list (cons 370 val))) )
   )
 (entmake ds)
 (entdel ar)
 (princ)
)

Chào anh gia bách

Lời đầu tiên Tue_NV xin cảm ơn anh gia bách rất nhiều vì sự chia sẻ

Nếu để gán thuộc tính của arc cho circle thì mình vẫn có thể sử dụng lệnh MA được mà

(defun c:ACi(/ ar ent)
(setq ar (car(entsel "\n Chon arc :")))
(setq ent (entget ar))
(entmake (list (cons 0 "CIRCLE") (cons 10 (cdr(assoc 10 ent))) (cons 40 (cdr(assoc 40 ent)))))

(command "MATCHPROP" ar (entlast) "")
(entdel ar)
(princ)
)

  • 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
Em có 1 cái cung Arc, em muốn nó chuyển thành đường tròn (nhưng không làm theo cách là vẽ đường tròn rồi xóa Arc ấy đi). Cũng như kiểu kéo đầu này của Arc chập vào đầu kia của Arc ấy (nhưng em kéo mãi mà ko nó vào được :mellow: )

 

Mình nghĩ có 3 cách:

- Cách 1 là của bạn duongsatdn , arc sẽ biến thành pline.

- Cách 2 dùng lệnh lengthen với tham số dy, cách này vẫn là arc, nhưng chắc chắn không thể kín đc, mình làm mãi vẫn còn khe hở cỡ 0.002, vì arc không bao giờ close đc (CAD cấm chuyện này).

- Cách 3 dùng properties chỉnh end angle cho "gần bằng" start angle .

Nếu ko cho xóa arc vẽ lại circle thì chỉ còn các cách trên thôi. Có ai nghĩ ra cách nào khác ko?

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 nghĩ có 3 cách:

- Cách 1 là của bạn duongsatdn , arc sẽ biến thành pline.

- Cách 2 dùng lệnh lengthen với tham số dy, cách này vẫn là arc, nhưng chắc chắn không thể kín đc, mình làm mãi vẫn còn khe hở cỡ 0.002, vì arc không bao giờ close đc (CAD cấm chuyện này).

- Cách 3 dùng properties chỉnh end angle cho "gần bằng" start angle .

Nếu ko cho xóa arc vẽ lại circle thì chỉ còn các cách trên thôi. Có ai nghĩ ra cách nào khác ko?

Em tưởng cứ vẽ đường tròn bắt điểm trên cung tròn rồi xóa cái cung tròn đi là 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
Chào anh gia bách

Lời đầu tiên Tue_NV xin cảm ơn anh gia bách rất nhiều vì sự chia sẻ

Nếu để gán thuộc tính của arc cho circle thì mình vẫn có thể sử dụng lệnh MA được mà

(defun c:ACi(/ ar ent)
(setq ar (car(entsel "\n Chon arc :")))
(setq ent (entget ar))
(entmake (list (cons 0 "CIRCLE") (cons 10 (cdr(assoc 10 ent))) (cons 40 (cdr(assoc 40 ent)))))

(command "MATCHPROP" ar (entlast) "")
(entdel ar)
(princ)
)

Chào Tue_NV.

"Đường nào cũng đến LA MÃ"

Tui có thói quen khi viết LISP (khi có thể được ) thì dùng lệnh của LISP, hạn chế dùng lệnh CAD(command).

đó chỉ là thói quen, không biết là thói quen tốt hay xấu.

Chúc sức khỏe.

  • 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
Chào Tue_NV.

"Đường nào cũng đến LA MÃ"

Tui có thói quen khi viết LISP (khi có thể được ) thì dùng lệnh của LISP, hạn chế dùng lệnh CAD(command).

đó chỉ là thói quen, không biết là thói quen tốt hay xấu.

Chúc sức khỏe.

Chào anh gia bách.

 

Tue_NV nghĩ rằng thói quen dùng lệnh của Lisp, hạn chế dùng lệnh của CAD là một thói quen cực kì tốt. Vì nó kích thích chúng ta tư duy, suy nghĩ khi viết Lisp, cái thứ 2 nữa là giúp chúng ta nhớ lệnh của Lisp cũng như cú pháp của chúng.

Tue_NV có lẽ sẽ tập theo thói quen của anh gia bách và học ở anh rất nhiều.

 

Cảm ơn anh và chúc anh thật nhiều sức khoẻ.

  • 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

×