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

Danh Cong

Moderator
  • Số lượng nội dung

    1.353
  • Đã tham gia

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

  • Ngày trúng

    113

Bài đăng được đăng bởi Danh Cong


  1. (getvar "osmode)  --> Lấy ra giá trị biến hệ thống "Osmode" của Cad.

    (setq oldos (getvar "osmode"))   ----> Gán giá trị biến hệ thống vào biến do người dùng tự tạo "oldos"

    (setvar "osmode" 0)    ---> Thiết lập biến Osmode về 0, tức là không bắt điểm. Thao tác này nhằm vẽ các đối tượng sau câu lệnh không bị bắt điểm nhầm.

    (setvar "osmode" oldos )   --> Trả lại thiết lập Osmode về giá trị cũ, được lưu trong "oldos".

    • Like 1

  2. (setq a0 (list (+ car(a1) 2) (cadr a1) 0))
    (setq a5 (list (- car(a4) 2) (cadr a4) 0))
    (command "pline" a0 a1 a2 a3 a4 a5)

    (Setvar "OSMODE" 0)

     

    Sửa lỗi :

    (setq a0 (list (+ (car a1) 2) (cadr a1) 0))
    (setq a5 (list (- (car a4) 2) (cadr a4) 0))
    (command "pline" "non" a0 "non" a1 "non" a2 "non" a3 "non"a4 "non" a5 "")

     

    Code tóm lại đã chạy được. Còn đúng ý hay không thì tùy chủ thớt.

    • Like 1

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

    Mọi người cho mình hỏi, có cách nào dim kích thước nhưng để không hiện giá trị không? Nếu có, xin mọi người chỉ giúp với. Thank nhiều!

    Có, bạn có thể làm vậy bằng cách chuyển màu của Text trong Dim về màu trùng với màu nền Autocad.

    Ví dụ trong trường hợp màu nền là màu đen :

    Dimstyle ---> Modify --> Tab Text ---> Text Color ---> Select color ---> True Color  ---> Nhập giá trị 0,0,0 hoặc kéo kịch thanh màu về giá trị 0,0,0


  4. Vào lúc 12/8/2020 tại 13:54, xuanquoc đã nói:

    anh cho e xin với ạ, cảm ơn anh nhiều ( email: xuanquocxd@gmail.com)

    Gửi cho bạn. Lisp chỉ áp dụng trong trường hợp nối thẳng. Chiều dài mối nối được quy định trong Lisp. Khoảng cách giữa các thanh nối phụ thuộc vào tỷ lệ Scale của dim.

    
    
    

    (defun c:VTT (/ d L40 X1 Y1 PT-end X-end Y-end scale L_Tieuchuan L PT1 PT2)
    (Princ "Write by: Do Danh Cong")
    (command "undo" "begin")
    (setq L_TieuChuan
           (list
         (cons 10 450)
         (cons 12 540)
         (cons 14 630)
         (cons 16 720)
         (cons 18 810)
         (cons 20 900)
         (cons 22 990)
         (cons 25 1125)
         (cons 28 1260)
         (cons 32 1455)))

    ;;;;; So lieu dau vao
      (setq L (getdist "Nhap chieu dai / Chon 2 diem: "))
    ;;;;;; Luu gia tri duong kinh
      (or #VTT_D (setq #VTT_D 16))
      (setq #VTT_D (cond ((getreal (strcat "\nNhap D= < " (rtos #VTT_D 2 0) " >:")))(#VTT_D)))
      (setq    Pt1 (getpoint "\n Nhap diem ve: "))
      (setq scale (getvar "dimscale"))
      
      ;;;;; Tinh toan so lieu:
      
      (setq L40 (cdr (assoc #VTT_D L_TieuChuan))
        X1 (car Pt1)
        Y1 (cadr Pt1)
        PT-end (Polar Pt1 0 L)
        X-end (car Pt-end)
        Y-end (cadr Pt-end))
      ;;;;;; Ve thep

      (While  (> X-end X1)
              (if (>= 11700 (- X-end X1))
            (progn
                  (command ".line" "non" Pt1 "non" Pt-End "")
                  (setq X1  X-End))
            (Progn
                  (setq Pt2 (polar Pt1 0 11700))
              (command ".line" "non" Pt1 "non" Pt2 "")
              (setq X1 (- (car Pt2) L40)
                Y1 (+ (cadr Pt1) (* 1.5 scale))
                Pt1 (list X1 Y1)
                        PT-end (list X-end Y1))
              )
          ))
      (command "undo" "end")
      (Princ))


  5. 15 giờ trước, xuanquoc đã nói:

    Chào các anh. nhờ các cao nhân giúp đỡ viết giúp e list với ạ.

    " vẽ nhiều đường thẳng liên tiếp nhau khi gặp chiều dài lớn hơn 11.7  ( hoặc khi click điểm) sẽ tạo thêm mối nối vị trí đó ạ ( chiều dài mối nối nhập ạ). đồng thời có tạo đường dim và ghi các thông số nhập ban đầu như số thanh và đường kính ạ. ( giống kiểu shop thép )

    e xin chân thành cảm ơn mọi người. mong nhận được sự giúp đỡ ạ

    anh.jpg

     

    Lisp của tôi thì chỉ vẽ ra thép, ko bao gồm Dim kích thước. Nếu bạn có nhu cầu thì tôi sẽ gửi cho :))


  6. Chữ bạn đang nhìn thấy thực chất là 1 khung tên đã được XREF vào trong bản vẽ, vì không còn fie nguồn của khung tên nên file XREF này bị lỗi.

    Việc xóa lỗi này có 2 cách:

    1. Bạn có được file nguồn để XREF lại vào trong bản vẽ ( Cách này chắc bạn ko làm được rồi ).

    2. Xóa file XREF trong bản vẽ. ( Gõ lệnh XREF  ---> chọn file khung tên bị lỗi  ---> Detach )


  7. Theo nội dung của bạn, tôi tóm lược lại một chút.

    Giả sử việc của bạn là chọn 1 mớ các đối tượng cùng Layer1, việc còn lại là bạn đổi nó sang màu 1.

    Nếu bạn chỉ đơn lẻ thao tác < 10 Layer thì tôi nghĩ bạn học cách sử dụng Filter cũng khá hiệu quả.

    Còn nếu bạn thao tác với số lượng lớn layer thì sẽ dùng Lisp. :)) Tất nhiên có thể bạn sẽ cần ủng hộ vài ly cà phê cho người viết, thời tiết nóng quá mà.

    Video sử dụng Filter nếu bạn cần học :

     

     

    • Like 1

  8. 1. Nếu bạn đang vẽ và in trên Model : Ko cần quy luật gì sất, cứ nhìn thấy nét vẽ  + in thử ra PDF vài lần là có kinh nghiệm.

    2. Nếu bạn vẽ trên model, in trên Layout :

    Cái này thì khá đơn giản, bạn chỉnh toàn bộ Properties nét vẽ Line Type Scale = 1. Gõ lệnh LTS = 5. Thì khi in nét vẽ trên khổ giấy A3 khá cân đối.

    • Like 1

  9. 21 giờ trước, TKTXVD đã nói:

    Bác Danh Cong & thanhtvgt ơi, lisp của 2 bác đánh lệnh cad nó không hiểu (CAD2007 & 2020) các bác có thể sửa đc ko

    Bạn copy các dòng code về dán vào file txt, rồi tự tạo file lisp ( Không nhấn nút dowload trên diễn đàn, diễn đàn đang bị lỗi ).

    Ngoài ra, để ý xem lisp có load được hay chưa, hoặc lisp không dùng được thì màn hình thông báo lỗi gì.

     

    • Like 1

  10. Code cho bạn, lisp này có thể đếm số lượng thép theo:

    1 : Theo khoảng cách

    2 ; Theo số lượng;

    3 : Theo khoảng cách, số lượng  với Dim đã bị sửa số;

    
    
    

    (defun c:DEM ( / #DEM-KHOANG-CACH #DEM-SO-LUONG #DEMTHEP-NAME E1 E42 EDXF ENAME ENEW OBJECT)

      (command "undo" "begin")

      (or #DEMTHEP-NAME (setq #DEMTHEP-NAME "KHOANG-CACH-1"))

      (initget "KHOANG-CACH-1 KHOANG-CACH-2 SO-LUONG-1 SO-LUONG-2 SUA-KHOANG-CACH SUA-SO-LUONG")

      (setq #DEMTHEP-NAME (cond ((getkword (strcat "\nSelect Program: [KHOANG-CACH-1/KHOANG-CACH-2/SO-LUONG-1/SO-LUONG-2/SUA-KHOANG-CACH/SUA-SO-LUONG] <"#DEMTHEP-NAME">")))(#DEMTHEP-NAME)))

     

      (cond ((or (= #DEMTHEP-NAME "KHOANG-CACH-1") (= #DEMTHEP-NAME "KHOANG-CACH-2") (= #DEMTHEP-NAME "SUA-KHOANG-CACH"))

    (or #DEM-KHOANG-CACH (setq #DEM-KHOANG-CACH 150.0))

      (setq #DEM-KHOANG-CACH (cond ((getreal (strcat "\nNhap khoang cach buoc thep: < " (rtos #DEM-KHOANG-CACH 2 0) " >:")))(#DEM-KHOANG-CACH))))

          ((or (= #DEMTHEP-NAME "SO-LUONG-1") (= #DEMTHEP-NAME "SO-LUONG-2") (= #DEMTHEP-NAME "SUA-SO-LUONG"))

    (or #DEM-SO-LUONG (setq #DEM-SO-LUONG 10))

      (setq #DEM-SO-LUONG (cond ((getreal (strcat "\nNhap so luong thanh thep: < " (rtos #DEM-SO-LUONG 2 0) " >:")))(#DEM-SO-LUONG))))

          ); End Cond

    (setq Object (ssget'((0 . "DIMENSION"))))

    (repeat  (sslength Object)

    (setq Ename (ssname Object 0)

           Edxf (entget Ename)

           E42 (cdr (assoc 42 Edxf)))

     (cond ((or (= #DEMTHEP-NAME "KHOANG-CACH-1") (= #DEMTHEP-NAME "KHOANG-CACH-2")) (setq E1 (/ E42 #DEM-KHOANG-CACH)))

           ((or (= #DEMTHEP-NAME "SO-LUONG-1")    (= #DEMTHEP-NAME "SO-LUONG-2"))    (setq E1 (/ E42 #DEM-SO-LUONG)))

           ((= #DEMTHEP-NAME "SUA-KHOANG-CACH")   (setq E1 (/ (atof (cdr (assoc 1 Edxf))) #DEM-KHOANG-CACH)))

           ((= #DEMTHEP-NAME "SUA-SO-LUONG")      (setq E1 (/ (atof (cdr (assoc 1 Edxf))) #DEM-SO-LUONG))))

     

      (cond ((= #DEMTHEP-NAME "KHOANG-CACH-1") (setq Enew (subst (cons 1 (strcat (rtos E1 2 0) "X" (rtos #DEM-KHOANG-CACH 2 0) "=<>")) (assoc 1 Edxf) Edxf)))

    ((= #DEMTHEP-NAME "KHOANG-CACH-2") (setq Enew (subst (cons 1 (strcat (rtos E1 2 0) "X" (rtos #DEM-KHOANG-CACH 2 0))) (assoc 1 Edxf) Edxf)))

    ((= #DEMTHEP-NAME "SO-LUONG-1")    (setq Enew (subst (cons 1 (strcat (rtos #DEM-SO-LUONG 2 0) "X" (rtos E1 2 1) "=<>")) (assoc 1 Edxf) Edxf)))

    ((= #DEMTHEP-NAME "SO-LUONG-2")    (setq Enew (subst (cons 1 (strcat (rtos #DEM-SO-LUONG 2 0) "X" (rtos E1 2 0))) (assoc 1 Edxf) Edxf)))

    ((= #DEMTHEP-NAME "SUA-KHOANG-CACH")    (setq Enew (subst (cons 1 (strcat (rtos E1 2 0) "X" (rtos #DEM-KHOANG-CACH 2 0) "=" (cdr (assoc 1 Edxf)))) (assoc 1 Edxf) Edxf)))

    ((= #DEMTHEP-NAME "SUA-SO-LUONG")    (setq Enew (subst (cons 1 (strcat (rtos #DEM-SO-LUONG 2 0) "X" (rtos E1 2 1) "=" (cdr (assoc 1 Edxf)))) (assoc 1 Edxf) Edxf))))

      (entmod Enew)

      (if (and (> (abs (- (* (atof (rtos E1 2 0)) #DEM-KHOANG-CACH) E42)) 0.1) (or (= #DEMTHEP-NAME "KHOANG-CACH-1")

           (= #DEMTHEP-NAME "KHOANG-CACH-2")))

        (vla-put-Textcolor (vlax-ename->vla-object Ename) 1)

        (vla-put-Textcolor (vlax-ename->vla-object Ename) 3))

      (ssdel Ename Object)

      ); end repeat

    (command "undo" "end")

    (princ))

    • Like 1
×