Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
vanlam6408

Nhờ viết Lisp đánh dấu đối tượng

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

Em chào các bác trên diễn đàn ạ,em muốn nhờ các bác xem xét viết giúp em 2 cái lisp có tác dụng đổi màu các đối tượng khi quét qua như sau ạ:

Lips1:quét qua các đối tượng gồm polyline ( hoặc 2D polyline) thì nếu đối tượng nào kín thì sẽ chuyển sang màu vàng còn đối nào hở thì sẽ chuyển sang màu xanh.Về 2 polyline hở em thấy có dâu hiệu duy nhất mà em biết được là ở bảng propties ở phần misc có closed  là Yes cho polyline đóng và No cho polyline hở ạ

Lips2:quét qua các đối tượng gồm polygon  và rectang thì nếu đối tượng nào là polygon thì sẽ chuyển sang màu vàng còn đối nào là rectang thì sẽ chuyển sang màu xanh.Nếu mà có thể cho thêm dòng nhắc chỉ đổi màu vàng những polygon có số cạnh là bao nhiều nữa thì càng tuyệt vời ạ.

Em xin chân thành cảm ơn các anh chị trên diễn đàn ạ!

 

nho viet lisp.dwg

lisp2.png

  • Vote giảm 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

Do gà nên mình chỉ viết được cái đầu tiên (ko biết dấu hiệu nhận biết hcn :)))), bạn dùng tạm nhé :)).

Lệnh M1

(defun C:m1 ()
  (foreach ent (acet-ss-to-list (ssget '((0 . "POLYLINE,LWPOLYLINE"))))
    (if (= (vla-get-Closed (vlax-ename->vla-object ent)) :vlax-true)
      (vla-put-Color (vlax-ename->vla-object ent) 2)
      (vla-put-Color (vlax-ename->vla-object ent) 3)
      )
    )
  (print)
  )

 

M1.lsp

  • Like 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
2 giờ trước, Duong Nhat Duy đã nói:

Do gà nên mình chỉ viết được cái đầu tiên (ko biết dấu hiệu nhận biết hcn :)))), bạn dùng tạm nhé :)).

Lệnh M1


(defun C:m1 ()
  (foreach ent (acet-ss-to-list (ssget '((0 . "POLYLINE,LWPOLYLINE"))))
    (if (= (vla-get-Closed (vlax-ename->vla-object ent)) :vlax-true)
      (vla-put-Color (vlax-ename->vla-object ent) 2)
      (vla-put-Color (vlax-ename->vla-object ent) 3)
      )
    )
  (print)
  )

 

M1.lsp

Dạ,em cảm ơn bác đã hồi âm ạ.Lisp 1 bác viết đã chạy chuẩn rồi bác ạ.em cảm ơn bác nhiều ạ!

Cái Lisp 2 em cũng xem trong bảng properties nhưng cũng không có dấu hiệu gì ở trong bảng này thể hiện sự khác nhau của ractang và region ạ,em cũng thử dùng filters để chọn ra region nhưng cũng không thấy được gì.Nếu các anh pro trên diễn đàn cũng không có cách gì phân biệt nó bằng lisp thì chắc chỉ còn cách thủ công chọn lựa chúng bằng mắt thôi bác ạ.

hihi!một lần nửa cảm ơn bác 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
2 giờ trước, vanlam6408 đã nói:

Dạ,em cảm ơn bác đã hồi âm ạ.Lisp 1 bác viết đã chạy chuẩn rồi bác ạ.em cảm ơn bác nhiều ạ!

Cái Lisp 2 em cũng xem trong bảng properties nhưng cũng không có dấu hiệu gì ở trong bảng này thể hiện sự khác nhau của ractang và region ạ,em cũng thử dùng filters để chọn ra region nhưng cũng không thấy được gì.Nếu các anh pro trên diễn đàn cũng không có cách gì phân biệt nó bằng lisp thì chắc chỉ còn cách thủ công chọn lựa chúng bằng mắt thôi bác ạ.

hihi!một lần nửa cảm ơn bác nhiều ạ!

Lệnh M2 theo bạn thế này đạt chưa:

(defun c:m2 ()
  (mapcar '(lambda (x)
	     (if (= (vla-get-Closed (vlax-ename->vla-object x)) :vlax-true)
	       (if (and (= (length (setq l1 (lm:unique (acet-geom-vertex-list x)))) 4)
			(equal (setq a1 (angle (car l1) (cadr l1))) (angle  (last l1) (caddr l1)) 0.001)
			(equal (setq a2 (angle (cadr l1) (caddr l1))) (angle (car l1) (last l1)) 0.001)
			(equal (rem (abs (- a1 a2)) 1.5707) 0.0 0.001)
			)
		 
		 (vla-put-Color (vlax-ename->vla-object x) 2)
		 (vla-put-Color (vlax-ename->vla-object x) 3)
	       )
	     )
	   )
	  (acet-ss-to-list (ssget '((0 . "*POLYLINE"))))
  )
)
(defun LM:Unique (l)
  (if l
    (cons (car l) (LM:Unique (vl-remove (car l) (cdr l))))
  )
)

 

  • Like 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
2 phút trước, Doan Van Ha đã nói:

@Doan Nguyen Van hình vuông thì xếp nó là polygon hay rectang?

Cái này đề bài nên nói là lọc hình vuông và các hình khác cho dễ hiểu, vì Polygon nói chung là đa giác không tính số cạnh mà bá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
53 phút trước, Doan Nguyen Van đã nói:

Lệnh M2 theo bạn thế này đạt chưa:


(defun c:m2 ()
  (mapcar '(lambda (x)
	     (if (= (vla-get-Closed (vlax-ename->vla-object x)) :vlax-true)
	       (if (= (length (lm:unique (acet-geom-vertex-list x))) 4)
		 (vla-put-Color (vlax-ename->vla-object x) 2)
		 (vla-put-Color (vlax-ename->vla-object x) 3)
	       )
	     )
	   )
	  (acet-ss-to-list (ssget '((0 . "*POLYLINE"))))
  )
)
(defun LM:Unique (l)
  (if l
    (cons (car l) (LM:Unique (vl-remove (car l) (cdr l))))
  )
)

 

Viết như này nghĩa là đa giác 4 cạnh cũng sẽ tính là rectang đó bạn

  • Like 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
5 giờ trước, vanlam6408 đã nói:

Em chào các bác trên diễn đàn ạ,em muốn nhờ các bác xem xét viết giúp em 2 cái lisp có tác dụng đổi màu các đối tượng khi quét qua như sau ạ:

Lips1:quét qua các đối tượng gồm polyline ( hoặc 2D polyline) thì nếu đối tượng nào kín thì sẽ chuyển sang màu vàng còn đối nào hở thì sẽ chuyển sang màu xanh.Về 2 polyline hở em thấy có dâu hiệu duy nhất mà em biết được là ở bảng propties ở phần misc có closed  là Yes cho polyline đóng và No cho polyline hở ạ

Lips2:quét qua các đối tượng gồm polygon  và rectang thì nếu đối tượng nào là polygon thì sẽ chuyển sang màu vàng còn đối nào là rectang thì sẽ chuyển sang màu xanh.Nếu mà có thể cho thêm dòng nhắc chỉ đổi màu vàng những polygon có số cạnh là bao nhiều nữa thì càng tuyệt vời ạ.

Em xin chân thành cảm ơn các anh chị trên diễn đàn ạ!

 

nho viet lisp.dwg

lisp2.png

 

Bài liên quan:
  • [nhờ chỉnh sửa] lisp đánh dấu hatch - AutoLisp

    Bây giờ muốn đánh hatch của vùng đó chỉ việc dùng vòng lặp để chạy qua tất cả các đối tượng point đó. đây là câu lệnh mình sử dụng nhưng ...

  • Viết Lisp theo yêu cầu - AutoLisp

    23 Tháng 4 2008 ... ... cắt hàng loạt. Xong. Với CAD2008 không cần gõ thêm "f", chỉ cần chọn nhiều đối tượng theo kiểu cửa sổ. ... Toàn trắc đạc mới đánh dấu, ghi tên thôi. Bác làm ơn viết ... Em muốn nhờ các bác viết hộ 1 lisp nội dung như sau:.

  • Đoạn CODE củ chuối ??? Sửa mãi vẫn dở hơi, Đành nhờ mấy bác ...

    23 Tháng Sáu 2009 ... Cái Lisp tính diện tích của em, ở những bản vẽ bình thường thì chạy ... Sửa mãi vẫn dở hơi, Đành nhờ mấy bác Pro dùng tuyệt chiêu ??? ... Thành viên; 5; 117 bài viết ... Liệu q288 có thể sửa đoạn lisp này lại để khi ta pick vào 1 vùng tính diện tích thì lisp sẽ tạo ra một đối tượng boundary khác màu (màu đỏ ...

  • Viết Lisp theo yêu cầu - AutoLisp

    5 Tháng Năm 2009 ... Chạy ok theo ý mình rồi nhưng còn chỗ "Số thap phan:" mình muốn cho nó ... Khi bạn pick trúng đối tượng thì lặp còn nếu pick không trúng đối tượng thì ... bắt đầu viết lisp nên còn rất hạn chế, mình nhờ bạn hỗ trợ mình đọan code ... Enter new value for MODEMACRO, or . for none : CADVIET : gõ CADVIET.

  • [Yêu Cầu]Lisp Copy đường Bình đồ Từ Tim Tuyến - AutoLisp - Diễn ...

    11 Tháng Chín 2011 ... Đăng nhập ẩn danh ... Thành viên; 121; 618 bài viết; Giới tính:Male; Vị trí:TP Hồ Chí Minh ... Mình post lisp đó lên bạn có thể nhờ chính tác giả hoặc các anh trong ... Lisp Vẽ đuờng bao và chọn các đối tượng giao với đuờng bao này. ... Bạn hãy lưu ý rằng các dấu (') phải được thay thế bằng các dấu (") nhé.

 

Ý bạn là đa giác 4 cạnh sẽ đổi màu vàng hay là chỉ hình chữ nhật thì ms đổi màu vàng, còn lại (đa giác 4 cạnh ko phải hcn, đa giác khác, hay đoạn thẳng) thì màu xanh ?

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
6 phút trước, Duong Nhat Duy đã nói:

Ý bạn là đa giác 4 cạnh sẽ đổi màu vàng hay là chỉ hình chữ nhật thì ms đổi màu vàng, còn lại (đa giác 4 cạnh ko phải hcn, đa giác khác, hay đoạn thẳng) thì màu xanh ?

Không để ý vấn đề đấy do cái hình, ^^ e sửa lại rồ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
1 giờ} trướ}c, Doan Nguyen Van đã nói:

Lệnh M2 theo bạn thế này đạt chưa:


(defun c:m2 ()
  (mapcar '(lambda (x)
	     (if (= (vla-get-Closed (vlax-ename->vla-object x)) :vlax-true)
	       (if (and (= (length (setq l1 (lm:unique (acet-geom-vertex-list x)))) 4)
			(equal (setq a1 (angle (car l1) (cadr l1))) (angle  (last l1) (caddr l1)) 0.001)
			(equal (setq a2 (angle (cadr l1) (caddr l1))) (angle (car l1) (last l1)) 0.001)
			(equal (rem (abs (- a1 a2)) 1.5707) 0.0 0.001)
			)
		 
		 (vla-put-Color (vlax-ename->vla-object x) 2)
		 (vla-put-Color (vlax-ename->vla-object x) 3)
	       )
	     )
	   )
	  (acet-ss-to-list (ssget '((0 . "*POLYLINE"))))
  )
)
(defun LM:Unique (l)
  (if l
    (cons (car l) (LM:Unique (vl-remove (car l) (cdr l))))
  )
)

 

 

28 phút trước, Duong Nhat Duy đã nói:

Ý bạn là đa giác 4 cạnh sẽ đổi màu vàng hay là chỉ hình chữ nhật thì ms đổi màu vàng, còn lại (đa giác 4 cạnh ko phải hcn, đa giác khác, hay đoạn thẳng) thì màu xanh ?

Dạ,xin lỗi các bác giờ em mới vào mạng để xem được hồi âm của các bác ạ!em rất bất ngờ vì nhận được sự quan tâm của các bác về vấn đề của em ,thành thật cảm ơn các bác về điều đó  ạ!

Bác Doan Nguyen Van ạ,lisp của bác viết chạy tốt và tổng quát cho trường hợp đa giác 4 cạnh dù tạo bằng cách vẽ region hay rectang,nhưng em vẫn mong bác hay bác nào có thời gian có thể sửa cho em một tí cho nó phân biệt đúng hình nào vẽ ra bằng lệnh rectang thì mới đổi màu vàng như ý định ban đầu em đã trình bày với diễn đàn ạ,vì ý của em lúc đầu đúng như bác Duong Nhat Duy đã nói đó là chỉ có hình 4 cạnh được tạo từ lệnh rectang thì mới đổi màu vàng còn đa giác tạo thành từ region thì màu xanh,còn đa giác tạo thành từ phương pháp khác (như vẽ đường polyline hay vẽ đoạn thẳng rồi dùng lệnh join để nối...) thì không cần đổi màu.Với ngoài ra,nếu có thể các bác có thể lưu ý giúp em thêm một tí như em đã trình bày là nếu đã phân biệt được đa giác 4 cạnh được tạo thành là do lệnh region hay ractang thì có thể co thêm chức năng chỉ tô màu một đa giác chỉ có sô cạnh nhất định không ạ?

chân thành cảm ơn các bác ạ!

  • Vote giảm 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
44 phút trước, vanlam6408 đã nói:

 

Dạ,xin lỗi các bác giờ em mới vào mạng để xem được hồi âm của các bác ạ!em rất bất ngờ vì nhận được sự quan tâm của các bác về vấn đề của em ,thành thật cảm ơn các bác về điều đó  ạ!

Bác Doan Nguyen Van ạ,lisp của bác viết chạy tốt và tổng quát cho trường hợp đa giác 4 cạnh dù tạo bằng cách vẽ region hay rectang,nhưng em vẫn mong bác hay bác nào có thời gian có thể sửa cho em một tí cho nó phân biệt đúng hình nào vẽ ra bằng lệnh rectang thì mới đổi màu vàng như ý định ban đầu em đã trình bày với diễn đàn ạ,vì ý của em lúc đầu đúng như bác Duong Nhat Duy đã nói đó là chỉ có hình 4 cạnh được tạo từ lệnh rectang thì mới đổi màu vàng còn đa giác tạo thành từ region thì màu xanh,còn đa giác tạo thành từ phương pháp khác (như vẽ đường polyline hay vẽ đoạn thẳng rồi dùng lệnh join để nối...) thì không cần đổi màu.Với ngoài ra,nếu có thể các bác có thể lưu ý giúp em thêm một tí như em đã trình bày là nếu đã phân biệt được đa giác 4 cạnh được tạo thành là do lệnh region hay ractang thì có thể co thêm chức năng chỉ tô màu một đa giác chỉ có sô cạnh nhất định không ạ?

chân thành cảm ơn các bác ạ!

1. Về rectang hay polyline bạn bảo gì đó:

    AutoCAD nó không hiểu được hình chữ nhật nào được tạo thành từ lệnh REC và hình nào từ lệnh PL hay JO gì đâu, như lisp bác @Doan Nguyen Van viết là OK r đó bạn, nó đổi màu những hình chữ nhật (có thể xoay theo phương bất kỳ nó vẫn hiểu). Nhưng lưu ý phải là hình chữ nhật khép kín (CLOSED) và có 4 đỉnh (1 số hcn tự nhiên lòi thêm 1 2 điểm trên cạnh nào đó, nhìn vẫn là hcn nhưng lisp nó ko hiểu đâu, để mà hiểu đc thì phải viết khá lằng nhằng, nếu muốn bạn phải thương lượng vs tác giả)

2. Bôi màu theo số cạnh mình nghĩ là có thể làm đc nhưng cũng lằng nhằng, vì mắt nhìn thì thấy 3 4 cạnh thôi nhưng tùy định dạng PLINE nhiều đỉnh, trùng nét, ... đa giác lõm lồi nên khá phức tạp, cái này bạn tiếp tục liên hệ tác giá nhé :))

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
20 phút trước, Duong Nhat Duy đã nói:

1. Về rectang hay polyline bạn bảo gì đó:

    AutoCAD nó không hiểu được hình chữ nhật nào được tạo thành từ lệnh REC và hình nào từ lệnh PL hay JO gì đâu, như lisp bác @Doan Nguyen Van viết là OK r đó bạn, nó đổi màu những hình chữ nhật (có thể xoay theo phương bất kỳ nó vẫn hiểu). Nhưng lưu ý phải là hình chữ nhật khép kín (CLOSED) và có 4 đỉnh (1 số hcn tự nhiên lòi thêm 1 2 điểm trên cạnh nào đó, nhìn vẫn là hcn nhưng lisp nó ko hiểu đâu, để mà hiểu đc thì phải viết khá lằng nhằng, nếu muốn bạn phải thương lượng vs tác giả)

2. Bôi màu theo số cạnh mình nghĩ là có thể làm đc nhưng cũng lằng nhằng, vì mắt nhìn thì thấy 3 4 cạnh thôi nhưng tùy định dạng PLINE nhiều đỉnh, trùng nét, ... đa giác lõm lồi nên khá phức tạp, cái này bạn tiếp tục liên hệ tác giá nhé :))

dạ vâng,em cảm ơn các bác ạ!em thì không biết viết lisp nên không biết rõ những việc nào lisp dễ viết với những yêu cầu nào lisp sẽ khó viết nên nhiều khi cũng đưa ra những mong muốn không khả quan như tổng thống Donald Trump đòi tiêm chất diệt khuẩn để diệt covid ạ.

Thực ra,ban đầu em nghĩ đơn giản chỉ cần lisp phân biệt được các đường tạo ra từ region hay rectang là được vì chắc là nó phải có dấu hiệu nào đó đê phân biệt vì nó được vẽ từ 2 lệnh khác nhau,ngoài ra đương region nó có thể lưu giữ thông tin về số cạnh của nó nơi nào đó trong thông tin về đối tượng này,nếu cad quản lí thông tin về số cạnh thì sẽ tìm ra được các region có thông tin về số cạnh đó,mà đã phân biệt được thì sẽ tô màu được,nhưng không ngờ nó lại phức tạp thế.hihi

nếu mà biết nó mất nhiều thời gian và phức tạp thế thì em chẳng dám lạm dụng thời gian của các bác nhiều thế đâu ạ.

Một lần nữa em cảm ơn các bác 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

biet ve CAD việc phân biệt được region và rectang không biết cad quản lí thông tin 2 loại đối tượng này có gì khác biệt không chứ em thấy trong thẻ properties với lệnh filters đều không có nên viết lisp phân phân biệt được 2 loại này chắc cũng khó ạ

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
36 phút trước, vanlam6408 đã nói:

biet ve CAD việc phân biệt được region và rectang không biết cad quản lí thông tin 2 loại đối tượng này có gì khác biệt không chứ em thấy trong thẻ properties với lệnh filters đều không có nên viết lisp phân phân biệt được 2 loại này chắc cũng khó ạ

Nếu bạn nêu rõ vấn đề là phân biệt rectang và polyline, hay rectang và region thì các bạn sửa lại chút xíu lisp là được, còn lệnh rectang hay pline đều tạo ra đối tượng là polyline, nên ko có cách nào phân biệt đượ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
40 phút trước, Biet ve CAD đã nói:

Nếu bạn nêu rõ vấn đề là phân biệt rectang và polyline, hay rectang và region thì các bạn sửa lại chút xíu lisp là được, còn lệnh rectang hay pline đều tạo ra đối tượng là polyline, nên ko có cách nào phân biệt được bạn à

dạ,cũng là do cách diễn đạt của em không được sáng sủa lắm nên khiến bác Doan Nguyen Van đưa về bài toán tổng quát về số cạnh,còn bác Duong Nhat Duy đang hiểu là em đang nói về các cách tạo nên hình đa giác khiến bài toán trở nên phức tạp trong lúc từ đầu bác ấy đã hiểu đúng mấu chốt là tách được đối tượng region và rectang.hihi.tuy thế,việc tách được ra các loại đối tượng  rectang và polyline, hay rectang và region như bác nói trong autolisp phải nhờ đến các bác hiểu sâu về nó mới làm được chứ em thì chỉ biết dùng lệnh filters mà không được thì em cũng chẳng biết làm thế nào.Mà nhờ mọi người mất nhiều thời gian quá em cũng thật ngại với các bác.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

với lại em thấy bác Doan Nguyen Van có nói Polygon nói chung là đa giác không tính số cạnh nên sợ vấn đề dựa vào số cạnh của đường region để lọc nó ra khỏi các region khác chắc cũng chưa có cách gì đơn gian để làm được điều này,hoặc làm được thì cũng ngại mất thời gian nhiều của các bác.hi

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 xong loạt bài này mình hơi bị mơ hồ có vài 1 thế này.

+Đối tượng sinh ra từ lệnh rectang chính là loại đối tượng lwpline.

+Đối tượng sinh ra từ lệnh region chính là đối tượng region.

-Hai loại đối tượng này về bản chất là khác nhau:

+lwpoline là đối tượng dạng tuyến.

+Đối tượng region là đối tượng dạng mảng.

-Để thấy sự khác nhau ta dùng lệnh subtract cho 2 region có phần chồng lên nhau để thấy hiệu quả, còn lwpline không dùng lệnh này được.

 

*Quay về đề của chủ thới đang đòi phân biệt Đối tượng sinh ra từ lệnh rectang và đối tượng sinh ra từ lệnh region (không phân biệt lồi lõm, mấy cạnh mấy đỉnh). Thì dịch ra nghĩa là phân biệt lwpline và region. Mà mã dxf của 2 thèn này à khác nhau thì chọn được mà.

*Tôi không tải file cad về xem nhưng nếu file cad không đúng tinh thần tôi nói trên thì đề bài và ví dụ sai.

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 giờ} trướ}c, duy782006 đã nói:

-Đọc xong loạt bài này mình hơi bị mơ hồ có vài 1 thế này.

+Đối tượng sinh ra từ lệnh rectang chính là loại đối tượng lwpline.

+Đối tượng sinh ra từ lệnh region chính là đối tượng region.

-Hai loại đối tượng này về bản chất là khác nhau:

+lwpoline là đối tượng dạng tuyến.

+Đối tượng region là đối tượng dạng mảng.

-Để thấy sự khác nhau ta dùng lệnh subtract cho 2 region có phần chồng lên nhau để thấy hiệu quả, còn lwpline không dùng lệnh này được.

 

*Quay về đề của chủ thới đang đòi phân biệt Đối tượng sinh ra từ lệnh rectang và đối tượng sinh ra từ lệnh region (không phân biệt lồi lõm, mấy cạnh mấy đỉnh). Thì dịch ra nghĩa là phân biệt lwpline và region. Mà mã dxf của 2 thèn này à khác nhau thì chọn được mà.

*Tôi không tải file cad về xem nhưng nếu file cad không đúng tinh thần tôi nói trên thì đề bài và ví dụ sai.

dạ hoàn toàn đúng như anh đã nói ạ.Nếu tìm ra nơi nào đó cad lưu giư thông tin về đối tượng là polyline,region,rectang thì sẽ phân biệt được các đối tượng này hay nói cách khác là sẽ tách riêng được chúng ra,tách chúng nó ra dựa vào mã dxf hay dựa vào đặc điểm riêng của từng loại đường mà khi cad tạo ra chúng đã lưu giữ thông tin về chúng lại(không phân biệt lồi lõm, mấy cạnh mấy đỉnh) ,mà khi tách được chúng ra thì hiển nhiên là có thể tô màu cho từng loại ạ.Ngoài ra,nếu mà mã dxf như anh nói có thể lưu giữ được thông tin về đường region thì không biết nó có lưu giữ luôn cả thông tin số cạnh của đường region này không?nếu mà nó cũng lưu giữ luôn thông tin này thì giữa các đường region là có thể phân biệt nhau nhờ thông tin khác nhau về số cạnh rồi phải không ạ?

 

 

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ôi nghỉ đã giải thích rất rạch ròi về quan điểm polyline,region,rectang.

-Bạn đẩy 1 vòng xong vẫn lẫn lộn như cũ. Tôi đành load file cad về dòm:

+Khẳng định với bạn là các đối tượng của bạn điều là pline cả nghĩa là bạn ném cái chử region ra khỏi đầu đi và ra lại đề cho nó đúng.

+Pline thì có thể lọc ra là nó có mấy cạnh. (cái này thì @Doan Nguyen Van đã viết rồi còn gì) Nếu muốn đa giác 4 cạnh phải là hình chữ nhật nghĩa là 2 cặp cạnh song song bằng nhau và có góc vuông thì yêu cầu thêm người ta sửa.

  • Like 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
17 giờ trước, vanlam6408 đã nói:

dạ hoàn toàn đúng như anh đã nói ạ....

 

 

Bạn tải lisp này nhé, sửa trên gợi ý lisp của bạn @Doan Nguyen Van ở trên

Lisp sẽ chuyển các polyline sang màu vàng theo đúng số cạnh được nhập vào ( polyline kín, cạnh nhập vào > 2)

Nếu nhập cạnh là 4 thì tất cả các polyline chữ nhật giữ nguyên, còn lại đều được chuyển

M2.lsp

  • Like 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
12 phút trước, Biet ve CAD đã nói:

Bạn tải lisp này nhé, sửa trên gợi ý lisp của bạn @Doan Nguyen Van ở trên

Lisp sẽ chuyển các polyline sang màu vàng theo đúng số cạnh được nhập vào ( polyline kín, cạnh nhập vào > 2)

Nếu nhập cạnh là 4 thì tất cả các polyline chữ nhật giữ nguyên, còn lại đều được chuyển

M2.lsp

hi,dạ em cảm ơn bác biet ve cad nhiều  ạ!nhưng không hiểu sao nó vẫn chưa chuyên màu các polyline nào dù nhập số cạnh là bao nhiêu bá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
13 phút trước, vanlam6408 đã nói:

hi,dạ em cảm ơn bác biet ve cad nhiều  ạ!nhưng không hiểu sao nó vẫn chưa chuyên màu các polyline nào dù nhập số cạnh là bao nhiêu bác ạ.

Chà chà, ^^, mình chạy trên file bạn vẫn ok mà

với bản vẽ bạn, bạn cho tất cả sang 1 màu nào đó ( màu blue chẳng hạn ), rồi dùng lisp mình, khi hỏi chọn số cạnh thì nhập 6 chẳng hạn ^^, thì tất cả các polyline có 6 cạnh sẽ chuyển qua màu vàng

Tương tự các cạnh khác

nhớ là pline kín đấy nhé

  • Like 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
5 giờ trước, duy782006 đã nói:

-Tôi nghỉ đã giải thích rất rạch ròi về quan điểm polyline,region,rectang.

-Bạn đẩy 1 vòng xong vẫn lẫn lộn như cũ. Tôi đành load file cad về dòm:

+Khẳng định với bạn là các đối tượng của bạn điều là pline cả nghĩa là bạn ném cái chử region ra khỏi đầu đi và ra lại đề cho nó đúng.

+Pline thì có thể lọc ra là nó có mấy cạnh. (cái này thì @Doan Nguyen Van đã viết rồi còn gì) Nếu muốn đa giác 4 cạnh phải là hình chữ nhật nghĩa là 2 cặp cạnh song song bằng nhau và có góc vuông thì yêu cầu thêm người ta sửa.

Ui bác ui,bác xem xét lại coment của em,em không cố ý làm lộn xộn vấn đề đâu bác ui.Chả là em đọc coment của bác lần đầu em thấy bác có đề cập đến có thể phân biệt được các đối tượng này dựa vào sự khác nhau giữa chúng dựa vào thông tin trong dxf của chúng nên phần sau em mới suy nghĩ đến khả năng chọn các ra được các region ,polyline,hay rectang riêng ạ.Em thấy bác đưa ra các căn cứ sau để cho thấy khả năng ít nhất là sẽ lấy được ra các region:

-căn cứ thứ nhất:

"+Đối tượng sinh ra từ lệnh rectang chính là loại đối tượng lwpline.

+Đối tượng sinh ra từ lệnh region chính là đối tượng region."

-căn cứ thứ 2:

"-Hai loại đối tượng này về bản chất là khác nhau:

+lwpoline là đối tượng dạng tuyến.

+Đối tượng region là đối tượng dạng mảng."

-căn cứ thứ 3:

"Đối tượng sinh ra từ lệnh rectang và đối tượng sinh ra từ lệnh region (không phân biệt lồi lõm, mấy cạnh mấy đỉnh). Thì dịch ra nghĩa là phân biệt lwpline và region. Mà mã dxf của 2 thèn này à khác nhau thì chọn được mà."

=>từ 3 căn cứ này cho thấy chúng có sự khác nhau nhất định,như thế em mới hi vọng có thể vẫn có thể tách chúng ra,cũng như mã dxf mà bác nói có thể lưu giũ thông tin của region thì có thể nó cũng lưu giữ thông tin về số cạnh.Từ những điều này thì em mới có coment như đã trình bày với bác và mọi người về khả năng tách chúng ra.

Em thì trí tuệ em cũng kém,đặc biệt là về viết lisp thì em lại càng không biết gì nên cố gắng làm sao diễn tả vấn đề thật rõ ràng để các bác có thể giúp em và không mất nhiều thời gian của các bác.Nói thật xấu hổ với bác và mọi người ,sau khi đọc coment lần sau của bác em nghĩ mình đã hiểu sai coment lần đầu của bác ở đâu đó nên em đã đọc lại thêm 3-4 lần coment của bác và của em nhưng vẫn chưa hiểu đang diễn đạt nhầm chỗ nào.Có lẽ em sẽ tìm hiểu nhiều hơn nữa về cad để hiểu đúng ý bác nói hơn cũng như xem xét lại cách  trình bày diễn đạt của mình để mọi người hiểu rõ ạ.Cảm ơn bác cũng đã lưu ý đến vấn đề của em ạ!

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
47 phút trước, Biet ve CAD đã nói:

Chà chà, ^^, mình chạy trên file bạn vẫn ok mà

với bản vẽ bạn, bạn cho tất cả sang 1 màu nào đó ( màu blue chẳng hạn ), rồi dùng lisp mình, khi hỏi chọn số cạnh thì nhập 6 chẳng hạn ^^, thì tất cả các polyline có 6 cạnh sẽ chuyển qua màu vàng

Tương tự các cạnh khác

nhớ là pline kín đấy nhé

bác biet ve cad cảm ơn bác,em làm được rồi ạ.tuy nhiên em chưa hiểu lắm chỗ bác nói nếu nhập vào 4 thì các polyline chữ nhật đều giữ nguyên ,còn lại đều được chuyển,nhưng em thấy nếu nhập vào số cạnh là 4 thì không thấy có điều gì xảy ra bác ạ,nghĩa là tất cả đều giữ nguyên màu như cũ.

Ngoài ra,nhân đây em muốn nhờ các bác viết giúp thêm em lệnh M3 có chức năng đổi màu vàng các polyline có điểm đầu và điểm cuối trùng nhau được không ạ?Vì với bản vẽ lúc em gửi đi em thường dùng lệnh region hoặc ractang để vẽ đa giác nhưng khi bản vẽ gửi về yêu cầu chỉnh sửa lại có cả các polyline không kín nhưng có điểm đầu và điểm cuối trùng nhau  trông như các polyline kín thật.Thì em muốn các bác giúp em cái lisp này nữa để em thủ sẵn,nếu mà gặp trường hợp này có thể dùng tiếp lisp M3 này để đổi màu chúng luôn.

Em rất biết ơn các bác ,đặc biệt là bác và các bác Duong Nhat Duy, Doan Nguyen Van đã lưu ý vấn đề của em và trực tiếp nhiệt tình code giúp em ạ!

Em cũng mới tham gia diễn đàn thì cũng chưa biết rõ về quy định của diễn đàn,bác cho em hỏi trên diễn đàn nếu muốn thể hiện cảm ơn các bác thì có thể nhấn vào nút Like hay chỗ nào ạ?

lisp M3.png

nho viet lisp - M3.dwg

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  

×