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

tannguyen291

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

    486
  • Đã tham gia

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

  • Ngày trúng

    49

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


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

    (dùng Chat GPT) 

    Autolisp: chọn một Text muốn tính ra A (khoảng cách rải), sau đó nhập vào đường kính d . A = pi * d * d * 1000 / ( 4 * 100 * TBC) . Sau đó làm tròn A đến 10. Kết quả có dạng 16a250 với 16 là đường kính, 250 là A. Kết quả này là text sẽ được đặt vào autocad với điểm pick, các thuộc tính khác lấy từ text đã chọn. Text đã chọn sẽ đổi màu sang màu 3. 

     Kết quả sẽ ra như bạn mong muốn.

    Có lần yêu cầu phức tạp hơn cả code, em từng viết cái prompt dài như 1 cái sớ và dài hơn cả code nếu viết gọn mấy cái xuống dòng lại.

    • Like 1

  2. Đừng gọi lisp là list. Với pline tính diện tích bằng công thức Shoelace nên luôn ra kết quả. nhưng với hatch hoặc 1 số đối tượng khác việc cạnh biên tự giao thì không thể lấy được diện tích hoặc không thể tạo thành đối tượng. trong trường hợp này công thức tính kể trên cũng là tính sai nên cố gắng vẽ lại pline để hatch có diện tích.


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

    Thầy cho em hỏi, em mới làm quen với autocad thì có nên học lập trình VBA ngay không ạ?

    Em cảm ơn thầy ạ

    Không biết bạn hoạt động trong ngành gì. nếu trong ngành xây dựng thì học autolisp ,vba. nếu bạn muốn đi theo đường code chuyên nghiệp thì c++, c#.

    VBA lợi thế là vừa viết cho cad vừa viết được cho exel. autolisp lợi thế dễ học. 

    Còn khi đã thích thì ngôn ngữ nào cũng được.

    • Like 1

  4. 15 giờ trước, nguyenhong3868 đã nói:

    Em đang có các tờ bản đồ địa chính File Autocad, trên bản đồ có rất nhiều thửa đất được vẽ bằng Line 
     Nhiệm vụ của em là : Bo từng thửa đất để tạo thành thửa khép kín bằng đường Polyline ở 1 Level hiện tại và màu Level hiện tại đó

     Nếu sử dụng lệnh Bo từng thửa 1 thì mất rất nhiều thời gian và có khi còn bị sót không kiểm soát được
     >>> EM CÓ TÌM THẤY 1 LISP TRÊN DIỄN ĐÀN 

    TRONG LISP NAY tác giả đang viết Hatch và TÔ MÀU cho từng thửa và từng vùng một
    Em không biết gì về viết code Lisp. Em nhờ các cao nhân giúp em sửa lại Lisp trên thành Lisp :

    - Tên lệnh : taovungthua

     - Lisp chỉ tạo đường BO cho từng thửa riêng lẻ (KHÔNG BO CHO CẢ MỘT VÙNG RỘNG LỚN)

     - KHÔNG TÔ MÀU CHO THỬA

    - Làm sao để chạy nhanh hơn vì em thấy Lisp trên nếu quét một vùng nhiều thửa thấy chạy chậm lắm ạ

     * HOẶC CÓ CÁCH NÀO XỬ LÝ TRÊN FILE CAD ĐƯỢC KHÔNG Ạ

     Rất mong được các cao nhân giúp đỡ ạ. Em xin cảm ơn rất nhiều

     111.dwg

    888.lsp

    Chuyển qua dùng autocad map. có sẵn chức năng này. chạy siêu nhanh. còn với lisp thì khắc phục tốn quá nhiều nơron nên bỏ qua. trên autodesk app có ông bán chương trình kiểu này có mấy trăm k. công việc phức tạp như này tìm lisp không ai có đâu.

    • Like 1

  5. Vứt cái chatgpt sang 1 bên. bài này có 3 cách giải. 

    1. duyệt qua từng rectange lấy listpoint sử dụng (ssget "CP" listpoint '((0 . "CIRCLE"))) để chọn được các vòng tròn nằm trong nó.

    note: câu lệnh đơn giản, chạy với polyline bất kỳ không nhất thiết là hình chữ nhật. nhưng nếu vòng tròn lớn hơn polyline thì không chọn được.

    2. sử dụng hàm trong express tool để kiểm tra điểm nằm trong 1 danh sách điểm (acet-geom-point-inside p1 lst dst) {hoặc bất kỳ hàm point inside nào trên mạng}  để loại trừ

    not: chạy với polyline bất kỳ không nhất thiết là hình chữ nhật.

    3. sử dụng cách của chatgpt tuy nhiên nên dùng 1 vòng lặp for.

    note: chỉ áp dụng với hình chữ nhật.

    còn hướng dẫn bạn sửa thì không. bạn học tập đi đừng ném chatgpt lên nhóm nhờ mọi người sửa.

    • Like 1

  6. Vào lúc 9/11/2024 tại 14:54, cuongtk2 đã nói:

    @minhtuan57hk xem video về phương thức thực hiện .

    Em đã từng viết lisp này và thấy hoạt động dựa trên region cũng không hề chậm chỉ khoảng 5s là xong rồi ạ.

    còn về gap equal thì giải quyết bằng cách lấy điểm giao cắt Extends both ,rồi so sánh với startpoint, end point. 

    Sau này có điều kiện chuyển lisp sang .net có lẽ công cụ sẽ chạy nhanh hơn.

    giphy.gif

    • Vote tăng 1

  7. 14 giờ trước, cuongtk2 đã nói:

    Mục tiêu của em để làm gì, bởi đã có lệnh BO trong Cad để tạo Boundary rồi.

    Code của Kean chỉ mang ý nghĩa học thuật, hầu hết phục vụ cho coder về mặt hướng dẫn chứ không phải cho người vẽ.

    Chắc bạn ấy đang cần lệnh bo đổi màu tăng dần đó bác. :))

    à dạo này em đang bắt đầu nghiên cứu c# bác cho em xin vài link hướng dẫn cài debug CAD với ạ. em làm chưa được. toàn buid ra dùng netload để test.

    • Like 1

  8. chèn block att nếu sử dụng entmake sẽ không tạo attribute trong block. (nếu muốn dùng cách này cần thêm lệnh attsync trong command.)

    để tối ưu nên dùng vla:

    (vla-InsertBlock Object<vla-object> InsertionPoint<variant:xyz> Name<string> Xscale?<double> Yscale?<double> Zscale?<double> Rotation?<double> Password?<variant>)

    • Like 1

  9. 9 phút trước, cuongtk2 đã nói:

    @tannguyen291 Em làm rất đúng. Tặng em 1 hàm có thể có íchc

    
    (defun CurveGetAngleAtDist (object dist / param VEC X Y)
    (setq param (vlax-curve-getParamAtDist object dist)
       vec (vlax-curve-getFirstDeriv object param)
          x (nth 0 vec)
          y (nth 1 vec))
    (if (/= x 0) (atan (/ y x)) (if (> y 0) (* PI 0.5)(* PI -0.5) )
      )
      )

     

    Tks bác. hàm này có thể giảm thiểu một số tính toán thừa của em. 


  10. 6 phút trước, cuongtk2 đã nói:

    @tannguyen291 Em phát biểu đúng về việc chia càng nhiều khoảng thì càng chính xác. Nhưng về bản chất  spline và pline khác nhau về độ bẻ cong tại node, một bên là knode, một bên là bulge. Cho nên việc chia đều khoảng cách spline với 20 điểm có thể không chính xác bằng chia không đều với 5 điểm.

    Lisp của em là chia không đều mà. space này chỉ đơn giản là timming để dò tìm thôi. :)) quan trọng còn có dòng này nữa: (equal ck2 0 0.02) tính toán gần đúng cho bulge. giảm xuống mới tạo ra nhiều điểm hơn.


  11. 9 giờ trước, Lee123 đã nói:

    lips bác này chỉ chạy được các đường spline đơn giản thôi, các đường phúc tạp thì nó xoay đến mùa quýt luôn.

    Lisp của mình là ước tính. nên độ chính xác không cao. :)) ngoài ra nếu bạn biết về lisp thì có thể sửa variable space và giá trị so sánh bulge tại dòng 2 và dòng 9 để phù hợp với nhu cầu. (đây là giá trị đánh giá từng bước. càng nhỏ càng lâu càng chính xác, càng lớn các nhanh càng thiếu chính xác). như vậy sẽ đáp ứng được công việc của bạn.

×