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

SSGET và STRCASE

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

Mình muốn sử dụng hàm SSGET để chọn text đã có sẵn trên bản vẽ, bỏ qua thuộc tính STRCASE của nó, nghĩa là khi người dùng nhập vào "abc" thì tất cả các text sau đây đều bị chọn:
ABC
ABc
AbC
aBC
Abc
abC
aBc
abc

Liệu có thể thực hiện trực tiếp với SSGET được không, không cần sử dụng vòng lặp?

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 thử cái này.

(ssget '((0 . "TEXT") (1 . "@@@") (1 . "*[Aa]*[bb]*[Cc]")))

Cái số 1 đầu là text chỉ có 3 chữ thôi, cái 1 số 2 là chỉ có hoặc A hoặc a (1 trong 2) và theo thứ tự abc, khác là không được.

Hoặc có thể viết gọn hơn:

(ssget '((0 . "TEXT") (1 . "[Aa][bb][Cc]")))

  • 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

Cám ơn bạn Tot77 đã gợi ý. Mình viết lại cho trường hợp tổng quát thế này:

 

(setq str1 "abc"
      str2 ""
      i 0)
(while (<= (setq i (1+ i)) (strlen str1))
  (setq str2 (strcat str2 "[" (strcase (substr str1 i 1))(strcase (substr str1 i 1) T) "]")))
(ssget (list (cons 1 str2)))

 

(mình không cho thẻ code vào được, nhờ MOD nào giúp 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âu hỏi của Polyme không được rõ ràng cho lắm, vì:

1). "abc" chỉ là ví dụ, nhưng cuối cùng lại coi như nó là cố định?

2). Không muốn dùng vòng lặp nhưng lại xài while?

  • 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

Câu hỏi của Polyme không được rõ ràng cho lắm, vì:

1). "abc" chỉ là ví dụ, nhưng cuối cùng lại coi như nó là cố định?

2). Không muốn dùng vòng lặp nhưng lại xài while?

 

1. Mình đưa (setq str1 "abc") chỉ là ví dụ cho dễ hình dung thôi. Khi viết thì sẽ gọi hàm GETSTRING.

2. Ý mình nói không dùng vòng lặp, nghĩa là không chọn text trước rồi sau đó duyệt qua nội dung để so sánh với chuỗi nhập vào. Vì việc làm này sẽ tốn nhiều thời gian khi bản vẽ có số lượng text lớn.

#. Có một chút băn khoăn về STRCASE khi chỉ các ký tự A-Z mới khác nhau, còn lại (như con số và ký tự đặc biệt) thì 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

. Có một chút băn khoăn về STRCASE khi chỉ các ký tự A-Z mới khác nhau, còn lại (như con số và ký tự đặc biệt) thì không.

Có gì mà phải băn khoăn? bạn dùng hàm ascii, nếu trong khoảng 65-122 thì bỏ trong ngoặc, ngoài khoảng đó thì để nguyê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

#. Có một chút băn khoăn về STRCASE khi chỉ các ký tự A-Z mới khác nhau, còn lại (như con số và ký tự đặc biệt) thì không.

Cứ mặc kệ nó, là từ a-z hay ký tự đặc biệt thì vẫn cho vào ngoặc vẫn vô tư.

  • 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

Cứ mặc kệ nó, là từ a-z hay ký tự đặc biệt thì vẫn cho vào ngoặc vẫn vô tư.

Với ssget thì có khác nhau về bản chất đấy bác ạ! Ví dụ chuỗi "*[bb][Cc]" cho phép ký tự đại diện, còn chuỗi "[**][bb][Cc]" thì 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 vì từ đầu bạn nói chọn chuỗi tường minh chứ không phải chọn chuỗi chứa ký tự đại diện * nên tôi mới bảo là được.

Chẳng hạn [??][Aa][bb] thì chọn được "?ab". Còn chứa ký tự đại diện thì bạn nói đúng 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

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

×