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

quocmanh04tt

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

    1123
  • Đã tham gia

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

  • Ngày trúng

    153

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


  1. Theo tui bác làm như này: Bác lấy Lisp của GIABACH ở trên

    1. Tìm dòng: (setq blk_name (vla-get-name (vlax-Ename->Vla-Object ent)))

    2. Cho con trỏ ở cuối dòng (Enter) rồi chèn cum này vào:

    (cond ((= blk_name "D_D.CT1.1") (setq blk_name "CONG TAC 1 CHIEU 10A"))
            ((= blk_name "D_FAN1") (setq blk_name "QUAT HUT GAN TUONG 300x300"))
            ((= blk_name "D_QT1") (setq blk_name "QUAT TRAN SAI CANH 1,4m + DIMMER"))
            ((= blk_name "TEN BLK") (setq blk_name "TEN DAY DU..."))
      )
    là ok. Còn bao nhiêu nữa bác tự soạn tương tự trên.

  2. Bạn thử xem sao:

    (defun c:layon ()

    (vlax-for each (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
    (vla-put-layeron each :vlax-true))
    (princ))
    (defun c:layoff (/ ss i)
    (if (setq ss (ssget))
    (repeat (setq i (sslength ss))
    (vla-put-layeron (vlax-ename->vla-object
    (tblobjname "LAYER" (vla-get-layer (vlax-ename->vla-object (ssname ss (setq i (1- i)))))))
    :vlax-false)))
    (princ))


  3. Có cái này bạn dùng tạm:

    (defun c:cpl (/ ss pt1 pt2 i sn lst l)

    (if (and (setq ss (ssget "_:L"))

    (setq pt1 (getpoint "\nSpecify base point: "))

    (setq pt2 (acet-ss-drag-move ss pt1 "\nSpecify second point: "))

    (repeat (setq i (sslength ss))

    (setq sn (ssname ss (setq i (1- i))))

    (setq lst (cons (vla-copy (vlax-ename->vla-object sn)) lst))

    )

    ) (progn (foreach ent lst (vla-move ent (vlax-3d-point pt1) (vlax-3d-point pt2)))

    (foreach obj lst (vla-put-layer obj (getvar "cLayer")))

    )

    )

    (princ)

    )

    • Vote tăng 1

  4. Tặng các bác LISP đánh cốt cao độ khác.
    Sử dụng:
    + Chọn tỷ lệ đo (mặc định là 1)
    Ví dụ:
    Sau khi chọn cao trình +-0.00
    Điểm tiếp theo cách 1 khoảng +1000 => kết quả +1.00 (chiều âm ngược lại).
    * Nếu tỷ lệ đo = 2: Thì kết quả sẽ là: +0.50.
    + Khi di chuyển ký hiệu cao trình +-0.00 (Theo chiều Y) thì tất cả các cao trình khác sẽ thay đổi giá trị.
    + Khi di chuyển cao trình bất kỳ thì tự nó sẽ thay đổi giá trị.
    + Copy 1 cao trình (khác +-0.00) sang vị trí mới thì giá trị tự thay đổi.
    + Mỗi lần gọi lệnh thì có 1 cao trình mốc +-0.00
    Trong Lisp dùng Field nên muốn thấy sự thay đổi phải dùng lệnh: REGEN.
    LệnhL CD1 hoặc CD2

     http://www.cadviet.com/upfiles/4/141736_cotcaodo_2.zip

    • Like 1

  5. Tuyệt vời...! Cám ơn bác phamthanhbinh đã nhắc nhở và cám ơn bác nhiều vì LISP.

    Nhân đây, nhờ bác thêm việc nữa:

    + Sắp xếp thứ tự các loại cửa. Ví dụ: Đ1 ; Đ2; Đ3...; S1; S2; S3... theo thứ tự từ trên xuống (trong bảng thống kê).

    + Có cảnh báo khi nhỡ có nhầm khi cùng ký hiệu cửa nhưng quy cách khác nhau. Ví dụ như cùng S1 nhưng có cái thì 2 cánh, cái thì 3 cánh...

    (Cảnh báo bằng thông báo hoặc đổi màu của ký hiệu...)

    Một lần nữa xin cám ơn bác!


  6. Vấn đề nằm ở chỗ này...

    Trường hợp 1: Nếu cần 1 thanh có chiều dài là: 23.400

    + Nối đối đầu: Thì cần thêm 1 thanh có chiều dài 60D (vì mỗi 30D được nối với 1 thanh).

    + Nối chồng (Kiểu bắt tay): Gồm 2 thanh 11.700, như vậy chiều dài còn thiếu 30D,

    =>thêm 1 đoạn nữa => nếu nối chồng tiếp thì cần 1 thanh có chiều dài 30D+30D=60D

    Trường hợp 2: Nếu cần 1 thanh có chiều dài là: 20.000

    + Nối đối đầu: Giống như trên

    + Nối chồng: 11.700+8.300+30D=20.000+30D (chỉ cần thêm 30D).

    Các bác nghĩ sao???


  7. Chào các bác và ACE trên DD, em xin được ké Topic này.

    Em cũng có vấn đề với thống kê ATT BLOCK nhờ các bác trợ giúp <Xin cám ơn các bác trước!!!>.

    Em đã tìm kiếm trên DD nhưng chưa có lisp nào phù hợp với nhu cầu của em, hoặc là chưa tìm ra... mong các bác thông cảm.

    Cụ thể là:

    + Trên bản vẽ của em có 2 loại Att Block.

    + Mỗi Att Block có 2 Tag, 1 Tag là ký hiệu cửa (KYHIEU), 1 Tag là quy cách cửa (QUYCACH).

    + Trong Tag QUYCACH có ghi: 2S-1200-K250 hoặc 4D-1800-K150.

    * Trong đó:

    - Số đầu tiên là số cánh cửa (2 hay 4)

    - Thứ 2 là (S or D) là (S) - cửa sổ, (D) - Cửa đi.

    - Tiếp theo: 1200 or 1800 là chiều rộng cửa.

    - Cuối cùng: 250 or 150 là 1 chiều của tiết diện khuôn cửa.

    + Block và bảng thống kê trong bản vẽ kèm theo.

    Một lần nữa xin cám ơn các bác và ACE trước...!

    file: http://www.cadviet.com/upfiles/4/141736_tkcua_1.dwg

×