Chuyển đến nội dung
Diễn đàn CADViet
Toan.CP

Vẽ Đường Pl Có Điểm Nút Là Đường Tròn Có Bán Kính Được Định Trước

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

Mình thường xuyên phải vẽ các đường bao bằng đường pline. Sau đó copy đường tròn đến từng điểm nút nên mất nhiều thời gian. Mong các cao nhân chỉ giúp lisp vẽ đường pline mà vẽ đến đâu thì điểm nút là đường tròn đến đó còn đường nối các điểm nút vẫn là đường thẳng. Các đường tròn là bằng nhau và có bán kính được xác định trước hoặc được xác định ngay đầu tiên khi bắt đầu lệnh.

            Mong các bác giúp 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
(defun c:p1(/ e e1)
	(setq e (entlast))
	(command ".pline") (while (/= (getvar 'cmdactive) 0) (command pause))
	(and
		(setq e1 (entlast))
		(not (equal e e1))
		(mapcar '(lambda(x)(entmake (list (cons 0 "CIRCLE")(cons 40 2)(cons 10 (cdr x))))) (vl-remove-if-not '(lambda(a)(= (car a) 10)) (entget e1)))
	)
) 

Quick code. Số 2 đằng sau số 40 là cái bạn cần chỉ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
(defun c:p1(/ e e1)
	(setq e (entlast))
	(command ".pline") (while (/= (getvar 'cmdactive) 0) (command pause))
	(and
		(setq e1 (entlast))
		(not (equal e e1))
		(mapcar '(lambda(x)(entmake (list (cons 0 "CIRCLE")(cons 40 2)(cons 10 (cdr x))))) (vl-remove-if-not '(lambda(a)(= (car a) 10)) (entget e1)))
	)
) 

Quick code. Số 2 đằng sau số 40 là cái bạn cần chỉnh

 

Cám ơn bác. Bác có thể chỉnh hộ em để đường tròn ấy và đường pline chỉ là 1 đối tượng được không ạ. Nó chỉ giống như chỉ là 1 dạng linetype thôi ấy. Để khi kích chọn đường và copy đi thi các đường tròn cũng đi theo luô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

Rất tiếc, yêu cầu đó lisp k làm được, linetype định nghĩa bằng file LIN không làm được, chỉ có thể tạo ra bằng các ngôn ngữ tạo được custom object

  • 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

Rất tiếc, yêu cầu đó lisp k làm được, linetype định nghĩa bằng file LIN không làm được, chỉ có thể tạo ra bằng các ngôn ngữ tạo được custom object

Vậy ạ. Em không biết về lisp nên nghĩ là có thể làm được. Hì hì Cảm ơn bác nhiều. Tại em hay phải copy các đường tròn đến các đầu nút pline rồi lại phải copy toàn bộ pl và các đường tròn vào các đối tượng khác. Vì vậy khi muốn chọn đối tượng này tách riêng ra rất khó khăn. Nên nếu làm được được như vậy thì sẽ giảm được nhiều công sức. Bác thử xem còn cách nào khác có thể làm được hộ em không ạ. E cảm ơn nhiều 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

Giải pháp là cuộn Pline tại các đỉnh thành các đường tròn.

 

Để khẳng định điều nói trên. Chạy thử:

(defun c:p2 ()

(entmake '((0 . "LWPOLYLINE")

(100 . "AcDbEntity")

(67 . 0)

(410 . "Model")

(8 . "0")

(62 . 1)

(100 . "AcDbPolyline")

(90 . 17)

(70 . 0)

(43 . 0.0)

(38 . 0.0)

(39 . 0.0)

(10 254.464 206.656)

(40 . 0.0)

(41 . 0.0)

(42 . -1.2303)

(91 . 0)

(10 250.631 205.856)

(40 . 0.0)

(41 . 0.0)

(42 . -0.812807)

(91 . 0)

(10 254.464 206.656)

(40 . 0.0)

(41 . 0.0)

(42 . 0.0)

(91 . 0)

(10 252.631 205.856)

(40 . 0.0)

(41 . 0.0)

(42 . 0.0)

(91 . 0)

(10 298.757 225.991)

(40 . 0.0)

(41 . 0.0)

(42 . 0.540215)

(91 . 0)

(10 302.055 225.43)

(40 . 0.0)

(41 . 0.0)

(42 . 1.85112)

(91 . 0)

(10 298.757 225.991)

(40 . 0.0)

(41 . 0.0)

(42 . 0.0)

(91 . 0)

(10 300.59 226.791)

(40 . 0.0)

(41 . 0.0)

(42 . 0.0)

(91 . 0)

(10 324.163 204.883)

(40 . 0.0)

(41 . 0.0)

(42 . 0.0)

(91 . 0)

(10 322.698 206.245)

(40 . 0.0)

(41 . 0.0)

(42 . 1.64675)

(91 . 0)

(10 326.12 205.3)

(40 . 0.0)

(41 . 0.0)

(42 . 0.607257)

(91 . 0)

(10 322.698 206.245)

(40 . 0.0)

(41 . 0.0)

(42 . 0.0)

(91 . 0)

(10 324.163 204.883)

(40 . 0.0)

(41 . 0.0)

(42 . 0.0)

(91 . 0)

(10 363.786 213.322)

(40 . 0.0)

(41 . 0.0)

(42 . 0.0)

(91 . 0)

(10 361.83 212.905)

(40 . 0.0)

(41 . 0.0)

(42 . -2.05449)

(91 . 0)

(10 364.657 211.522)

(40 . 0.0)

(41 . 0.0)

(42 . -0.486738)

(91 . 0)

(10 361.83 212.905)

(40 . 0.0)

(41 . 0.0)

(42 . 0.0)

(91 . 0)

(210 0.0 0.0 1.0)))

(princ))

P/s: Vấn đề còn lại là Code. Ket tiếp tục đê...! Giúp thì giúp cho trót...  :D 

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

Về bản chất nó không phải là đường tròn, và khi cần thay đổi bán kính thì ... 
So với giải pháp này thì giải pháp ổn hơn là tạo Group. E k ngồi má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

Quick code, số 2 vẫn là số e phải sửa. 
A để những đối tượng này vào một group, nếu muốn liền hoặc rời thì sử dụng tổ hợp phím Ctrl + Shift + A để bật/ tắt chế độ Group

(defun c:p1(/ e e1 s)
	(setq e (entlast) s (ssadd))
	(command ".pline") (while (/= (getvar 'cmdactive) 0) (command pause))
	(and
		(setq e1 (entlast))
		(not (equal e e1))
		(mapcar '(lambda(x)(entmake (list (cons 0 "CIRCLE")(cons 40 2)(cons 10 (cdr x))))) (vl-remove-if-not '(lambda(a)(= (car a) 10)) (entget e1)))
	)
(while (setq e (entnext e))
	(ssadd e s)
)
(command "-group" "_Create" "*" "" s "")
)
  • 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

Mình thường xuyên phải vẽ các đường bao bằng đường pline. Sau đó copy đường tròn đến từng điểm nút nên mất nhiều thời gian. Mong các cao nhân chỉ giúp lisp vẽ đường pline mà vẽ đến đâu thì điểm nút là đường tròn đến đó còn đường nối các điểm nút vẫn là đường thẳng. Các đường tròn là bằng nhau và có bán kính được xác định trước hoặc được xác định ngay đầu tiên khi bắt đầu lệnh.

            Mong các bác giúp với ạ!

Phương án khác là makeshape sau đó makelinetype trong công cụ của express. Tạo thành linetype theo nhu cầu. Nhanh gọn mà không phải gõ lisp gì cả lại đúng ý của người tạo. Sai hay đúng là do người dùng vận dụng công cụ để tạo ra linetype thoai.

 

^_^

  • 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

Theo mình biết linetype k quy định được là shape chỉ hiển thị ở vertex :) (bài 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

Theo mình biết linetype k quy định được là shape chỉ hiển thị ở vertex :) (bài trên)

Vẫn tạo được linetype mà. ^_^

 

https://drive.google.com/a/pla-studio.com/file/d/0BzyMk03w9juAVkN1Qk1LU2RnMFk/view?usp=sharing

 

Nhưng sẽ phải tính toán hình shape thoai. ^_^

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

GD này k ở chế độ pub :) Bee sửa lại nhé. Để ket down về và sửa lại tư duy logic của mình :D

  • 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

Theo cái sự biết của Duy thì tạo linetype sẽ chỉ được khi khoảng cách các shape là điều nhau. Nếu chỉ cho xuất hiện tại các đỉnh pline thì chưa thấy bao giờ.

  • 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

GD này k ở chế độ pub :) Bee sửa lại nhé. Để ket down về và sửa lại tư duy logic của mình :D

Hì chém gió cho vui 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

 

Quick code, số 2 vẫn là số e phải sửa. 

A để những đối tượng này vào một group, nếu muốn liền hoặc rời thì sử dụng tổ hợp phím Ctrl + Shift + A để bật/ tắt chế độ Group

(defun c:p1(/ e e1 s)
	(setq e (entlast) s (ssadd))
	(command ".pline") (while (/= (getvar 'cmdactive) 0) (command pause))
	(and
		(setq e1 (entlast))
		(not (equal e e1))
		(mapcar '(lambda(x)(entmake (list (cons 0 "CIRCLE")(cons 40 2)(cons 10 (cdr x))))) (vl-remove-if-not '(lambda(a)(= (car a) 10)) (entget e1)))
	)
(while (setq e (entnext e))
	(ssadd e s)
)
(command "-group" "_Create" "*" "" s "")
)

Cảm ơn Bác Nhiều nhiều lắm. Tuy không thể gán cao độ cho đường được. Nhưng nó gom chung đường tròn và Pl thành 1 đối tượng là em thấy thỏa mãn lắm lắm rồi. Hì hì Chúc bác và gia đình mạnh khỏe hạnh phúc!

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

×