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

tien2005

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

    513
  • Đã tham gia

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

  • Ngày trúng

    59

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


  1. Vào lúc 17/11/2023 tại 23:51, Xuân Lộc đã nói:

    Bác @tien2005em bị lỗi hiểm thị độ phân giải 4k win 11 ạ. Mong bác fix lỗi hiểm thị và lisp có chế độ đổi ngôn ngữ thuần tiếng việt ko ạ

    Bạn chụp màn hình rồi đưa lê đây xem như thế nào. ngôn ngữ thuần Việt dễ bị lỗi hiển thị do ngôn ngữ lisp của CAD

     


  2. Vào lúc 29/10/2023 tại 10:17, Tranvu2803 đã nói:

    Cám ơn a đã chia sẻ lisp rất hay này, e đang có vấn đề khi in nhiều bản vẽ với screening khác nhau thì phải làm sao ạ

     

    Lisp chỉ in các bản vẽ được chọn trong file, không can thiệp vào file định nghĩa nét in *.CTB *.STB

    Trong file có nhiều screening thì Bạn cài đặt theo màu, mỗi màu tương ứng với các giá trị screening khác nhau


  3. Vào lúc 20/8/2023 tại 10:46, tannguyen291 đã nói:

    Em đang thử viết một hàm Multi plot theo ý muốn của bản thân.

    Đang gặp vấn đề lớn ở hàm (vla-PlotToFile (vla-get-Plot adoc) fileplot)

    Nếu chỉ có 1 đối tượng để chọn in thì lisp hoạt động tốt.

    Tuy nhiên khi chiếu đến đối tượng thứ 2 để in thì sảy ra hiện tượng máy in trong cad đang hoạt động (máy in chạy nền). Gọi hàm vla-PlotToFile sảy ra lỗi 

    Em nghĩ rằng cần đợi đến khi plot thứ nhất xong thì mới plot lần thứ 2. nhưng làm sao để biết status plot để đợi

    Các bác dùng cách nào để giải quyết vấn đề này chỉ em với.

    Bạn chú ý đến biến hệ thống BACKGROUNDPLOT = 0

    • Like 1

  4. @HUY2Knó là 1 chế độ chọn đối tượng trong acad giống như chọn window, cross. Để chọn theo fence thì khi yêu cầu chọn đối tượng bạn nhập chữ F rồi sau đó chon, nó giống như bạn vẽ đương pline. các đối tượng nào bị pline cắt qua và nhìn thấy được trên màn hình thì đối tượng đó được chon


  5. Vào lúc 31/3/2023 tại 09:30, tannguyen291 đã nói:

    Em cũng gửi 1 hàm mình viết

    
    ;bul = t : bulge extend
    ;bul = nil : tanget extend
    (defun PointPerpendicular (ent point bul / para startpt endpt pt0 lstex lst lstpt obj cen )
      (setq
        ent (vlax-ename->vla-object ent)
        pt0 (vlax-curve-getclosestpointto ent point)
        para (vlax-curve-getparamatpoint ent pt0)
        startpt (vlax-curve-getstartpoint ent)
        endpt (vlax-curve-getendpoint ent)
      )
      (setq lstex (vlax-safearray->list (vlax-variant-value (vla-Explode ent))))
      (cond
        ( (equal pt0 startpt 1e-8)
          (setq lst (list (car lstex)))
        )
        ( (equal pt0 endpt 1e-8)
          (setq lst (list (last lstex)))
        )
        ((= para (fix para))
          (setq 
            para (fix para)
            lst (list (nth (1- para) lstex) (nth para lstex))
          )
        )
      )
      (foreach item lst
        (if (eq (vla-get-Objectname item) "AcDbLine")
          (setq 
            obj (vlax-ename->vla-object (makeXline (vlax-curve-getstartpoint item) (vlax-curve-getendpoint item))) 
            lstpt (cons (vlax-curve-getclosestpointto obj point) lstpt)
            obj (vla-delete obj)
          )
          (if bul
            (setq
              obj (entget (vlax-vla-object->ename item))
              obj (vlax-ename->vla-object (entmakex (list '(0 . "CIRCLE") (assoc 10 obj) (assoc 40 obj))))
              lstpt (cons (vlax-curve-getclosestpointto obj point) lstpt)
              obj (vla-delete obj)
            )
            (setq 
              cen (vlax-safearray->list (variant-value (vla-get-Center item)))
              obj (polar pt0 (+ (/ pi 2) (angle cen pt0)) 1)
              obj (vlax-ename->vla-object (makeXline pt0 obj))
              lstpt (cons (vlax-curve-getclosestpointto obj point) lstpt)
              obj (vla-delete obj)
            )
          )
        )
      )
      (if lstpt
        (setq 
          lstpt (vl-sort lstpt '(lambda (a b) (< (distance a point) (distance b point))))
          pt0 (car lstpt)
          lst nil
        )
      )
      (mapcar 'vla-delete lstex)
      pt0
    )
    
    (defun makeXline (p1 p2 / p3 )
      (entmakex
        (list '(0 . "XLINE") '(100 . "AcDbEntity") '(100 . "AcDbXline") 
          (cons 10 p1) (cons 11 (mapcar '(lambda (a b) (/ (- a b) (distance p1 p2))) p1 p2)))
      )
    )

    và một hàm test 

    
    (defun c:test (/ cur pt px)
      (setq
        cur (car (entsel "\nSelect Pline"))
        pt (getpoint "\nPick point")
        px (PointPerpendicular cur pt nil) ;extend tanget nil ;extend bulge t
      )
      (entmake (list '(0 . "LINE") (cons 10 pt) (cons 11 px)) )
      (princ)
    )

    tuy nhiên sảy ra vấn đề khi dùng phương thức bulge 

     

     

     

     

    Bạn thử theo hướng:

    khi tìm được điểm P gần nhất trên pline thì xem P có trùng với điểm đầu/cuối pline. Nếu trùng thì xem điểm đầu/cuối pline có/không bulge thì phát triển đường tròn/đường thẳng rồi tìm lại P


  6. Vào lúc 22/12/2022 tại 16:08, fixilanh đã nói:

    Cảm ơn bạn đã chia sẻ. Mình không in dc bản vẽ xref khung tên. Mong bạn hướng dẫn trường hợp này ạ.

    "Error: bad argument type: numberp: nil"

     

    Vào lúc 24/12/2022 tại 10:33, Nguyễn Hà Huy đã nói:

    hiện tại lisp phần chọn theo hướng thì e chỉnh từ trái qua phải ok rồi còn phần selec oder tự chọn xắp xếp kiểu nào vẫn bị loại thứ tự khổ giấy khác nhau a tien2005 ạ

     

    xref trong bản vẽ cũng là block nên in bình thường

    select order: Bạn chọn từng khung, cái nào chọn trước thì in trước, hoặc chọn theo fence, cái nào đầu fence thì thì trước

     


  7. Vào lúc 2/12/2022 tại 19:21, AlexJuina đã nói:

    Tôi làm về thiết kế đường, với phần mềm Autocad Civil 3D, tôi dùng lisp để tạo bản PDF của các mặt cắt (nhanh hơn dùng Layout), Autocad Civil 3D tạo các mặt cắt từ trái sang phải và hướng các con đường là từ nam ra bắc. Do đó, tùy chọn này là cần thiết.1588323713_Vistageral.thumb.PNG.a8d7b0ea938293d3a46f4a36d361c021.PNGSequencia.PNG.7447704757550f7fe06785def99fa5a9.PNG

     

    Bạn phải linh hoạt sử dụng để in

    1. in từng đợt 1-13, 14-24, ...

    2. move các phần cần in để sắp xếp đúng thứ tự đã được hỗ trợ của lisp


  8. Vào lúc 1/12/2022 tại 16:53, Nguyễn Hà Huy đã nói:

    Bác tien2005 kiểm tra giúp em, file có nhiều tỉ lệ khung tên in ra nó bị loạn không theo thứ tự bản vẽ, nó xếp theo khung cùng cỡ với nhau, e dùng ver 1.11 Mới nhất

    NhaVS.dwg

     

    Bạn chú ý bài đầu tiên có hướng dẫn : Điểm cơ sở để sắp xếp là góc dưới bên trái của hình chữ nhật bao block hoặc polyline


  9. 17 giờ trước, marvel đã nói:

     

    Bạn chưa hiểu.

    Mình muốn in nhiều bản thông qua lisp, in trên cad để ra giấy luôn, chứ vạ gì muốn in PDF. 

    Vì mình bảo các lisp đều k in được nhiều bản nên mới phải dùng cách xuất PDF rồi mới lấy nó để in thành nhiều bản.

     

    Ví dụ mình cần 10 bộ hồ sơ bv. Nếu dùng lisp sẽ phải đặt 10 lệnh, vì nó k in 1 lần đc 10 bộ. Còn nếu qua PDF thì chỉ 2 lệnh, 1 lệnh xuất PDF và 1 lệnh in PDF ra 10 bản luôn.

    Nên bây giờ đang mong có cách nào để 1 lệnh thông qua lisp mà in ra đc 10 bộ luôn ấy. Mình thử lisp của bạn thì chưa đáp ứng được, bạn có thể ktra lại xem sao

    Bạn đã sử dụng lisp chưa mà nói lisp không thể in 10 bộ trong 1 lần in.

    1 lấn có thể in n bản vẽ và sắp xếp theo thứ tự mà Bạn đã chọn

×