Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Polyline

SSGET và STRCASE

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

Polyline    18

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
Tot77    501

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
Polyline    18

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
Doan Van Ha    2.676

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
Polyline    18

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
Tot77    501

. 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
Doan Van Ha    2.676

#. 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
Polyline    18

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
Doan Van Ha    2.676

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


×