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

thiep

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

    514
  • Đã tham gia

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

  • Ngày trúng

    48

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


  1. Vào lúc 16/9/2022 tại 14:11, tien2005 đã nói:

    Bạn chọn trong option

    
    (defun C:DIMTUDONG ( / *error* a acdoc b c d dim e fd ht i o p1 p2 p3 pc pm rad sd space ss u opt isLine)
      (setq acDoc (vla-get-activedocument (vlax-get-acad-object))
            space (vlax-get acDoc (if (= (getvar 'cvport) 1) 'paperspase 'modelspace))
            dim (getvar 'dimstyle)
            ht  (* 1.0 (getvar 'dimtxt) (if (= 0 (getvar 'dimanno)) (getvar 'dimscale) (/ 1.0 (getvar 'cannoscalevalue))))
            )
      (vla-startundomark acDoc)
    
      (defun *error* (msg)
        (and
          msg
          (not (wcmatch (strcase msg) "*CANCEL*,*QUIT*,*BREAK*"))
          (princ (strcat "\nADError: " msg))
          )
        (vla-endundomark acdoc)
        (princ)
        )
      
      (setq opt (mapcar
                  '(lambda (a b)
                     (cond
                       ((getdictvar "AD_otions" a))
                       ((setdictvar "AD_otions" a b))
                       )
                     )
                  '("Linear" "Arc" "p3")
                  '("b0" "c0" "0")
                  )
            )
      (initget "Options")
      (if
        (eq (getkword "\nPress enter to continue or [Options]: ") "Options")
        (setq opt (AD_options opt))
        )
      
      (if
        (setq ss (ssget '((0 . "LWPOLYLINE,LINE,ARC"))))
        (repeat (setq i (sslength ss))
          (setq e (ssname ss (setq i (1- i)))
                o (vlax-ename->vla-object e)
                a (vlax-curve-getstartparam e)
                c (vlax-curve-getendparam   e)
                b nil
                isLine (wcmatch (vla-get-Objectname o) "AcDbLine,AcDbArc")
                )
          (while (<= (setq b (if isLine (if b (1+ b) c) (1+ a))) c)
            (setq p1 (vlax-curve-getpointatparam e a)
                  p2 (vlax-curve-getpointatparam e b)
                  u  (angle p1 p2)
                  pm (vlax-curve-getpointatparam e (/ (+ a b) 2.0))
                  sd (vlax-curve-getsecondderiv  e (/ (+ a b) 2.0))
                  rad (distance '(0 0 0) sd)
                  d  (cond (isLine) ((not (minusp (vla-getbulge o a)))))
                  pc (mapcar (if d '+ '-) pm sd)
                  p3 (if (= (caddr opt) "1")
    		   p2
    		   (if
                       (or (equal rad 0.0 1e-8) (eq (cadr opt) "c2"))
                       (if
                         (eq (car opt) "b0")
                         (polar pm (+ (atan (/ (sin u) (cos u))) (/ pi 2.0)) ht)
                         (polar pm (- (atan (/ (sin u) (cos u))) (/ pi 2.0)) (* 2.5 ht))
                         )
                       (if
                         (eq (cadr opt) "c0")
                         (polar pm (angle pm pc) (if (<= 1e-4 (angle pc pm) pi) (* 2.5 ht) ht))
                         (polar pm (angle pc pm) (if (<= 1e-4 (angle pc pm) pi) ht (* 2.5 ht)))
                       )
                     )
    		   )
                   )
            (if
              (equal rad 0.0 1e-8)
              (vla-adddimaligned space (vlax-3d-point p1) (vlax-3d-point p2) (vlax-3d-point p3))
              (vla-adddimarc space (vlax-3d-point pc) (vlax-3d-point p1) (vlax-3d-point p2) (vlax-3d-point p3))
              )
            (setq a (1+ a))
            )
          )
        )
      (vla-endundomark acdoc)
      (princ)
      )
    
    (defun AD_options (old / a1 a2 b1 b2 dcl dcl_id file r)
      (setq
        a1 (car old)
        a2 (cadr old)
        a3 (caddr old)
        dcl (open (setq file (vl-filename-mktemp "AD" (getvar 'dwgprefix) ".dcl")) "w")
      )
      (write-line
        "AD: dialog { label = \"Tùy ch\U+1ECDn kích th\U+01B0\U+1EDBc Polyline\" ;
        : boxed_radio_column { label = \"Linear dimension position\" ; key = \"a1\";
        : radio_button { label = \"Above line\" ; key = \"b0\";}
        : radio_button { label = \"Below line\" ; key = \"b1\";}}
        : boxed_radio_column { label = \"Arc dimension position\" ; key = \"a2\";
        : radio_button { label = \"Inside arc\" ; key = \"c0\";}
        : radio_button { label = \"Outside arc\" ; key = \"c1\";}
        : radio_button { label = \"As for lines\" ; key = \"c2\";}}
        : toggle{label = \"Dim at objects\";key = \"dap\";}
        ok_cancel ;}"
        dcl)
      (close dcl)
      (if
        (< 0 (setq dcl_id (load_dialog file)))
        (if
          (new_dialog "AD" dcl_id)
          (progn
            (action_tile "a1" "(setq b1 $value)")
            (action_tile "a2" "(setq b2 $value)")
    	(action_tile "dap" "(setq b3 $value)")
            (set_tile "a1" (setq b1 a1))
            (set_tile "a2" (setq b2 a2))
    	(set_tile "dap" (setq b3 a3))
            (setq r (start_dialog))
            (unload_dialog dcl_id)
            )
          )
        )
      (if (findfile file) (vl-file-delete file))
      (if
        (= r 1)
        (mapcar 'setdictvar 
          '("AD_otions" "AD_otions" "AD_otions")
          '("Linear" "Arc" "p3")
          (list b1 b2 b3)
        )
        (list a1 a2 a3)
      )
    )
        
    (defun getdictvar (dict var / dict_ename)
      (if
        (setq dict_ename (cdr (assoc -1 (dictsearch (namedobjdict) dict))))
        (cdr (assoc 1 (dictsearch dict_ename var)))
      )
    )
    
    (defun setdictvar (dict var val / dict_name record)
      (or
        (setq dict_ename (cdr (assoc -1 (dictsearch (namedobjdict) dict))))
        (setq dict_ename (dictadd (namedobjdict) dict (entmakex '((0 . "DICTIONARY") (100 . "AcDbDictionary")))))
        )
      (if
        (setq record (dictsearch dict_ename var))
        (entmod (subst (cons 1 val) (assoc 1 record) record))
        (dictadd
          dict_ename
          var
          (entmakex
            (list
              '(0 . "DICTIONARYVAR")
              '(100 . "DictionaryVariables")
              '(280 . 0)
              (cons 1 val)
            )
          )
        )
      )
      val
    )
      

     

     

    Vào lúc 16/9/2022 tại 14:27, quangcda đã nói:

     

    thử xem bạn!

    33.Dim tu dong (DIMTD).LSP

    Thiết nghĩ, hai bạn đã suy tầm lisp của Stefan M. (10.11.2015 - KimProjects.com) đó thì cũng nên tôn trọng nêu tên tác giả của lisp một chút.

    • Like 2
    • Vote giảm 1

  2. 23 giờ trước, 7o7 đã nói:

    Bác nói đúng nhưng dùng hình tượng “lông lá” có vẻ không được mỹ quan cho lắm!!

    Chắc bác @thiep chưa hiểu yêu cầu của bác @lanvientkh nên thay vì viết 1 lisp đơn giản đếm đtg theo màu, bác lại “phóng đại” thành đếm mọi loại đối tượng!! Haizz!!

     

    Vào lúc 22/9/2012 tại 23:04, CUONG20051982 đã nói:

    Mình nhờ các bạn viết hộ lisp như thế này:

    Đếm số đối tượng trong bản vẽ như: line, pline, spline, circle, acr. rectangle, pollygon, elipse,...

    với điều kiện các đối tượng trên phải giống nhau về kích thước và hình dạng(tính cả các đối tượng đã xoay đi một góc bất kỳ nào đó như rectangle,squae,polygon mà vẫn đảm bảo về kích thước và hình dạng), các đối tượng giống hệt nhau mà nằm đè lên nhau thì xóa bỏ.

    Lisp có thể theo trình tự sau:

    - Nhập lệnh.

    - Chọn vùng tìm kiếm đối tượng.

    - Kết thúc lệnh

    - Hiển thị kết quả của đối tượng được chọn: "Số lượng đối tượng là: x"

     

    P/s: Nếu có thể thì phát triển giúp mình lisp chọn đếm cả đối tượng là block(các block này cũng là giống nhau tính cả block đã quay trừ những block đã scale)

    Ý của @CUONG20051982 đâu có nói về đối tượng màu, còn ý của @lanvientkh thì khác, đơn giản hơn.

    Giờ Thiep cũng đang viết cho 1 dự án lớn: thống kê đối tượng, nó chiếm hết thời gian nên không giúp được.

    Đầu bài của @CUONG20051982 là 1 bài toán hay đó chứ, có thể rất giúp ích cho các bạn làm thống kê đối tượng như điện nước, trang trí nội thất... ví dụ thống kê  gạch (rectangle, triangle), ống pipe (line, mline, polyline), diện tích bồn hoa (hatch, polyline),... thống kê các block...

    Đôi khi con gái cũng phải biết sủi thẳng tóc cho dễ coi hơn, dễ thương hơn. he he.


  3. Vào lúc 24/6/2021 tại 11:45, lanvientkh đã nói:

    chưa có cao nhân nào giúp mình, buồn quá

    Hôm nay mới đọc được topic này. Lisp cần chia ra rất nhiều trường hợp gọi là các đối tượng 2D "giống nhau" theo ý của chủ topic từ dễ đến khó:

    - Line             : cùng chiều dài

    - Circle          : cùng bán kính

    - Ellipse        : cùng độ dài trục lớn và độ dài trục nhỏ

    - Polyline hở (có > 2 node) : khi quay (Align) cho vecto điểu đầu điểm cuối của mỗi đa giác cùng hướng thì vecto cho từng cặp node, phải bằng nhau

    - Polyine kín (có > 2 node) : khi quay (Align) cho vecto điểu đầu điểm gần cuối của mỗi đa giác cùng hướng thì vecto cho từng cặp node, phải bằng nhau.

    - Spline hở hoặc kín : thuật toán làm giống như Polyline hở hay polyline kín

    - Hatch                       : cùng diện tích, truy tìm các node đường bao (nếu có) của hatch, thuật toán cũng làm như polyine kín. nếu không có node đường bao như hatch của 1 circle, 1 ellipse, thì thuật toán so sánh đường bao giống như circle hoặc ellipse.

    - Block thường                       : cùng tên block, cùng tỷ lệ chèn

    - BlockATT                             : cùng tên block, cùng tỷ lệ chèn, các cặp att (cùng tên tag) có giá trị chuỗi giống nhau,

    - Block không Att, dynamic : cùng tên block, cùng tỷ lệ chèn X, Y, Z, các cặp giá trị thuộc tính động cùng tên giống nhau

    - Block có Att, dynamic        : cùng tên block, cùng tỷ lệ chèn X, Y, Z, các cặp att (cùng tên tag) có giá trị chuỗi giống nhau, các cặp giá trị thuộc tính động cùng tên giống nhau.

    Sơ sơ đã là 12 trường hợp để so sánh các đối tượng 2D "giống nhau".

    Mình viết được lisp này, nhưng mất rất nhiều thời gian.

     

     

     

    • Like 2

  4. 19 giờ trước, thgbao đã nói:

    Là sao bác chỉ rõ giúp chứ em cũng newbie mấy cái này ? 

    Link file thì đã kèm theo ngay dòng 2.

    Bạn vào cad của máy khác "vẫn chạy được" lisp này, tìm file ll.dcl trong thư mục Support. Thư mục Support nằm ở 2 vị trí như sau:

    - thư mục Support nằm trong thư mục cài đặt Autocad,

    - thư mục Support nằm trong đường dẫn: (ví dụ, trên cad 2014, là ở đây:    C:\Users\ADMIN\AppData\Roaming\Autodesk\AutoCAD 2014\R19.1\enu\Support)

    Bằng cách: gõ lệnh PLOTTERMANAGER, cad sẽ mở 1 trình quản lý File explorer, pick vào thư mục Enu, sau đó pick vào thư mục Support,

    tìm và copy file ll.dcl này về 1 trong 2 thư mục Support của cad (như trên) vào máy mà bạn muốn chạy.
    Nhân tiện bạn tìm được file ll.dcl , bạn share lên diễn đàn cho mọi người được sử dụng.

    Chúc bạn thành công.

    • Like 1

  5. Vào lúc 4/3/2022 tại 12:27, trancongphuc2002 đã nói:

    như ví dụ 1 trên hàm LOAD bị thiếu dấu nháy kép đúng không bác

    Ngoài ra, bạn đọc "Lập trình thiết kế với Autolisp..." của 2 tác giả Nguyễn Hữu Lộc -Nguyễn Thanh Trung, có những lỗi tôi thấy sau:

    Tập 1:

    -trang 167, dòng 20: ";Kết thúc đối số COND thứ nhất"        đúng phải là ;Kết thúc đối số COND thứ hai

                       dòng 25: argument                                                   đúng phải là không có chữ này

    Tập 2:

    - trang 32, dòng thứ 4, 5, 7, 8: "Hàm ENTMODE"                     đúng phải là ENTMOD

    -trang 160, dòng 21: (gread)                                                      đúng phải là (grread)

    - trang 174, dòng 21: err_tile                                                      đúng phải là  errtile 

      Nhờ các bạn kiểm chứng thêm...

    • Like 2

  6. 4 giờ trước, cuongtk2 đã nói:

    Cơ bản như thế này

    
    (defun c:test ( / D E I N OBJ PT SS)
    (setq ss (ACET-SS-TO-LIST (ssget '((0 . "INSERT")))))
    (setq n (length ss)
          i 0)
    (vl-sort ss '(lambda (e1 e2) (> (cadr (acet-dxf 10 (entget e1)))
                                   (cadr (acet-dxf 10 (entget e2)))
                                   )) )
    (setq pt (getpoint "\nVi tri moi")
          d (getdist "\nKhoang dan dong" pt))
    (while (< i  n)
      (progn
        (setq e (nth i ss)
          obj (vlax-ename->vla-object e))
        (vla-put-InsertionPoint obj (vlax-3d-point(polar pt (* pi 1.5) (* d i))))
        )
      (setq i (1+ i))
      )
      (princ)
      )
    
             

     

    He he, đây là các block động chứ có phải block thường đâu mà mà viết vậy @cuongtk2

    Đề bài đặt ra cũng hay, mong @cuongtk2 viết nốt phần còn lại khi xử lý các block động.

    A6OYlj.gif

    • Like 1

  7. 23 giờ trước, anhGeodesy đã nói:

    Các bác cho em hỏi cách tách số 1234 gán vào các biến a=1, b=2, c=3, d=4 . cảm ơn các bác!

    (defun setq_split_strnum (str / n m ls)
        (setq n -1 m 96)
        (setq ls (mapcar 'chr (vl-string->list str))) 
        (repeat (length ls)
            (set (read (chr (setq m (1+ m)))) (atoi (nth (setq n (1+ n)) ls)))        
        )
    )

    Bạn dùng hàm này với biến str là một chuỗi số. Hàm gán giá trị từng con số trong biến str vào các biến

    a = ...

    b=...

    c=...

    ....

    z=...

    Có thể gán giá trị đến 26 biến a, b, c,...z như ý muốn của bạn.

    • Vote tăng 1

  8. Các toạ độ tâm CIRCLE, ARC trong bản vẽ được quy chiếu theo 2 trục line màu đỏ nét CENTER2, hai đường này song song với trục tung và trục hoành nên có thể nói UCS đã chuyển đến điểm gốc quy chiếu này và không xoay. Bản vẽ gửi lên cũng đang là WCS, các điểm (dxf 10) của các dimordinate này đều quy về 1 điểm gốc quy chiếu này.

    Đây là bản vẽ cơ khí có nhiều hệ lỗ, những dữ liệu toạ độ CIRCLE, ARC này có thể là đầu vào cho máy CNC chạy.

    image.png.0d8e7fd856515b34d2f513c1cfafcc49.png


  9. 3 giờ trước, cuongtk2 đã nói:

    Viết thế này cho gọn @thiep

    (setq ent (entsel)
          cent (acet-dxf 10 (entget (car ent)))
          pick (cadr ent)
          r (distance cent pick)
          ang (angle cent pick)
          phantu (* pi 0.25)
          ang (fix (/ ang phantu)
          ang (* ang phantu)           ; p13_1,  p14_1
          ang1 (+ ang phantu)       ;  p13_2,  p14_2
          )
     

    Đầu tiên là Thiệp tranh thủ nghĩ ra viết liền, không kịp nghĩ dùng thuật toán (fix 1/4pi) để xác định điểm pick ở góc nào của đường tròn . Cảm ơn @cuongtk2


  10. Lệnh po0: tạo điểm quy chiếu, (giống như dời điểm gốc hệ toạ độ (0 0 0) về điểm này)

    Lệnh TDT: tạo DimOrdinate cho CIRCLE, ARC

    ;;;Lisp AdddimOrdinate cho tâm CIRCLE, ARC         by Trân Thiêp 10/2021, tel 0918841230
    (defun c:po0 (/)
        (setq po0
                 (getpoint '(0 0 0)
                     "\nPick 1 \U+0111i\U+1EC3m to\U+1EA1 \U+0111\U+1ED9 quy chi\U+1EBFu"
                 )
        )
    )
    (defun c:tdt (/ doc      *model   ucs_old  po13_1   po14_1   po13_2   po14_2
                    90d      270d     360d     ent      centpo   eng      ang
                    R        obdX     obdY     engX     engY     entodimX entodimY
                    sel      popick
                   )
        (setq doc    (vla-get-ActiveDocument (vlax-get-acad-object))
              *model (vla-get-modelspace doc)
        )
        (defun *error* (msg)
            (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
                (princ (strcat "\n** Error: " msg " **"))
            )
            (acet-sysvar-restore)
            (vla-EndUndoMark doc)
            (princ)
        )
        (vla-StartUndoMark doc)
        (acet-sysvar-set (list "cmdecho" 0 "osmode" 33))
        (setq ucs_old (acet-ucs-get nil))
        (acet-ucs-cmd '("w"))
        (setq 90d  (/ pi 2)
              360d (* pi 2)
              270d (* 90d 3)
        )
        (or po0 (setq po0 (getpoint "\nPick 1 \U+0111i\U+1EC3m to\U+1EA1 \U+0111\U+1ED9 quy chi\U+1EBFu")))
        (setvar "osmode" 0)
        (while
            (OR (NOT (setq sel (entsel "\nPick a CIRCLE, ARC")))
                (NOT (wcmatch (acet-dxf 0 (setq eng (entget (setq ent (car sel)))))
                              "CIRCLE,ARC"
                     )
                )
            )  (prompt "\nPick ch\U+01B0a Ðúng CIRCLE, ARC vui lòng pick l\U+1EA1i")
        )
        (setq popick (cadr sel))
        (setq centpo (trans (acet-dxf 10 eng) 0 1)
              R      (acet-dxf 40 eng)
        )
        (setq ang (angle centpo popick))
        (cond ((< 0 ang 90d)
               (setq po13_1 (polar centpo 0 R)
                     po14_1 (polar po13_1 0 10)
                     po13_2 (polar centpo 90d R)
                     po14_2 (polar po13_2 90d 10)
               )
              )
              ((< 90d ang pi)
               (setq po13_1 (polar centpo pi R)
                     po14_1 (polar po13_1 pi 10)
                     po13_2 (polar centpo 90d R)
                     po14_2 (polar po13_2 90d 10)
               )
              )
              ((< pi ang 270d)
               (setq po13_1 (polar centpo pi R)
                     po14_1 (polar po13_1 pi 10)
                     po13_2 (polar centpo 270d R)
                     po14_2 (polar po13_2 270d 10)
               )
              )
              ((< 270d ang 360d)
               (setq po13_1 (polar centpo 0 R)
                     po14_1 (polar po13_1 0 10)
                     po13_2 (polar centpo 270d R)
                     po14_2 (polar po13_2 270d 10)
               )
              )
        )
        (setq obdX (vla-AddDimOrdinate *model
                                       (vlax-3d-point (trans po13_1 1 0))
                                       (vlax-3d-point (trans po14_1 1 0))
                                       :vlax-false
                   )
        )
        (setq obdY (vla-AddDimOrdinate *model
                                       (vlax-3d-point (trans po13_2 1 0))
                                       (vlax-3d-point (trans po14_2 1 0))
                                       :vlax-true
                   )
        )
        (setq engX (entget (setq entodimX (vlax-vla-object->ename obdX))))
        (entmod (subst (cons 10 po0) (assoc 10 engX) engX))
        (entupd entodimX)
        (setq engY (entget (setq entodimY (vlax-vla-object->ename obdY))))
        (entmod (subst (cons 10 po0) (assoc 10 engY) engY))
        (entupd entodimY)
        (acet-sysvar-restore)
        (acet-ucs-set ucs_old)
        (vla-EndUndoMark doc)
        (princ "\nOk")
        (princ)
    )

    Chúc vui vẻ. Thiep

    • Like 1

  11. 15 giờ trước, alisp đã nói:

    Bác gỡ lỗi xong chưa mà không thấy đưa code lên? Còn pick chọn circle thì nên quét chọn rồi suy ra điểm cần lấy toạ độ thì hay hơn là pick từng circle một. Hy vọng bác làm xong và đưa lên cho mọi người tham khảo.

    Ui, cơm áo gạo tiền, nó thúc mông chạy trối chết. Lisp đã fix xong, đang chạy rô đa,

    Cái điều "quét chọn" các circle như @alisp nói mình cũng muốn lắm, nhưng nó liên quan đến thuật toán "chật chội", mà viết thuật toán này lâu lắm. Mục đích là để lisp hiểu chỗ nào chật chội th ì không tạo dimordinate, tìm chỗ rộng để tạo dimordinate. Như hình dưới đây thì tìm chỗ rộng, và bẻ khúc dim nữa thì thật khó chịu.

     

    image.png


  12. 1 giờ trước, cuongtk2 đã nói:

    Dim dưới và phải.

    
    (defun c:test ( / CENT ENT P1 P1A P2 P2A RAD)
    (setq ent (entget (car (entsel))))
    (setq cent (acet-dxf 10 ent)
          rad (acet-dxf 40 ent)
          p1 (polar cent 0 rad)
          p1a (polar cent 0 ( * rad 1.2))
          p2 (polar cent (* pi 1.5) rad)
          p2a (polar cent (* pi 1.5) ( * rad 1.2))
          )
    (command "dimordinate" p1 p1a)
    (command "dimordinate" p2 p2a)
    )

     

    @cuongtk2Thiệp đã viết lisp, nhưng không dùng hàm "command" chỉ dùng hàm entmake, và đang rắc rối 1 chút về UCS và WCS, nhưng có thể gỡ lỗi được. 1 ý nữa là chỉ cần pick chọn đường tròn, từ điểm pick, lisp hiểu sẽ tạo 2 dimordinate ở 2 điểm quadrant nào, không nên cứng nhắc chỉ là tạo 2 dimordinate dưới và phải.

    • Like 1
    • Vote giảm 2

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

    DIMORDINATE là dim cho tọa độ X, Y của 1 điểm bất kỳ, nó không liên quan gì đến đường tròn. 

    Vậy bạn cần là đặt lại chế độ bắt điểm cho phù hợp vào node 1/4 đường tròn là được.

    Ở bản vẽ này, bắt điểm Quadrant để tạo dim_ordinate cũng không đúng. Thiệp vừa tạo dim_ordinate  (màu vàng) nó khác xa với dim_ordinate màu cyan trong bản vẽ?

    image.png.d90f1b67eea38a7be84f53d2eba23def.png

    • Vote tăng 1
    • Vote giảm 1

  14. 11 giờ trước, vietnam1 đã nói:

    http://adaucogit.blogspot.com/2010/09/automatic-ordinate-dimensioning.html#more

    Dim giống trong bài này ở dòng số 7 bác ah. dim từ cạnh của đường tròn chứ không phải từ tâm của đường tròn. Em thấy nhiều lisp dim từ tâm của đường tròn ra. Còn lisp từ cạnh của đường tròn lại không có.

    test dimordinate.dwg

    Trong bản vẽ test dimordinate.dwg này, không thấy toạ độ tâm đường tròn được dim_ordinate. Bạn phải nói rõ hơn về các dim màu cyan được tạo như trong hình, bắt điểm từ đâu để tạo dim_ordinate?

     

    image.png

    • Vote tăng 1
    • Vote giảm 1

  15. 18 giờ trước, vietnam1 đã nói:

    CHÀO CÁC BÁC TRONG DIỄN ĐÀN, BÁC NÀO CÓ LISP NÀO GHI ĐƯỢC KÍCH THƯỚC CHO ĐƯỜNG TRÒN KIỂU NÀY KHÔNG Ạ?

     

    image.png

    Nhìn hình vẽ rất rối, bạn có thể tinh giản lại hình ảnh hoặc 1 file dwg nhỏ thôi, trước và sau khi dùng lisp . Có thể tôi hay ai đó trên diễn đàn này giúp bạn.

    • Vote tăng 1
    • Vote giảm 1
×