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

nhimret

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

    41
  • Đã tham gia

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

  • Ngày trúng

    1

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


  1. 3 phút trước, mdchuyen đã nói:

    Bác dùng không đúng bản rồi. Lisp bác tiến có in layout mà

    bản mới nhất 1.1 rồi mà nhỉ, nếu ko lầm là chỉ in được trong layout (các phiên bản trước trong layout click vào khung tên là lỗi), chứ ko phải là in hàng loạt layout.

    Để nghiên cứu lại, có thể tôi bỏ sót tính năng này. Cám ơn bác nhé


  2. Dùng lisp của bác Tien2005 từ phiên bản đầu tiên, đến phiên bản cuối cùng 2022 v1.1. Rất tốt, nhưng lại không có in layout. Muốn in hàng loạt layout thì phải tạo sheetset hoặc Publish. 

    Còn lisp của bác NTH2024 hôm nay vừa cài thử, thì về giao diện và tính năng tương tự như bác Biet ve cad, có in layout

    Nói chung là nếu như các bác chỉ in ở Model, thì lisp mpl của bác tien2005 hoàn hảo. Nhưng nếu cần in layout nhanh thì bắt buộc phải mua lisp thôi.

     

    P/s: vừa dùng lisp của bác NTH2024, tính năng in ấn đều ngon, nhưng hình như không lưu được setting in ấn (hoặc do mới dùng vài lần chưa mò được hết tính năng). Bác thêm được tự động lưu lại setting thì ổn áp


  3. Trước tôi có download 1 lisp của bác nào đó trên forum (xin lỗi bác không nhớ tên), dùng rất ok

    A. Tác dụng của lisp: chọn N pline hoặc N đường khép kín ==> lisp tự động thống kê ra toạ độ vào file txt để copy vào excel

    B. Nhờ các bác thêm hộ 1 chức năng là nếu như chọn cùng lúc "N"  pline thì giữa toạ độ của "N" pline đấy nó sẽ có 1 dòng cách trắng để phân biệt toạ độ của các đường

    Cám ơn các bác nhiều!

    (lisp đã đính kèm ở dưới)

    xuat toa do sang txt v2 (lenh tff).lsp

    • Vote giảm 1

  4. Vào lúc 25/6/2020 tại 21:48, huunhantvxdts đã nói:

    Sửa lại cho bạn thêm block

    
    (defun c:ii (/ lstdt mn mx cur_lay oldos Box)
     (vl-load-com)
    (setq cur_lay (getvar "clayer" ))
    (setq oldos (getvar "OSMODE"))
    (setvar "osmode" 0)
    (setvar "cmdecho" 0)
     (if (not (tblsearch "layer" "Khung Viewport"))
     (COMMAND "LAYER" "M" "Khung Viewport" "C" "1" "" "L" "CONTINUOUS" "" "LW" "0.13" "" "P" "N" "" "")
     )
    (setvar "clayer" "Khung Viewport")
    (prompt "\nChon doi tuong:")
    (setq lstdt (acet-ss-to-list (ssget '((0 . "LWPOLYLINE,insert")))))
    (foreach ent lstdt
    (vla-getboundingbox (vlax-ename->vla-object ent) 'mn 'mx)
    (vl-cmdf "._rectang" (vlax-safearray->list mn) (vlax-safearray->list mx))
    (setq Box (vlax-ename->vla-object (entlast)))
    (vl-catch-all-apply 'vla-put-ConstantWidth (list Box 0.5))
    )
    (setvar "clayer" cur_lay)
    (setvar "osmode" oldos)
    (setvar "CMDECHO" 1)
     (princ)
    )

     

    cám ơn bác, đã ngon rồi <3

     


  5. 7 giờ trước, huunhantvxdts đã nói:

    Chỉnh lại cho bạn nó hoàn thiện hơn

    
    (defun c:ii (/ lstdt mn mx cur_lay oldos Box)
     (vl-load-com)
    (setq cur_lay (getvar "clayer" ))
    (setq oldos (getvar "OSMODE"))
    (setvar "osmode" 0)
    (setvar "cmdecho" 0)
     (if (not (tblsearch "layer" "Khung Viewport"))
     (COMMAND "LAYER" "M" "Khung Viewport" "C" "1" "" "L" "CONTINUOUS" "" "LW" "0.13" "" "P" "N" "" "")
     )
    (setvar "clayer" "Khung Viewport")
    (prompt "\nChon doi tuong:")
    (setq lstdt (acet-ss-to-list (ssget '((0 . "LWPOLYLINE")))))
    (foreach ent lstdt
    (vla-getboundingbox (vlax-ename->vla-object ent) 'mn 'mx)
    (vl-cmdf "._rectang" (vlax-safearray->list mn) (vlax-safearray->list mx))
    (setq Box (vlax-ename->vla-object (entlast)))
    (vl-catch-all-apply 'vla-put-ConstantWidth (list Box 0.5))
    )
    (setvar "clayer" cur_lay)
    (setvar "osmode" oldos)
    (setvar "CMDECHO" 1)
     (princ)
    )

     

    cám ơn bác đã bỏ thời gian. Mục đích của lisp là để bo viền khung tên (hoặc 1 block chữ nhật), sau đó dùng các lisp xuất các rectang đó mỗi một rectang là một layout (hiện giờ các lisp free trên cadviet hay là lisp bán đều chỉ áp dụng được với khung chữ nhật :<)

    Do đó bác sửa lisp tuy quét hàng loạt được rồi nhưng lại không chọn được block :(

    Nếu được bác sửa lại hộ chọn được cả block thì tốt quá. 

    Cám ơn bác trước.


  6. Tôi có lisp bo viền 1 khung tên, nhưng mỗi lần chỉ được 1 khung tên

    (defun c:ii (/ eName mn mx)
     (vl-load-com)
     (COMMAND "LAYER" "M" "Khung Viewport" "C" "1" "" "L" "CONTINUOUS" "" "LW" "0.13" "" "P" "N" "" "")
     (if (setq eName (car (entsel "\n  >>  Select Object  >> ")))
       (progn
         (vla-getboundingbox (vlax-ename->vla-object eName) 'mn 'mx)
         (vl-cmdf "._rectang" (vlax-safearray->list mn) (vlax-safearray->list mx))))
     (princ))

    Nhờ các bác tư vấn hộ có cách nào chọn 1 loạt khung tên để nó bo viền 1 loạt không. Cám ơn rất nhiều.


  7. Hiện giờ tôi đang dùng lisp của bạn nhoclangbat trong topic bên dưới. 

    ;========LISP TAO VIEWPORT TREN LAYOUT BANG CACH CHON O MODEL========
    (defun C:mtl(/ taphop soluong ten size i index oldos)
     (command "UNDO" "BE")
     (setq oldos (getvar "osmode"))
     (setvar "OSMODE" 0)
     (setq taphop(ssget))
     (setq soluong (sslength taphop))
     (setq ten (getstring 1 "\n Nhap ten layout:"))
     (setq index 0)
     (setq i 0)
     (while (< index soluong)
    (setq i(1+ i))
    (setq khung(ssname taphop index))
    (setq lst(acet-geom-vertex-list khung))
    (command "COPYCLIP" khung "")
    (command "LAYOUT" "N" (strcat ten (rtos i 2 0)))
    (command "LAYOUT" "S" (strcat ten (rtos i 2 0)))
    (command "layout" "d" "layout1" "")
    (command "layout" "d" "layout2" "")
    (command "layout" "d" "layout3" "")
    (command "ERASE" "ALL" "")
    (command "PASTECLIP" "0,0")
    (command "MVIEW" "O" (entlast))
    (command "MSPACE")
    (command "ZOOM" (nth 0 lst) (nth 2 lst))
    (command "PSPACE")
    (command "ZOOM" "E")
    (command "PLOT" "Y" "" "" size "M" "L" "N" "W" "0,0" (list (abs(- (car (nth 2 lst)) (car (nth 0 lst)))) (abs(- (cadr (nth 2 lst)) (cadr (nth 0 lst))))) "F" "" "Y" "" "Y" "N" "N" "N" "N" "Y" "N")
    (command "MODEL")
    (setq index (+ index 1))
    )
     (command "UNDO" "END")
     (setvar "OSMODE" oldos)
     (princ)
     )

    Lisp của nhoclangbat và các bạn tham gia topic đều chỉ thực hiện theo ý chủ thớt là chọn 1 khung chữ nhật. 

    Nhờ mọi người chỉnh hộ có thể chọn cả 1 khung tên có sẵn (dạng xref hoặc block). 

    Cám ơn nhiều.

     


  8. xin hỏi mọi người, tôi muốn làm 1 lisp về chuyển layer hiện hành về layer của 1 đối tượng. 

    Trong cad có lệnh -layer --> Set --> chọn đối tượng --> cad chuyển layer về layer đối tượng.

    lisp như sau: 

    (defun c:11 (/ ss1) (setq ss1 (ssget)) (command "-layer" "s" "" ss1 ""))

    Không biết lỗi chỗ nào mà lúc thực hiện thì cad báo lỗi, trong khi cũng dòng lisp tương tự thế này đối với các lệnh khác thì lại được

    Nhờ các bác chỉ hộ lỗi sai

    Cám ơn nhiều.

     


  9. Vào lúc 18/3/2020 tại 14:14, tien2005 đã nói:

    @nhimret Bạn tìm dòng (text1 str (nentsel "\nChon TEXT ke ... rồi thay bằng (text1 (strcat "S = " str " m2") (nentsel "\nChon TEXT ke....

    Cám ơn bác, đã ngon lành...  à bác cho hỏi luôn là lisp hiện giờ đang để số sau thập phân có 4 chữ số, giờ muốn chỉ còn 2 chữ số thôi thì lệnh gì nhỉ


  10. Vào lúc 10/3/2020 tại 11:51, Duong Nhat Duy đã nói:

    Do gà nên mình ko thể xác định được vùng nào nằm trong, vùng nào nằm ngoài như yêu cầu của bạn được, nên mình thêm lệnh UH, chọn 2 lần, lần đầu chọn tính tổng (ví dụ A, B), lần sau chọn tính hiệu (ví dụ C, D) (nếu ko cần tính hiệu thì cứ thế enter).

    UU, UH.lsp

    về thuật toán thì lisp quá chuẩn rồi, nhờ bác chỉnh hộ đơn vị về m2, và khi chọn text kết quả thì dòng text sẽ hiện ra là S="ket qua" m2

    Cám ơn bác nhiều.

    • Vote giảm 1

  11. Vào lúc 10/3/2020 tại 11:51, Duong Nhat Duy đã nói:

    Do gà nên mình ko thể xác định được vùng nào nằm trong, vùng nào nằm ngoài như yêu cầu của bạn được, nên mình thêm lệnh UH, chọn 2 lần, lần đầu chọn tính tổng (ví dụ A, B), lần sau chọn tính hiệu (ví dụ C, D) (nếu ko cần tính hiệu thì cứ thế enter).

    UU, UH.lsp

    cám ơn bác nhiều, bác viết lisp chuẩn 100% ý đồ của tôi đấy chứ. Làm phương án phải dịch chuyển từng tí một để tính diện tích cho khớp với diện tích đã cho. Cứ phải bấm máy tính khổ dã man. Vừa test thử, ngon lành lắm luôn


  12. (defun c:1 () (ssget) (command  "change"  "p" "" "p" "la" "a-Tuong" ""))
    (defun c:2 () (ssget) (command  "change"  "p" "" "p" "la" "a-Betong" ""))
    (defun c:3 () (ssget) (command  "change"  "p" "" "p" "la" "a-net manh" ""))
    (defun c:4 () (ssget) (command  "change"  "p" "" "p" "la" "a-trattuong" ""))
    (defun c:5 () (ssget) (command  "change"  "p" "" "p" "la" "a-hatch" ""))
    (defun c:6 () (ssget) (command  "change"  "p" "" "p" "la" "a-thay" ""))

     

    cậu chỉnh layer "a-Tuong", "a=Betong" theo các layer hiện hành của cậu nhé. Lisp này có tác dụng là chọn đối tượng, ấn số 1 thì nó sẽ chuyển layer thành A-Tương, tương tự 2 là a-betong


  13. Vào lúc 26/2/2020 tại 23:21, dtdat đã nói:

    Theo tính chất công việc khi hatch đối tượng xong mình đều phải chìm nó xuống dưới layer khác, việc này lặp đi lặp lại khá mất time.

    Em có tìm trên mạng được lisp này nhưng kg hiểu sao chạy trên autocad 2020 thì báo lỗi...nhờ các cụ sửa giúp 

    Hatchbottom.lsp

     

    chỉnh ở đây nhé, 1 lần là được

    image.png.9699f63fd65460b990ce1e27784ed63c.png


  14. Trước giờ đang dùng lisp tính tổng diện tích của 1 bác trên này (xin lỗi dùng lâu rồi không nhớ tên bác), dùng rất tốt (lisp đính kèm ở dưới)

    Nhờ các bác chỉnh lại hộ lisp để có thể tính cả phép trừ diện tích trong trường hợp công trình có thông tầng

    Ví dụ như hình đính kèm, lisp cần tính theo công thức A+B -C-D

    ý tưởng là ấn lệnh "uu", thì lisp sẽ mặc định hỏi chọn đối tượng để tính tổng, sau khi ngắt chọn, thì lisp hỏi bạn có muốn trừ diện tích không (Y/N), ấn enter thì mặc định là N, còn chọn Y thì lisp lại yêu cầu chọn các đối tượng để trừ đi.

    Cám ơn các bác nhiều.

    tinh tong dien tich (lenh uu).lsp

    Capture.JPG


  15. Trước có download lisp của nhoclangbat

    Hiện lisp này hoạt động bằng cách chọn 2 góc của khung tên để xuất sang layout, làm từng bản vẽ một.

     

    Nhờ mọi người chỉnh hộ chỉ cần chọn các khung tên (block, xref) theo thứ tự rồi thì sẽ tự động tạo các layout theo thứ tự 1,2,3,4 v.v.v.. (nếu có dòng cho phép chọn ký tự ban đầu trước khi đếm số thì quá tốt. VD ký tự ban đầu là KT-, sau khi lisp chạy sẽ ra các layout là KT-1, KT-02 v.v....

     

    Cám ơn rất nhiều..

     

    @tao layout tren model (lenh vv).lsp

×