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

conghoa

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

    563
  • Đã tham gia

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

  • Ngày trúng

    14

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


  1. Các bác căng thẳng quá, phải ươm mầm để phát triển tài năng cho 4r chứ nhỉ :D.

     

    Em lạc đề chút: AI giờ cũng phát triển, nên sẽ giúp ích rất nhiều cho các bạn thích lập trình. Các bác có chuyên môn ngó xem AI nó giải thích như này có đúng không nhé :)

     

    Chức năng:
    Code này tạo một lệnh AutoLISP có tên là IBB dùng để chèn khối (block) vào các điểm được định nghĩa bởi một polyline (đường nét).
    Phân tích từng phần:
    1.    (defun c:IBB () ... );end: Định nghĩa một lệnh AutoLISP có tên IBB (viết tắt của "Insert Block By Polyline").
    2.    (setq modelSpace (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))): Lấy đối tượng ModelSpace (không gian mô hình) của bản vẽ đang hoạt động.
    3.    (setq block (car (entsel "\nSeclect block: "))): Yêu cầu người dùng chọn một khối bằng lệnh entsel, sau đó gán giá trị của khối được chọn cho biến block.
    4.    (setq bo (vlax-ename->vla-object block)): Chuyển đổi tên khối block (dạng text) thành một đối tượng vla-object (object của Visual LISP Application Extension) và gán cho biến bo.
    5.    (setq nameb (vlax-get bo 'EffectiveName)): Lấy tên hiệu quả (tên được sử dụng để chèn) của khối và gán cho biến nameb.
    6.    (setq pl (car (entsel "\nSeclect pline: "))): Yêu cầu người dùng chọn một polyline bằng lệnh entsel và gán cho biến pl.
    7.    (setq plo (vlax-ename->vla-object pl)): Chuyển đổi tên polyline pl thành đối tượng vla-object và gán cho biến plo.
    8.    (repeat (setq n (1+ (fix (vlax-curve-getEndParam plo)))) ... ): Lấy số lượng điểm trên polyline bằng vlax-curve-getEndParam và tạo một danh sách lst chứa tọa độ của các điểm đó.
    o    vlax-curve-getEndParam trả về tham số kết thúc của polyline.
    o    fix lấy phần nguyên của tham số kết thúc.
    o    1+ cộng 1 vào kết quả để tính số lượng điểm.
    o    vlax-curve-getPointatparam plo n lấy điểm trên polyline tại tham số n.
    o    cons thêm điểm lấy được vào đầu danh sách lst.
    9.    (foreach li lst ... );foreach: Duyệt qua từng điểm li trong danh sách lst.
    o    (vla-InsertBlock modelSpace (vlax-3d-point li) nameb 1 1 1 0): Chèn khối có tên nameb vào tọa độ của điểm li trong không gian mô hình modelSpace.
        vlax-3d-point li chuyển đổi điểm li thành đối tượng 3D.
        Các tham số 1, 1, 1, 0 là các tham số xoay và tỷ lệ của khối được chèn.
    10.    (princ "limfx"): In ra màn hình dòng "limfx". Dòng này có thể được sử dụng để điều chỉnh lại vùng hiển thị của bản vẽ sau khi chèn khối.
    Lưu ý:
    •    Code này sử dụng các hàm vla- và vlax- để thao tác với đối tượng của Visual LISP Application Extension (VLA).
    •    Code này có thể được điều chỉnh để thay đổi số lượng điểm trên polyline, các tham số xoay và tỷ lệ của khối được chèn.
    Kết luận:
    Code này cho thấy cách sử dụng AutoLISP để tự động chèn khối vào các điểm trên một polyline. Code này rất hữu ích trong việc tối ưu hóa quy trình thiết kế và tiết kiệm thời gian khi làm việc với khối trong AutoCAD.


  2. Vào lúc 22/2/2024 tại 16:13, amateurday đã nói:

    Không được bạn ơi. Tớ thử đánh số thứ tự Tcount mà phải Flatten mới được. Replace Z không được, FLAT trên cũng không được.

    Drawing2.dwg

    Bạn dùng thử cái này, tên lệnh SF rồi enter 2 lần

     

    nguồn sưu tầm trên mạng.

    SuperFlatten 2.0b beta VVA.lsp

    • Like 1

  3. 14 phút trước, Lâm Vũ đã nói:

    Cái này chỉ áp dụng được với Line, polyline, arc thôi bác ạ, đường kia của e là 2d polyline thì lisp lại không dùng được. 

    Sau khi dùng lisp của bạn thì đường được nối cũng chuyển về polyline nên trước khi dùng lisp Pj bạn dùng lệnh Convert để chuyển toàn bộ 2D Polyline thành polyline :D 


  4. 40 phút trước, nguyenduc513 đã nói:

    zoom rồi đấy chứ bạn, nhưng cũng có hiện ra đâu, hình như ko phải lỗi như bạn nói đâu

    Zoom chưa tới nên chưa thấy, Cách zoom:

    - Vẽ 1 đoạn thẳng có tâm là 0,0 để biết tọa độ 0,0 nằm ở vị trí nào (bản vẽ của bạn nằm gần mốc này)

    - Xóa toàn bộ các đối tượng bên ngoài của điểm mốc tọa độ 0,0

    - Sau đó xóa đoạn thẳng vừa vẽ

    - Zoom all sẽ thấy

    • Like 1

  5. 23 giờ trước, Duong Nhat Duy đã nói:

    Nói riêng cái stretch phương dọc nhé, phương ngang thì dễ r:

    - Stretch Action 1:

     + Window : vùng trên cái cửa

     + Objects: khung ngoài, khung trong, bản lề trên, chữ V (bạn đang thiếu chữ V và thừa bản lề giữa)

    - Stretch Action 2:

     + Window : vùng bao chỗ bản lề giữa

     + Objects: khung trong, bản lề giữa, chữ V (bạn đang thừa bản lề trên)

    image.png.663aad2c4f54b690969b7da0b25b4098.png

     

    Với Stretch Action 2 thì phải chỉnh cái Distance thành 0.5 thì nó mới ở giữa cửa được


  6. Vào lúc 5/11/2019 tại 13:57, Ma Vương đã nói:

    Sau khi thử vẽ thì thấy bản vẽ trên vẽ còn thiếu nhiều chỗ

    Do thiếu kích thước vị trí tâm 2 cung, nên không biết chính xác đặt tâm chỗ nào

    Hình trên có thể chưa rõ

    Hóng cao nhân vẽ chính xác bản vẽ trên

    image.png.296ee55ab180760274c138f467785338.png

     

    @Chủ thớt (vì không bik nick nào chính): Theo hình bạn gửi thì có vẻ nghề nghiệp của bạn liên quan đến hình vẽ này, do đó mình khuyên lại lần nữa là bạn nên học lại hình học họa hình. Nên học lại từ cơ bản nếu ko thì sau này vào nghề sẽ rất khổ. Như bạn nói, mình cũng ko giỏi hơn ai cả, nhưng ít nhất những kiến thức liên quan đến việc kiếm cơm thì cũng phải nắm chắc một chút.

     

    @Ma Vương, hình như phải điều chỉnh lại một số điểm bên dưới này thì hình mới đúng

     

    image.png.c3f4b19aeb1ce4cf9fcc073868c192c2.png

×