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

ngokiet

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

    404
  • Đã tham gia

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

  • Ngày trúng

    43

Bài đăng được đăng bởi ngokiet


  1. 1 giờ} trướ}c, huunhantvxdts đã nói:

    Rãnh rỗi viết tí cho vui

    bạn test thế nào nhé

    
    (defun c:dempoint (/ sspoint sopoint text)
    (prompt "\nChon point can dem")
    (While (setq sspoint (acet-ss-to-list (ssget '((0 .  "POINT")))))
    (setq sopoint (length sspoint))
    (setq text (car (entsel "\nChon text thay the:")))
     (vla-put-textstring (vlax-ename->vla-object text) (rtos sopoint 2 0))
    )
    (princ)
    )

     

    Bác đúng là rảnh thật. Sao ko dùng sslength mà đổi qua dùng length list. và itoa thay rtos?


  2. Có bác nào gởi lisp lên https://apps.autodesk.com/en bán không?

    Mình thấy có app mplot của vn đấy. Bác nào có lisp gì hay thì để lên bán.

    Hay làm cái apps.cadviet đi. Mấy bác cứ viết lisp free như thế thì có mấy ai thèm học lisp. Nếu bạn nào học lisp mình rất thích việc diễn đàn bổ sung, chia sẻ kinh nghiệm lập trình. Còn lisp free thì mình thấy không nên. Đồ nghề cho việc kiếm tiền cúa mình mà đòi free

    • Like 2

  3. Mã dxf 210 là pháp vecto của mặt phẳng chứa block đó. 

    Nếu thay đổi mặt phẳng thì nó thay đổi vị trí.

    Do block nó nằm nghiêng nên thay đổi code 210 sẽ lỗi thôi

    Code 210 có 3 giá trị tổng bình phương là 1.

    Bạn muốn lấy giá trị thì bạn phải dùng chuyển trục toạ độ thôi.

    Bạn thử tham khảo https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/dxf-codes-10-and-210-formula/td-p/1132777/page/2

     Mình ko trên máy nên chưa test.

    • Like 1
    • Vote tăng 1

  4. 12 phút trước, Ngo Van Tam đã nói:

    Em Cảm ơn Các bác đã trợ giúp ạ. Em chưa hiểu lắm về ename của đối tượng.
    Em ví dụ code của em vẽ line ntn thì ename của nó là vcd1 đúng không ak
    Mong bác ngokiet giúp đỡ
    (setq vcd1 (ssadd))
      (command "line" v3 v4 "")
      (ssadd (entlast) vcd1)

    Ename là (entlast) sau lệnh command đó.

    • Like 1

  5. 1 giờ} trướ}c, mr.thanh2610 đã nói:

     

    2 bác lỡ giúp rồi giúp em cú chót luôn được không 2 bác, tại em đang làm nhiệm vụ chỉnh lại tất cả bản vẽ của mấy anh em vẽ layer rất lung tung, đa số đổi màu nên giờ phải chỉnh lại rất mất công, nhờ vả 2 bác cú chót nhé , cảm ơn

    bác có thể tắt các layer. màu khác rồi dùng lệnh mà. mấy hôm nay bận quá.

    • Vote tăng 1

  6. 9 phút trước, mr.thanh2610 đã nói:

    Em mới sửa lại nội dung, sợ 2 bác không để ý nên em mạn phép Quote lại, nhờ 2 bác Biet ve CadNgokiet ngâm cứu giúp nhé,:)

    Lisp minh chỉ lọc màu theo 2 kiểu.

    - Cái số 2,5 của bạn thỉ option B là được.

    - Cái số 3 của bạn thì option A là được. đừng chọn mẫu bylayer.

    Bạn cứ test thử A hay B xem cái nào đúng ý bạn. Nếu yêu cầu cùng layer thì dùng lênh layiso. Còn lại do bạn chọn mẫu mà thôi.

    Nếu cần trường hợp nào thì bạn nên đưa ví dụ như

     

    Mẫu là bylayer ở layer màu x muốn chọn các obj màu x và layer màu x.

    Như vây là option B.

     

     

     


  7. 2 phút trước, Biet ve CAD đã nói:

    Không biết có cần lọc tuyệt đối ko vì chọn mẫu là cons 62 thì nó vẫn lấy cả truecolor ( ví dụ mẫu là RED, truecolor là 254,0,0 hoặc 255,0,0)

    Nhưng theo mình nếu đã là truecolor và cons 62 vẫn phải tách riêng nhau ( nếu truecolor nó trả về gần màu cons 62 thì đành chịu )

    Thì vậy. Do Cad nó bổ sung truecolor nên rắc rối vậy. Cái cons 62 chỉ có 255 màu còn truecolor nó nhiều màu hơn bao gồm cả 255 màu kia. Nhưng theo mình biết thì nó khác nhau 1 chút là nếu màu red bên truecolor thì nó in ra màu không lệ thuột màu red của nét vẽ.


  8. 19 phút trước, mr.thanh2610 đã nói:

    Cảm ơn bác, mình đã thử và 1 và 4 rất tốt.Còn 2 và 3 thì ý mình là theo của bác Ngo Kiet bên dưới, nếu gộp 2 lisp của bác lại thì hoàn chỉnh luôn và bổ sung thêm cái 4 chọn nhiều mẫu cùng 1 lúc thì hoàn hảo luôn ^_^ 

     

    Cảm ơn bác, hai bác có thể gộp lại giúp em 2 cái lisp của bác với bác Biet ve CAD thì hoàn hảo :)

    À mà mình góp ý  1 trường hợp nữa mà mình gọi là trường hợp 5.Chọn tất cả các color có màu tùy chon (ngược lại với cái "1. theo bylayer : miễn là color là bylayer thì sẽ chọn" của bác Biet ve CAD)

    P/S: Cảm ơn anh em nhiều, anh em nhiệt tình quá, ngày nay Vote nhiều nên hết lượt nên anh em thông cảm nếu không Vote được nhé , xin cảm ơn

    Bác sử dụng lisp của mình thì 

    - Cái số 1 . Bạn chọn object bylayer chọn option A thì giống bác Biết vẽ CAD.

    - Cái số 4,5. Thì bạn chọn option B là ok.


  9. 9 phút trước, Biet ve CAD đã nói:

    Vừa chạy thử lisp, nếu mẫu là truecolor thì lọc chuẩn đối tượng truecolor, còn mẫu là màu cons 62 thì lấy luôn cả màu truecolor gần giống màu cons 62 ấy

    Ok. Mình biết hơi nhầm ở chỗ nào rồi. Ở phần chọn layer có màu giống mẫu. Để suy nghĩ cách sửa.

     

    - Đã sửa lại ở trên rồi.


  10. (defun c:sscolor(/ lays objm y x420 x62 lays)
      (princ "\nSelect obj mau:")
      (or (setq objm (acet-ss-to-list (ssget))) (exit))
      (initget "A B")
      (if (eq (getkword "Chon kieu [A Theo thuoc tinh/B Theo the hien]") "B")
        (progn
          (foreach x objm
    	(cond ((setq y (cdr(assoc 420 (setq x (entget x)))))
    	       (or (member y x420) (setq x420 (cons y x420))))
    	      ((setq y (cdr(assoc 62 x)))
    	       (or (member y x62) (setq x62 (cons y x62))))
    	      ((setq y (cdr(assoc 420 (setq x (entget (tblobjname "Layer" (cdr(assoc 8 x))))))))
    	       (or (member y x420) (setq x420 (cons y x420))))
    	      ((setq y (cdr(assoc 62 x)))
    	       (or (member y x62) (setq x62 (cons y x62))))))
          (vlax-for x (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
    	(setq x (entget(vlax-vla-object->ename x)))
    	(if (or (member (cdr (assoc 420 x)) x420) (and (not (cdr (assoc 420 x))) (member (cdr (assoc 62 x)) x62)))
    	  (setq Lays (if lays (strcat lays "," (cdr(assoc 2 x))) (cdr(assoc 2 x))))))
          (sssetfirst nil (ssget
    			(append '((-4 . "<OR"))
    				(mapcar '(lambda(a) (cons 62 a)) x62)
    				(mapcar '(lambda(a) (cons 420 a)) x420)
    				(if lays
    				  (list '(-4 . "<AND") (cons 8 lays) '(62 . 256) '(-4 . "AND>")))
    				'((-4 . "OR>"))))))
        (progn
          (foreach x objm
    	(cond ((setq y (cdr(assoc 420 (setq x (entget x)))))
    	       (or (member y x420) (setq x420 (cons y x420))))
    	      ((setq y (cond ((cdr(assoc 62 x))) (256)))
    	       (or (member y x62) (setq x62 (cons y x62))))))
          (sssetfirst nil (ssget (append '((-4 . "<OR"))
    				     (mapcar '(lambda(a) (cons 62 a)) x62)
    				     (mapcar '(lambda(a) (cons 420 a)) x420)
    				     '((-4 . "OR>")))))))
      (princ))

     


  11. Lisp của mình chỉ lọc theo thuột tính color của autocad.

     Bình thường thì lọc object này thường chỉ bật 1 layer nên mình nghĩ ko cần nhiều.

    Nhưng theo bác ấy thì mình nghĩ lọc theo màu thể hiện chứ không phải màu thuột tính.

    Nghĩa là 

    - Nếu chọn obj màu x thì chọn tất cả obj màu x và obj màu bylayer có layer màu x.

    - Nếu chọn obj mau bylayer thì chọn tất cả obj màu bylayer có layer cùng màu obj và obj có màu là màu của layer obj mẫu.

    Nhưng cái này mình thấy ko cần thiết lắm.


  12. 2 phút trước, Danh Cong đã nói:

    + Bình luận tí cho xôm xôm gia đình thôi bác ơi ^^. Mà code bác tương đương bác #Nhoclangbat mà :)

    + Mà hỏi dại bác tí. (assoc 420) trả về gì vậy ạ. Em chưa làm với mấy số to to này bao giờ :v

     

    Code 420 là truecolor. code 62 là màu 0..256 - 0 ByBlock, 256 là Bylayer. Nhưng 256 chỉ dùng cho ssget. entget không đọc được.

    Mình nghĩ là chọn theo màu thôi. Nếu bylayer thì cái nào bylayer thì chọn thôi. Màu của layer không quan trọng.

    • Like 1

  13. Bác thử ở word . copy 1 dòng text nào đó rồi thử nhấn cd xem nó có dán ko?

    Nếu có thì bàn phím bị kẹt phím hay lỗi phần cứng hay phần mềm keyboard.

    Thử tắt các keyboard tiếng việt thử xem

     

    Nếu ko thì do shortcut cad. không phải lệnh tắt. Shortcut trong giao diện cui của bác đó. Cái này mình ko chắc vì mình ko biét có gán 1 key dc không? Mình đang ko trên máy.

    https://knowledge.autodesk.com/support/autocad-lt/learn-explore/caas/CloudHelp/cloudhelp/2019/ENU/AutoCAD-LT/files/GUID-9970E91B-A4F5-405C-99C1-46AD804A8858-htm.html

×