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

đối tượng + command line

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

em có 1 bản vẽ trên đó có chữ và số. bây jờ em muốn nhấp chuột vào đối tượng chữ thì chữ sẽ hiện ở command line, và số cũng vậy, giống như khi mình dùng lệnh lengthen để đo chiều dài đoạn thẳng đó . các bác chỉ cho em với. cám ơn các 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
em có 1 bản vẽ trên đó có chữ và số. bây jờ em muốn nhấp chuột vào đối tượng chữ thì chữ sẽ hiện ở command line, và số cũng vậy, giống như khi mình dùng lệnh lengthen để đo chiều dài đoạn thẳng đó . các bác chỉ cho em với. cám ơn các bác

Đây bạn :

Đánh đoạn mã này vào Command:

(Cdr(assoc 1 (entget(car(entsel)))))

  • 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
Đây bạn :

Đánh đoạn mã này vào Command:

(Cdr(assoc 1 (entget(car(entsel)))))

 

tiện thể bác cho em hỏi luôn, mình muốn không phải gõ lệnh này liên tục, mà gõ 1 lần thôi, nhấp vào đối tượng nó sẽ hiện 1 cách liên tục ở dòng command thì sao ạ.

VD:

Command: (Cdr(assoc 1 (entget(car(entsel)))))

Select object: "100.0000"

Select object: "200.0000"

Select object: "264.6600"

Select object: "300.0000"

cám ơn 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
tiện thể bác cho em hỏi luôn, mình muốn không phải gõ lệnh này liên tục, mà gõ 1 lần thôi, nhấp vào đối tượng nó sẽ hiện 1 cách liên tục ở dòng command thì sao ạ.

VD:

Command: (Cdr(assoc 1 (entget(car(entsel)))))

Select object: "100.0000"

Select object: "200.0000"

Select object: "264.6600"

Select object: "300.0000"

cám ơn bác

Bạn hãy nói rõ hơn ý của bạn đượ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
tiện thể bác cho em hỏi luôn, mình muốn không phải gõ lệnh này liên tục, mà gõ 1 lần thôi, nhấp vào đối tượng nó sẽ hiện 1 cách liên tục ở dòng command thì sao ạ.

VD:

Command: (Cdr(assoc 1 (entget(car(entsel)))))

Select object: "100.0000"

Select object: "200.0000"

Select object: "264.6600"

Select object: "300.0000"

cám ơn bác

chi khổ vậy, bác cứ ctrl+1 ra bảng properties, xem dòng length, cứ click và thằng nào, bảng properties sẽ hiện thông số của thằng đó. đơn giản

 

have fun

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 hãy nói rõ hơn ý của bạn được không?

 

nghĩa là nó khác với thế này, chỉ 1 lần gõ lệnh (Cdr(assoc 1 (entget(car(entsel))))) thôi

 

Command: (Cdr(assoc 1 (entget(car(entsel)))))

Select object: "100.0000"

Command: (Cdr(assoc 1 (entget(car(entsel)))))

Select object: "200.0000"

Command: (Cdr(assoc 1 (entget(car(entsel)))))

Select object: "264.6600"

Command: (Cdr(assoc 1 (entget(car(entsel)))))

Select object: "300.0000"

 

chỉ 1 lần gõ lệnh (Cdr(assoc 1 (entget(car(entsel))))) thôi

Command: (Cdr(assoc 1 (entget(car(entsel)))))

Select object: "100.0000"

Select object: "200.0000"

Select object: "264.6600"

Select object: "300.0000"

 

tại vì em muốn copy các đối tượng này sang bảng excel đó mà, nó phải liên tục mới đượ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
nghĩa là nó khác với thế này, chỉ 1 lần gõ lệnh (Cdr(assoc 1 (entget(car(entsel))))) thôi

 

Command: (Cdr(assoc 1 (entget(car(entsel)))))

Select object: "100.0000"

Command: (Cdr(assoc 1 (entget(car(entsel)))))

Select object: "200.0000"

Command: (Cdr(assoc 1 (entget(car(entsel)))))

Select object: "264.6600"

Command: (Cdr(assoc 1 (entget(car(entsel)))))

Select object: "300.0000"

 

chỉ 1 lần gõ lệnh (Cdr(assoc 1 (entget(car(entsel))))) thôi

Command: (Cdr(assoc 1 (entget(car(entsel)))))

Select object: "100.0000"

Select object: "200.0000"

Select object: "264.6600"

Select object: "300.0000"

 

tại vì em muốn copy các đối tượng này sang bảng excel đó mà, nó phải liên tục mới được

à, tôi hiểu ý của đồng chí rồi.

đồng chí muốn đưa nó và thống kê và chuyển qua exel hử? nếu đúng vậy thì có một cách rất hay và nhanh, nhưng tui xài desktop quen rồi, không biết có thể truyền kinh nghiệm này không (thống kê cực nhanh tất cả tính chất của đối tượng được chọn có trong bản vẽ

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
tiện thể bác cho em hỏi luôn, mình muốn không phải gõ lệnh này liên tục, mà gõ 1 lần thôi, nhấp vào ðối týợng nó sẽ hiện 1 cách liên tục ở dòng command thì sao ạ.

VD:

Command: (Cdr(assoc 1 (entget(car(entsel)))))

Select object: "100.0000"

Select object: "200.0000"

Select object: "264.6600"

Select object: "300.0000"

cám õn bác

 

Cái này

(while (setq n (entsel)) (princ (Cdr (assoc 1 (entget (car n))))))

  • 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
à, tôi hiểu ý của đồng chí rồi.

đồng chí muốn đưa nó và thống kê và chuyển qua exel hử? nếu đúng vậy thì có một cách rất hay và nhanh, nhưng tui xài desktop quen rồi, không biết có thể truyền kinh nghiệm này không (thống kê cực nhanh tất cả tính chất của đối tượng được chọn có trong bản vẽ

 

ý bác là land desktop phải không, nếu được thì bác chỉ cho 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
à, tôi hiểu ý của đồng chí rồi.

đồng chí muốn đưa nó và thống kê và chuyển qua exel hử? nếu đúng vậy thì có một cách rất hay và nhanh, nhưng tui xài desktop quen rồi, không biết có thể truyền kinh nghiệm này không (thống kê cực nhanh tất cả tính chất của đối tượng được chọn có trong bản vẽ

" có một cách rất hay và nhanh" đó là cách gì bác có thể chia sẻ với anh em 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 hiểu ý của đồng chí rồi.

đồng chí muốn đưa nó và thống kê và chuyển qua exel hử? nếu đúng vậy thì có một cách rất hay và nhanh, nhưng tui xài desktop quen rồi, không biết có thể truyền kinh nghiệm này không (thống kê cực nhanh tất cả tính chất của đối tượng được chọn có trong bản vẽ

 

bác này nói xong không quay lại trả lời j cả. làm anh em chờ lâu quá

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ái này

(while (setq n (entsel)) (princ (Cdr (assoc 1 (entget (car n))))))

Chào bác tdvn.

Code của bác thật hay. Nhưng có điều là khi ta pick trật thì Lisp tự động thoát lệnh ngay.

Có cách nào mà khi ta pick trật đối tượng thì sẽ hiện lại dòng Select object : cho ta chọn Pick lại đối tượng không?

Cái này giống như lệnh Lengthen của CAD : Khi pick trật cho phép ta chọn lại đối tượng

Ví dụ :

Command: len

LENGTHEN

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

Enter delta length or [Angle] <0.0000>: 500

 

Select an object to change or [undo]:

Select an object to change or [undo]:

Select an object to change or [undo]:

Select an object to change or [undo]:

Select an object to change or [undo]:

Select an object to change or [undo]:

 

Những dòng:

Select an object to change or [undo]: Nếu ta có pick trật thì vẫn hiện lại cho ta pick trúng đối tượng và thực hiện lệnh lengthen

 

Bác tdvn và các bác trên diễn đàn giúp cho Tue_NV vấn đề này với- Tue_NV đang cần nó lắm.

Cảm ơn tất cả mọi ngườ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
Có cách nào mà khi ta pick trật đối tượng thì sẽ hiện lại dòng Select object : cho ta chọn Pick lại đối tượng không?

thì bác thay đổi điều kiện kiểm tra cho thằng while

Ví dụ:

(setq test t)

(while test

__(setq n (entsel))

__(if (null n)

____(princ "\nChon chua dung!")

____(princ (Cdr (assoc 1 (entget (car n))))))

__)

)

 

Cái này dùng phím ESC để thoát vòng lặp

  • 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
thì bác thay đổi điều kiện kiểm tra cho thằng while

Ví dụ:

(setq test t)

(while test

__(setq n (entsel))

__(if (null n)

____(princ "\nChon chua dung!")

____(princ (Cdr (assoc 1 (entget (car n))))))

__)

)

 

Cái này dùng phím ESC để thoát vòng lặp

Cảm ơn Nataca. Điều kiện vòng lặp while trên thì điều kiện luôn luôn đúng. Chỉ có cách dùng phím ESC để thoát vòng lặp. Có cách nào để nhấn phím Enter để kết thúc vòng lặp không Nataca? Nó tương tự như lệnh LENGTHEN

của CAD nó cho phép khi ta pick trật đối tượng thì sẽ hiện lại dòng Select object : cho ta chọn Pick lại đối tượng và kết thúc vòng lặp bằng phím Enter hoặc Esc

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ảm ơn Nataca. Điều kiện vòng lặp while trên thì điều kiện luôn luôn đúng. Chỉ có cách dùng phím ESC để thoát vòng lặp. Có cách nào để nhấn phím Enter để kết thúc vòng lặp không Nataca? Nó tương tự như lệnh LENGTHEN

của CAD nó cho phép khi ta pick trật đối tượng thì sẽ hiện lại dòng Select object : cho ta chọn Pick lại đối tượng và kết thúc vòng lặp bằng phím Enter hoặc Esc

anh thử dùng đoạn code này xem sao

(setq mouse nil)
(while (/= (car mouse) 2)
       (setq mouse (grread 0 15 2))
	(if (= (car mouse) 3)
		(progn
			(setq	p1	(mapcar '+ (cadr mouse) '(0.1 0.1))
					p2	(mapcar '- (cadr mouse) '(0.1 0.1))
					ent (ssget "c" p2 p1)
			)
			(if (and ent (assoc 1 (entget (ssname ent 0))))
				(princ (strcat "\n<Enter de ket thuc>:" (Cdr (assoc 1 (entget (ssname ent 0))))))
				(princ "\nKhong phai text!")
			)
		)
  	)
)

'(0.1 0.1) là em lấy với khoảng cách ví dụ . Nếu là các đối tượng ngoài text thì chọn sẽ dễ hơn bằng nentselp (giống thằng lengthen)

  • 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
anh thử dùng đoạn code này xem sao

(setq mouse nil)
(while (/= (car mouse) 2)
       (setq mouse (grread 0 15 2))
	(if (= (car mouse) 3)
		(progn
			(setq	p1	(mapcar '+ (cadr mouse) '(0.1 0.1))
					p2	(mapcar '- (cadr mouse) '(0.1 0.1))
					ent (ssget "c" p2 p1)
			)
			(if (and ent (assoc 1 (entget (ssname ent 0))))
				(princ (strcat "\n<Enter de ket thuc>:" (Cdr (assoc 1 (entget (ssname ent 0))))))
				(princ "\nKhong phai text!")
			)
		)
  	)
)

'(0.1 0.1) là em lấy với khoảng cách ví dụ . Nếu là các đối tượng ngoài text thì chọn sẽ dễ hơn bằng nentselp (giống thằng lengthen)

Tuyệt lắm Nataca. Mình đang viết một tiện ích nhỏ đang cần dùng đến cái này. Tue_NV đang trong giai đoạn viết nó và muốn chia sẻ cho mọi người. Có gì thì Nataca góp ý thêm nhé.

Cảm ơn Nataca rất nhiều.

  • 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
Tuyệt lắm Nataca. Mình đang viết một tiện ích nhỏ đang cần dùng đến cái này. Tue_NV đang trong giai đoạn viết nó và muốn chia sẻ cho mọi người. Có gì thì Nataca góp ý thêm nhé.

Cảm ơn Nataca rất nhiều.

Vâng. Em sẵn sà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
Vâng. Em sẵn sàng :(

 

bác nataca cho em hỏi, em muốn vẫn sử dụng code của bác tdvn là :

(while (setq n (entsel)) (princ (Cdr (assoc 1 (entget (car n))))))

 

nhưng mỗi lần pick trật thì không thoát lệnh, và cũng không có gì thay đổi, (xem như pick trật = chưa pick) cho đến khi mình pick trúng thì thôi. có được không bác. cám ơn bác 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
bác nataca cho em hỏi, em muốn vẫn sử dụng code của bác tdvn là :

(while (setq n (entsel)) (princ (Cdr (assoc 1 (entget (car n))))))

 

nhưng mỗi lần pick trật thì không thoát lệnh, và cũng không có gì thay đổi, (xem như pick trật = chưa pick) cho đến khi mình pick trúng thì thôi. có được không bác. cám ơn bác nhé

(setq mouse nil)
(while (/= (car mouse) 2)
       (setq mouse (grread 0 15 2))
	(if (= (car mouse) 3)
		(progn
			(setq	p1	(mapcar '+ (cadr mouse) '(0.1 0.1))
					p2	(mapcar '- (cadr mouse) '(0.1 0.1))
					ent (ssget "c" p2 p1)
			)
			(if (and ent (assoc 1 (entget (ssname ent 0))))
				(princ (strcat "\n" (Cdr (assoc 1 (entget (ssname ent 0))))))
			)
		)
  	)
)

cái này thực ra vẫn tốt mà.

  • 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
(setq mouse nil)
(while (/= (car mouse) 2)
       (setq mouse (grread 0 15 2))
	(if (= (car mouse) 3)
		(progn
			(setq	p1	(mapcar '+ (cadr mouse) '(0.1 0.1))
					p2	(mapcar '- (cadr mouse) '(0.1 0.1))
					ent (ssget "c" p2 p1)
			)
			(if (and ent (assoc 1 (entget (ssname ent 0))))
				(princ (strcat "\n" (Cdr (assoc 1 (entget (ssname ent 0))))))
			)
		)
  	)
)

cái này thực ra vẫn tốt mà.

 

thỉnh thoảng em pick 1:6 nó ra thế này

{\H0.75x;1:6} thay vì 1:6

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ỉnh thoảng em pick 1:6 nó ra thế này

{\H0.75x;1:6} thay vì 1:6

Nhiều khả năng là vì đối tượng bạn pick là MTEXT chứ không phải TEXT.

  • 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
Nhiều khả năng là vì đối tượng bạn pick là MTEXT chứ không phải TEXT.

 

hiện tại thì em cũng chỉ dùng code của bác tdvn, nhưng em thấy bác nataca có cách hay nên hỏi thêm, bây giờ lại thêm mtext với text nữa, em thì chưa gặp mtext, nhưng sau này không biết có gặp không, mong bác Hoành và các bác giúp làm cho hoàn thiện code trên được không ạ, chỉ cần pick là nó ra, pick trật thì như chưa pick, pick đuợc cả mtext và text luôn. cám ơn các bác 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
hiện tại thì em cũng chỉ dùng code của bác tdvn, nhưng em thấy bác nataca có cách hay nên hỏi thêm, bây giờ lại thêm mtext với text nữa, em thì chưa gặp mtext, nhưng sau này không biết có gặp không, mong bác Hoành và các bác giúp làm cho hoàn thiện code trên được không ạ, chỉ cần pick là nó ra, pick trật thì như chưa pick, pick đuợc cả mtext và text luôn. cám ơn các bác nhé.

Thực ra thì cũng có cách giải quyết được. Nhưng mà theo mình bài toán thực tế của bạn nếu đi theo hướng khác thì hay hơn. Bạn up file bản vẽ lên, trong file bản vẽ chỉ ra những text nào cần đưa ra bảng excel. Và file excel mẫu có thể hiện cách trình bày kết quả đưa ra. Như thế sẽ giải quyết bài toán tận gốc, giúp bạn tiết kiệm thời gian hơ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

hiện tại thì em mới chỉ dùng đến text thôi nên chưa có bản vẽ để up lên, để sau này nếu gặp thì nhờ các bác vậy. Cám ơn các 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

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  

×