Đến nội dung


Hình ảnh

đối tượng + command line


  • Please log in to reply
32 replies to this topic

#1 amateurday

amateurday

    biết lệnh break

  • Members
  • PipPipPipPip
  • 228 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 31 March 2009 - 01:09 AM

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
  • 0

#2 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 31 March 2009 - 07:57 AM

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)))))
  • 2

#3 amateurday

amateurday

    biết lệnh break

  • Members
  • PipPipPipPip
  • 228 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 06 April 2009 - 07:15 PM

Đâ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
  • 0

#4 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 06 April 2009 - 07:34 PM

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?
  • 0

#5 binharch77

binharch77

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 372 Bài viết
Điểm đánh giá: 163 (tàm tạm)

Đã gửi 06 April 2009 - 07:45 PM

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
  • 0

#6 amateurday

amateurday

    biết lệnh break

  • Members
  • PipPipPipPip
  • 228 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 06 April 2009 - 07:54 PM

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
  • 0

#7 binharch77

binharch77

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 372 Bài viết
Điểm đánh giá: 163 (tàm tạm)

Đã gửi 06 April 2009 - 08:03 PM

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ẽ
  • 0

#8 tdvn

tdvn

    biết lệnh rotate

  • Members
  • PipPipPip
  • 134 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 06 April 2009 - 10:26 PM

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))))))
  • 2

#9 amateurday

amateurday

    biết lệnh break

  • Members
  • PipPipPipPip
  • 228 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 08 April 2009 - 01:27 PM

Cái này
(while (setq n (entsel)) (princ (Cdr (assoc 1 (entget (car n))))))


cám ơn bác, thật hay lắm
  • 0

#10 amateurday

amateurday

    biết lệnh break

  • Members
  • PipPipPipPip
  • 228 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 08 April 2009 - 01:29 PM

à, 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.
  • 0

#11 xuangiangtedi

xuangiangtedi

    biết vẽ line

  • Members
  • PipPip
  • 27 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 08 April 2009 - 01:48 PM

à, 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
  • 0

#12 amateurday

amateurday

    biết lệnh break

  • Members
  • PipPipPipPip
  • 228 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 08 April 2009 - 10:44 PM

à, 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á
  • 0

#13 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 08 May 2009 - 11:49 AM

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.
  • 0

#14 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 08 May 2009 - 12:02 PM

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
  • 1

#15 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 08 May 2009 - 02:28 PM

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
  • 0

#16 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 08 May 2009 - 04:19 PM

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)
  • 2

#17 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 08 May 2009 - 04:27 PM

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.
  • 1

#18 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 08 May 2009 - 04:35 PM

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 :(
  • 0

#19 amateurday

amateurday

    biết lệnh break

  • Members
  • PipPipPipPip
  • 228 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 08 May 2009 - 10:27 PM

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é
  • 0

#20 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 08 May 2009 - 10:42 PM

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à.
  • 1