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

Chon đối tượng theo dang đường linetype !

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

Các Bác Pro viết giúp em cái list mà ta có thể chọn các đối tượng theo dang linetype, ví dụ như: hidden, center, conti, continouns...

Em xin chân thành cảm ơn a. !

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ác Bác Pro viết giúp em cái list mà ta có thể chọn các đối tượng theo dang linetype, ví dụ như: hidden, center, conti, continouns...

Em xin chân thành cảm ơn a. !

*Hai đối tượng có hình dáng giống hệt nhau thì vẩn có 2 trường hợp xảy ra:

-1 đối tượng có kiểu đường là bylayer và layer đó có kiểu đường là (chấm gạch chẳng hạn).

-1 đối tượng có kiểu đường là chấm gạch và không phải bylayer.

*Bạn yêu cầu viết kiểu gì Cứ hình dáng giống nhau thì chọn tất không kể bylayer hay ko hay là chỉ chọn đối tượng cùng kiểu đường và ko byleyer?.

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
*Hai đối tượng có hình dáng giống hệt nhau thì vẩn có 2 trường hợp xảy ra:

-1 đối tượng có kiểu đường là bylayer và layer đó có kiểu đường là (chấm gạch chẳng hạn).

-1 đối tượng có kiểu đường là chấm gạch và không phải bylayer.

*Bạn yêu cầu viết kiểu gì Cứ hình dáng giống nhau thì chọn tất không kể bylayer hay ko hay là chỉ chọn đối tượng cùng kiểu đường và ko byleyer?.

 

Yêu cầu của em là: Chọn các line hoặc pline có chung đặc điểm linetype thô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
Yêu cầu của em là: Chọn các line hoặc pline có chung đặc điểm linetype thôi ạ !

 

 

ủa? hồi nãy mình trả lời rồi mà bài đâu mất vậy ta???

 

mã DXF linetype là 6. nằm trong LAYER của đối tượng. Do đó bạn phải đọc layer rồi đọc lilntype. Nếu có cùng LT thì cho nó OK.

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
ủa? hồi nãy mình trả lời rồi mà bài đâu mất vậy ta???

 

mã DXF linetype là 6. nằm trong LAYER của đối tượng. Do đó bạn phải đọc layer rồi đọc lilntype. Nếu có cùng LT thì cho nó OK.

Bác giúp em với . Bác nói thế em không làm được ! bác viết cho em 1 lisp cụ thể được 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
Yêu cầu của em là: Chọn các line hoặc pline có chung đặc điểm linetype thôi ạ !

Hề hề hề,

Không biết cái này bạn có xài được không hỉ???

(defun c:slblt ()
(setq ss (ssget (list (cons 0 "*LINE,CIRCLE,ELLIPSE")))
       i 0
       n (sslength ss)
       sslt (ssadd)
       lt (getstring t "\n Nhap ten linetype can chon: ")
)
(while (       (setq en (ssname ss i)
              els (entget en)
              la (cdr (assoc 8 els))
      )
      (if (/= (cdr (assoc 6 els)) nil)
          (if (= (cdr (assoc 6 els)) lt)
              (setq sslt (ssadd en sslt))
          )
          (if (= (cdr (assoc 6 (tblsearch "layer" la))) lt)
              (setq sslt (ssadd en sslt))
          )
       )
       (setq i (1+ i))
)
sslt
(sssetfirst nil sslt)
(princ)
)

Chúc bạn vui.

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
Hề hề hề,

Không biết cái này bạn có xài được không hỉ???

(defun c:slblt ()
(setq ss (ssget (list (cons 0 "*LINE,CIRCLE,ELLIPSE")))
       i 0
       n (sslength ss)
       sslt (ssadd)
       lt (getstring t "\n Nhap ten linetype can chon: ")
)
(while (< i n)
      (setq en (ssname ss i)
              els (entget en)
              la (cdr (assoc 8 els))
      )
      (if (/= (cdr (assoc 6 els)) nil)
          (if (= (cdr (assoc 6 els)) lt)
              (setq sslt (ssadd en sslt))
          )
          (if (= (cdr (assoc 6 (tblsearch "layer" la))) lt)
              (setq sslt (ssadd en sslt))
          )
       )
       (setq i (1+ i))
)
sslt
(sssetfirst nil sslt)
(princ)
)

Chúc bạn vui.

 

Không phải rùi Bác ơi ! ý em là chọn đường hidden, center..(theo linetype ạ !) mà không phân biệt LINE,CIRCLE,ELLIPSE

Chỉnh sửa theo phamthanhbinh
Bổ sung hàm sssetfirst

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
Không phải rùi Bác ơi ! ý em là chọn đường hidden, center..(theo linetype ạ !) mà không phân biệt LINE,CIRCLE,ELLIPSE

Không biết thế này đúng ý của bác chưa? bạn dùng select p để xem lại chọn lựa nhé. Cái này chỉ chọn với *LINE, nếu muốn chọn đối tượng khác thì bạn thêm vào nhé.

 

(defun c:llt (/ ss linetype i )  
(setq linetype (cdr (assoc 6 (tblsearch "LAYER" (cdr (assoc 8 (entget (car (entsel)))))))))
(setq ss (ssget "x" (list (cons 0 "*LINE"))))
(setq i 0)
(while
(setq ename (ssname ss i))
   (if (/=
	 (cdr (assoc 6 (tblsearch "LAYER" (cdr (assoc 8 (entget ename))))))
	 linetype
	 )
 (progn
 (setq ss (ssdel ename ss))
 (setq i (1- i))
 )
 )
(setq i (1+ i))
)
(command "select" ss "")
)

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
Không phải rùi Bác ơi ! ý em là chọn đường hidden, center..(theo linetype ạ !) mà không phân biệt LINE,CIRCLE,ELLIPSE

Hề hề hề,

Chưa hiểu ý bạn lắm. Phải chăng trên bản vẽ của bạn có nhiều linetype được sử dụng cho các đường hidden và center?????

Hay là bạn muốn chọn các đối tượng được vẽ bởi các đường hidden và center ???? Có nhẽ bạn nên post một cái bản vẽ của bạn lên và nói rõ bạn muốn gì chứ mình thấy khó hiểu quá.....

Phiền bạn chút xíu ha.

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
*Hai đối tượng có hình dáng giống hệt nhau thì vẩn có 2 trường hợp xảy ra:

-1 đối tượng có kiểu đường là bylayer và layer đó có kiểu đường là (chấm gạch chẳng hạn).

-1 đối tượng có kiểu đường là chấm gạch và không phải bylayer.

*Bạn yêu cầu viết kiểu gì Cứ hình dáng giống nhau thì chọn tất không kể bylayer hay ko hay là chỉ chọn đối tượng cùng kiểu đường và ko byleyer?.

Câu này mình đã đưa ra dữ liệu cụ thể để bạn đặt lại câu hỏi cho đúng nhưng bạn vẩn hỏi kiểu trớt wớt => chán ko muốn tham gia.

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
Hề hề hề,

Chưa hiểu ý bạn lắm. Phải chăng trên bản vẽ của bạn có nhiều linetype được sử dụng cho các đường hidden và center?????

Hay là bạn muốn chọn các đối tượng được vẽ bởi các đường hidden và center ???? Có nhẽ bạn nên post một cái bản vẽ của bạn lên và nói rõ bạn muốn gì chứ mình thấy khó hiểu quá.....

Phiền bạn chút xíu ha.

 

Vâng đúng rồi ạ, ý em là muốn chọn các đối tượng được vẽ bởi các đường hidden và center. Bản vẽ đây ạ !

http://www.cadviet.com/upfiles/3/2_1.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
Vâng đúng rồi ạ, ý em là muốn chọn các đối tượng được vẽ bởi các đường hidden và center. Bản vẽ đây ạ !

http://www.cadviet.com/upfiles/3/2_1.dwg

Hề hề hề,

Phải chăng bạn muốn chọn tất cả các cọc trên bản vẽ mặt bằng????

Nếu đúng vậy thì vấn đề bạn đặt ra thật là ......... VẼ HƯƠU....

Các cọc này được bạn đưa vào bản vẽ ở dạng block. Mà các block này có tên là coc. Vậy thì bạn có thể dùng filter hay quick select mà chọn nó chứ cần gì phải lisp liếc cho nó...... dở hơi ..... hả bạn.

Cái lisp mình viết chỉ để chọn các đối tượng đơn mà bạn vẽ bởi cái linetype mà bạn sẽ phải nhập tên khi lisp hỏi mà thôi. Đúng là với cái block này của bạn thì nó chịu không thể nhận ra được rồi.

Bạn hãy xem lại vấn đề của bạn 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
Hề hề hề,

Phải chăng bạn muốn chọn tất cả các cọc trên bản vẽ mặt bằng????

Nếu đúng vậy thì vấn đề bạn đặt ra thật là ......... VẼ HƯƠU....

Các cọc này được bạn đưa vào bản vẽ ở dạng block. Mà các block này có tên là coc. Vậy thì bạn có thể dùng filter hay quick select mà chọn nó chứ cần gì phải lisp liếc cho nó...... dở hơi ..... hả bạn.

Cái lisp mình viết chỉ để chọn các đối tượng đơn mà bạn vẽ bởi cái linetype mà bạn sẽ phải nhập tên khi lisp hỏi mà thôi. Đúng là với cái block này của bạn thì nó chịu không thể nhận ra được rồi.

Bạn hãy xem lại vấn đề của bạn nhé...

 

Vâng thì em chỉ muốn chọn đối tượng đơn thôi. Em sử dụng lisp của bác rồi nhưng không được. Bác check lại giúp em với a!

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âng thì em chỉ muốn chọn đối tượng đơn thôi. Em sử dụng lisp của bác rồi nhưng không được. Bác check lại giúp em với a!

 

Đoạn code mình post ở trên cũng không đúng ý bác hả? hic. Ý bác thế nào 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
Các Bác Pro viết giúp em cái list mà ta có thể chọn các đối tượng theo dang linetype, ví dụ như: hidden, center, conti, continouns...

Em xin chân thành cảm ơn a. !

LISP này viết lâu rồi, không biết có đáp ứng đuợc yêu cầu của laivanyen không ?

 

Lisp chọn các đối tượng theo màu hay linetype

Viết lisp theo yêu cầu [phần 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
LISP này viết lâu rồi, không biết có đáp ứng đuợc yêu cầu của laivanyen không ?

 

Lisp chọn các đối tượng theo màu hay linetype

Viết lisp theo yêu cầu [phần 2]

 

Hic bác ơi hình như link bị hỏng roài nó thông báo lỗi ạ ! bác làm ơn load lại giúp em 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
Hic bác ơi hình như link bị hỏng roài nó thông báo lỗi ạ ! bác làm ơn load lại giúp em với !
Lâu ngày không có ai down nên chắc bị xóa trên server.

Lisp chọn các đối tượng theo màu hay linetype

 

link : http://www.megashare.vnn.vn/download.php?id=BA4E415F12

  • 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
Lâu ngày không có ai down nên chắc bị xóa trên server.

Lisp chọn các đối tượng theo màu hay linetype

 

link : http://www.megashare.vnn.vn/download.php?id=BA4E415F12

Hi hi cảm ơn Bác nhé ! em trình bày kém thế mà Bác vẫn hiểu ! chứng tỏ Bác là người thông minh nhất !

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
Hi hi cảm ơn Bác nhé ! em trình bày kém thế mà Bác vẫn hiểu ! chứng tỏ Bác là người thông minh nhất !

Chào bạn laivanyen,

Vậy là đã rõ, cái lisp đầu tiên mình gửi bạn hoàn toàn đúng với yêu cầu của bạn. Chỉ khác với bác Giabach về cách làm mà thôi. Cái khác như sau:

1/- Bác Giabach có highlight đối tuong chọn để bạn nhòm thấy, còn mình thì không

2/- Bác giabach chọn tên linetype bằng cách chọn đối tượng mẫu, còn mình bắt bạn phải tự nhập, điều này hình như hơi khó khăn với bạn thì phải. Thực ra đúng là cách của bác Giabach sẽ thuận tiện hơn cho người dùng. Do mình còn thiếu kinh nghiệm nên nghĩ rằng bạn đã biết tương đối về lisp nên việc nhập cái tên đó chả khó khăn gì.

3/- Bây giờ bạn có thể thử lại cái lisp đó với bản vẽ bạn đã post sẽ rõ hơn. Mình đã bổ sung hàm sssetfirst để highlight đối tượng cho bạn thấy rõ. Cách thử như sau:

-load lisp và gõ lệnh ssblt

-khi lisp yêu cầu chọn đối tượng, bạn quét toàn bộ vùng chọn chứa các đối tượng bạn muốn tìm (dùng cửa sổ chẳng hạn). nhấn Enter.

- Khi lisp yêu cầu nhập tên linetype, bạn nhập center (hoặc dash2) là tên hai loại linetype mà bạn đã đánh dấu. (Vì sao có tên này thì bạn tìm hiểu một chút về lisp sẽ hiểu. Mình lấy nó từ hàm (entget (car (entsel))) trước khi chạy lisp). Sau đó bạn nhấn Enter.

Lisp sẽ trả cho bạn bộ chọn được higlight giống hệt như lisp của bác Giabach.

4/- Ấy là nói về cái cũ, còn mình cũng sẽ dựa vào cái lisp của bác Giabach để cải tiến lại cái lisp cũ này cho thuận tiện hơn với người dùng.

Chúc bạn vui.

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

×