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

Chon text trong autolist

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

Chao moi nguoi trong dien dan, minh la mem moi, xin moi nguoi giup cho van de nay:

 

Mình có viết 1 list cộng nhiều text (số integer) theo 1 trật tự nhất định. Mình gặp phải vấn đề chọn text theo cửa sổ nó không theo đúng trật tự mình muốn, text nào tạo ra trước được chọn trước bởi vậy việc cộng không theo đúng trật tự (minhdùng hàm ssget để chọn đói tượng).

 

ví dụ: trên bản vẽ cad mình có những text này:

 

a b c d e f g

 

Mục đích list mình viết: - quét chọn các đối tượng bản vẽ

- c =a +b rồi d= c+b rồi e= c+d........ Nhưng nếu các text không tạo ra đúng trật tự thì việc cộng bi sai

 

Xin các bạn chỉ mình cách khắc 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
Chao moi nguoi trong dien dan, minh la mem moi, xin moi nguoi giup cho van de nay:

 

Mình có viết 1 list cộng nhiều text (số integer) theo 1 trật tự nhất định. Mình gặp phải vấn đề chọn text theo cửa sổ nó không theo đúng trật tự mình muốn, text nào tạo ra trước được chọn trước bởi vậy việc cộng không theo đúng trật tự (minhdùng hàm ssget để chọn đói tượng).

 

ví dụ: trên bản vẽ cad mình có những text này:

 

a b c d e f g

 

Mục đích list mình viết: - quét chọn các đối tượng bản vẽ

- c =a +b rồi d= c+b rồi e= c+d........ Nhưng nếu các text không tạo ra đúng trật tự thì việc cộng bi sai

 

Xin các bạn chỉ mình cách khắc phục

Bạn thử làm ví dụ sau:

Tạo 1 đối tượng text. Tại dòng command, nhập:

Command: (setq d (entget (car (entsel))))

Select object: chọn đối tượg text nói trên, kết quả nhận được có dạng:

((-1 . ) (0 . "TEXT") (330 .

name: 40077cf8>) (5 . "2D0") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 .

"0") (100 . "AcDbText") (10 130.193 147.152 0.0) (40 . 2.5) (1 . "1") (50 .

0.0) (41 . 0.7) (51 . 0.0) (7 . "vnsimple") (71 . 0) (72 . 0) (11 0.0 0.0 0.0)

(210 0.0 0.0 1.0) (100 . "AcDbText") (73 . 0))

Ngoài Entity name, bạn chú ý ở DXF 5 có chuỗi "2D0", đó là chuỗi số hexa, gọi là Handle (tạm gọi là bí danh) của entity. Handle tồn tại cùng với entity, không trùng nhau và theo quy luật: cái tạo ra sau có handle lớn hơn cái tạo ra trước. Bạn so sánh handle sẽ biết thứ tự tạo thành của chúng.

 

Để lấy handle: (setq hd (cdr (assoc 5 d)))

Nhân tiện nói thêm, để lấy entity từ handle: (setq e (handent hd))

 

Hy vọng rằng bạn đã hiểu và tự xử lý đượ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

Mình cảm ơn bạn. Mình hiểu ý bạn, nhưng các text trên bản vẽ của mình lại không được sắp xếp theo thứ tự được tao ra, nên việc biết text nào tạo ra trước hay sau cũng không có ý nghĩa. Vậy bạn có cách nào không, chỉ mình 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
Mình cảm ơn bạn. Mình hiểu ý bạn, nhưng các text trên bản vẽ của mình lại không được sắp xếp theo thứ tự được tao ra, nên việc biết text nào tạo ra trước hay sau cũng không có ý nghĩa. Vậy bạn có cách nào không, chỉ mình với.

Thế text của bạn sắp xếp theo thứ tự nào?

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ế text của bạn sắp xếp theo thứ tự nào?

 

Text của mình sắp xếp thế này:

 

Ví dụ:

a b c d e f g h .......

 

a=b+c rồi thì e= d+c rồi thì g= e+f .... cứ như vậy cho đến hết, mục đích mình viết list là vậy. Các text không có thứ tự tạo ra trước hay sau

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ế text của bạn sắp xếp theo thứ tự nào?

 

Text của mình sắp xếp thế này:

 

Ví dụ:

a b c d e f g h .......

 

a=b+c rồi thì e= d+c rồi thì g= e+f .... cứ như vậy cho đến hết, mục đích mình viết list là vậy. Các text không có thứ tự tạo ra trước hay sau

thế thì bạn sắp xếp theo giá trị X của điểm chèn text!

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ế thì bạn sắp xếp theo giá trị X của điểm chèn text!

 

 

Cách làm theo trục X hay Y mình cũng làm rồi, nhưng nó hơi mất công 1 chút là phải hỏi người dùng là chọn theo truc X hay Y. Không biết bạn còn cách nào không ?

 

Nhân đây bạn Nguyen Hoanh cho mình hỏi là ký tự nào đại diện cho các con số khi mình muốn Replace ?

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ách làm theo trục X hay Y mình cũng làm rồi, nhưng nó hơi mất công 1 chút là phải hỏi người dùng là chọn theo truc X hay Y. Không biết bạn còn cách nào không ?

 

Nhân đây bạn Nguyen Hoanh cho mình hỏi là ký tự nào đại diện cho các con số khi mình muốn Replace ?

 

hoàn toàn không hiểu vấn đề của bạn.

 

- Tại sao lại phải hỏi người dùng là chọn X hay Y? khi các chữ viết từ trái qua phải thì mặc nhiên là được sắp xếp theo X mà không cần phải hỏi.

- "ký tự nào đại diện cho các con số khi mình muốn Replace", không hiểu bạn hỏi gì bởi không biết bạn đang dùng thuật toán, hàm hay lệnh nào để replace.

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ế thì bạn sắp xếp theo giá trị X của điểm chèn text!

 

Cảm ơn ban, chắc chỉ còn cách này thôi, vì text của mình khi thì nó theo truc X khi thì Y, có lúc thì cần cộng theo chiều tăng, chiều giảm trục X, Y nên cũng hơi rườm rà khi dùng vì phải hỏi 2 lần. Không biết bạn có cách nào khác đơn giản hơn không ?

 

Mình có dùng cái lệnh Tcount mà bản chỉ.

Ví dụ: mình có nhiều text c3 c4 c5 c6 c7 c8 c9 c10 ......

Khi dùng Tcount mình đã xếp lại được c3 1 c4 2 c5 3 c6 4 c7 5 c7 6 c8 7 c9 8 c10 9

Làm sao để bỏ đi các số 3 4 5 6 7 8 9 10 để còn lại các text minh muốn là c1 c2 c3 c4 c5 c6 c7 c8 c9

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

Góp ý:

Bạn là programmer, phải biết cách diễn đạt rõ ràng để người khác hiểu chính xác vấn đề của bạn. Người khác không phải là bạn, hoàn toàn chưa có một khái niệm gì về việc bạn đang làm. Thú thật, đọc một loạt bài trao đổi, mình cũng chưa hiểu ý bạn muốn gì!

Lưu ý thêm, ssget bằng bằng select window không sắp xếp các thành phần trong ss theo thứ tự tạo thành của các entities. Chính vì vậy, ngay bài đầu tiên, mình đã hiểu sai vấn đề là bạn muốn chọn theo thứ tự tạo thà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

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

×