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

dovananh.xd

Thành viên
  • Số lượng nội dung

    185
  • Đã tham gia

  • Lần ghé thăm cuối

Bài đăng được đăng bởi dovananh.xd


  1. Vào lúc 15/1/2020 tại 09:28, gia_bach đã nói:

    Thử lisp này nhé.

    
    ;@ketxu
    (vl-load-com)
    (if (null dmtd)
      (setq dmtd (vlr-command-reactor nil '((:vlr-unknownCommand . doimau)))))
    ;;*********************************************************************
    (defun doimau (calling-reactor endcommandInfo / Layer_Key)
      (setq Layer_Key (strcase (nth 0 endcommandInfo)))
      (if (and (= (strlen (rtos (atoi Layer_Key) 2 0))(strlen Layer_key))(< (atoi Layer_key) 257))(doimaufunc)(princ "\nChua co lenh nao nhu the nay")))
    ;;*********************************************************************
    (defun doimaufunc (/ dis1 ss)
      (setq col (atoi Layer_Key)  ss (ssget))
      (if ss (foreach a (mapcar 'vlax-ename->vla-object (ST:Ss->lstEnt ss ) ) (vla-put-color a col))(princ)) )
    
    (defun ST:Ss->lstEnt (ss / n e l)
     (setq n (sslength ss))
     (while (setq e (ssname ss (setq n (1- n))))
       (setq l (cons e l)) ))

     

    Vâng. Em cảm ơn nhiều ạ!

     


  2. Vào lúc 17/7/2011 tại 22:19, ketxu đã nói:

    Tiếp tục 1 ví dụ nữa, áp dụng UnknownCommand cho phép đặt lệnh tắt đổi màu đối tượng. Thay vì tạo hàng loạt hàm c:1,2,3... để đổi sang màu tương ứng, ta sẽ chỉ dùng duy nhất 1 Reactor sau :

     

    • cadvietlisp.lsp
      lisp help
    •  
    
    ;@ketxu
    (vl-load-com)
    (if (null dmtd)
    (setq dmtd (vlr-command-reactor nil '((:vlr-unknownCommand . doimau)))))
    ;;*********************************************************************
    (defun doimau (calling-reactor endcommandInfo / Layer_Key)
    (setq Layer_Key (strcase (nth 0 endcommandInfo)))
    (if (and (= (strlen (rtos (atoi Layer_Key) 2 0))(strlen Layer_key))(< (atoi Layer_key) 257))(doimaufunc)(princ "\nChua co lenh nao nhu the nay"))
    )
    ;;*********************************************************************
    (defun doimaufunc (/ dis1 ss)
    (setq col (atoi Layer_Key)  ss (ssget)) 
    (if ss (foreach a (mapcar 'vlax-ename->vla-object (ST:Ss->lstEnt ss ) ) (ST:Ent-PutColor a col))(princ)) 
    )
    (defun ST:Ent-PutColor  (obj color_use) ;vla-object
    (if (wcmatch (getvar "acadver") "16*,17*,18*")
       (setq vla_truecolor
       (vla-getinterfaceobject
         (vlax-get-acad-object)
         (cond
           ((wcmatch (getvar "acadver") "16*")
     "AutoCAD.AcCmColor.16")
           ((wcmatch (getvar "acadver") "17*")
     "AutoCAD.AcCmColor.17")
           ((wcmatch (getvar "acadver") "18*")
     "AutoCAD.AcCmColor.18")))))
    (if (wcmatch (getvar "acadver") "16*,17*,18*")
      (progn
         (vla-put-colorindex
    vla_truecolor
    color_use)
         (if obj
    (vla-put-truecolor obj vla_truecolor)))
       (if (wcmatch (getvar "acadver") "15*")
         (vla-put-color obj color_use)))
     (vlax-release-object vla_truecolor)
     (setq vla_truecolor nil))
    
    
    (defun ST:Ss->lstEnt (ss / n e l)
     (setq n (sslength ss))
     (while (setq e (ssname ss (setq n (1- n))))
       (setq l (cons e l))
     )
    )
     

     

    Bây giờ, muốn đổi màu đối tượng sang màu nào, hãy nhấn số và chọn các đối tượng ^^

    Reactor quả có thú vị ^^

    bác Ketxu ơi. Cái lisp này sao không sử dụng được cho CAD2019 vậy ạ? Bác sửa lại giúp em với

    Em cảm ơn!


  3. Các anh em trên diễn đàn cho em hỏi cái cách làm block như file em gửi. Đó là một file block dynamic. Block có thể kéo dãn đối tượng.

    Mong muốn của mình đó là kéo dãn đối tượng thì các đối tượng bên trong cũng kéo dãn theo (Giống như trong file mình gửi). Mình chỉ làm được kéo dãn phần biên chứ lõi không chạy theo. Mình đã tìm kiếm nhiều trên diễn đàn, xem các clip nhưng không thấy clip nào hướng dẫn rõ về vụ này. Mong các pro chỉ dẫn. Thanks!

    Thu_nghiem.dwg


  4. Block của bạn Scale X =-1 (do đó trong model block bị lật lại). Do bạn không để ý, thử nhìn lại tại trục 3A, 8A có thay đổi gì không? Hoặc khi sửa block, tại vị trí sửa cửa, bạn thử vẽ thêm 1 vòng tròn bao quanh cửa cho dễ phát hiện, thoát khỏi Bedit và kiểm tra.

    Cảm ơn bạn đã trả lời. Bây giờ lỗi là như thế rồi thì sửa lại như thế nào? 


  5. Cho em xin mượn topic này chút. File cad của em bị lỗi như thế này: Em vào trong block sửa xong, lưu lại và thoát ra, thế nhưng trong model thì không thấy thay đổi gì, vẫn y nguyên như ban đầu. Em click vào sửa block thì vẫn thấy đã thay đổi như ý mình đã sửa. Thoát ra khỏi màn hình edit block thì lại không  thay đổi gì???89140_loi.png89140_capture.pnghttp://www.cadviet.com/upfiles/7/89140_aac1.dwg

    Mong các pro xem giúp em trường hợp này với. Xin cảm ơn!


  6. Cho em xin mượn topic này chút. File cad của em bị lỗi như thế này: Em vào trong block sửa xong, lưu lại và thoát ra, thế nhưng trong model thì không thấy thay đổi gì, vẫn y nguyên như ban đầu. Em click vào sửa block thì vẫn thấy đã thay đổi như ý mình đã sửa. Thoát ra khỏi màn hình edit block thì lại không  thay đổi gì???89140_loi.png89140_capture.pnghttp://www.cadviet.com/upfiles/7/89140_aac1.dwg

    Có bác nào để ý dùm em cái này với. Em chưa biết xử lý thế nào cả.Mong các Pro chỉ giáo


  7. Cho em xin mượn topic này chút. File cad của em bị lỗi như thế này: Em vào trong block sửa xong, lưu lại và thoát ra, thế nhưng trong model thì không thấy thay đổi gì, vẫn y nguyên như ban đầu. Em click vào sửa block thì vẫn thấy đã thay đổi như ý mình đã sửa. Thoát ra khỏi màn hình edit block thì lại không  thay đổi gì???89140_loi.png89140_capture.pnghttp://www.cadviet.com/upfiles/7/89140_aac1.dwg


  8. Bạn xem lại có bị nhầm không đấy? Tôi test vẫn bình thường trên bản vẽ của bạn.

    1). Dòng trên cùng: dùng HAU2T để chuyển từ Unicode sang TCVN3, chọn text trên cùng, chọn 1 style là TCVN3 làm mẫu: OK

    2). Dòng dưới cùng: dùng HAT2U để chuyển từ TCVN3 sang Unicode, chọn text dưới cùng, chọn 1 style là Unicode làm mẫu: OK

    Em làm thì tại sao lại không được nhỉ, rõ chán! Chữ nào cũng thêm một dấu "#" vào và đuôi là số chứ không phải là chữ.

    Em làm đúng như bác: có 2 dòng, dòng trên dùng font Tahoma, bảng mã unicode; dòng 2 font .VnHelvetInsH bảng mã TCVN3

    Muốn đổi dòng một giống như dòng 2, em làm như sau:

    1/ Gõ lệnh HAU2T, khi select objects thì chọn dòng 1

    Command: hau2t

     

    Chon cac Text UNICODE can chuyen sang TCVN3...

    Select objects: 1 found

     

    Select objects:

    Chon Text de lay Font TCVN3 mau:

     

    Command:

    nó được thế này:

    89140_1_1.jpg

    2/ Gõ lệnh HAT2U, khi select objects thì chọn dòng 2

     

    Command: hat2u

     

    Chon cac Text TCVN3 can chuyen sang UNICODE...

    Select objects: 1 found

     

    Select objects:

    Chon Text de lay Font Unicode mau:

     

    Command:

    Thi nó được thế này:

    89140_2_1.jpg


  9. @Doan Van Ha: Bạn đọc kỹ các dòng lệnh! Khi có câu "Chon Text de lay Font TCVN3 mau:" thì bạn phải chọn 1 text được viết bằng TCVN3 để làm style mẫu sẽ chuyển qua. Nếu chưa có nó thì bạn tự tạo ra nó để làm mẫu.

    Em làm đúng như thế thì nó ra như thế cái hình ở trên kia mà anh. tất nhiên là đã có mẫu sẵn được gõ bằng TCVN3!

     

    @Doan Van Ha: Hỏi thêm: khi bạn dùng lisp nghia thì chuyển xong nó ra font name là gì?

    TL: Nó vẫn giữ nguyên font cũ của text đó, nhưng sau khi chuyển thì chưa đọc được, chỉ cần chuyển font là đọc được!


  10. LIsp này dùng để: Chuyển text trên bản vẽ, từ TCVN3 => UNICODE, và ngược lại, từ UNICODE => TCVN3.

    Không ổn rồi anh Hà ơi.

    Em dùng cái lisp Nghia.lsp kia thấy ổn nhưng có điều không đổi ngược lại được từ Unicode sang TCVN3

    Còn lisp của anh gửi trên đủ 2 chiều nhưng bị lỗi. Ví dụ như đoạn text của em là thế này: "đá hộc không phân loại t=50cm" gõ bằng bảng mã Unicode, em muốn chuyển sang TCVN3. Sau khi dùng lisp của anh thì nó ra thế này:

    89140_untitled_2.jpg

    Anh xem lại giúp em với

×