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

ngokiet

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

    353
  • Đã tham gia

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

  • Ngày trúng

    31

Cộng đồng

126 (tàm tạm)

About ngokiet

  • Cấp bậc
    biết dimordinate

Khách truy cập Tiểu sử gần đây

2.123 chế độ xem tiểu sử
  1. ngokiet

    [TÌM CAO NHÂN] LISP THỐNG KÊ ĐA GIÁC PLINE

    Không biết chủ thớt có phân biệt hình đối xứng nhau không? Ví dụ 2 tam giác đối xứng nhau thì có đầy đủ tính bạn xét nhưng chiều quay ngược nhau.
  2. ngokiet

    [TÌM CAO NHÂN] LISP THỐNG KÊ ĐA GIÁC PLINE

    ·- Vấn đề là mình hỏi là đã giải quyết các vấn đề này chưa thôi? Chứ có vấn đề là giải quyết được hết. Vì mình tính viết thử nhưng có bạn viết rồi thôi. Cách suy nghĩ mình so sánh đa giác là dựa trên n cạnh và n góc. Cho nên khi so sánh cũng đơn giản. Nếu tìm hình đồng dạng thì góc không thay đổi chỉ tính tỉ lệ cạnh. Cách dịch chuyển hay đảo chiều cũng dễ.
  3. ngokiet

    [TÌM CAO NHÂN] LISP THỐNG KÊ ĐA GIÁC PLINE

    Mình hỏi trước đó là ví dụ như tứ giác bất kỳ ABCD thì vẽ ngược lại DBCA hay thứ tự đỉnh khác là CDAB thì tứ giác đó giống nhau nhưng lisp phân biệt hay thống kê chung luôn? Thật sự thì cũng dễ nhưng để khỏi sót thôi. Thay vì so sánh 1 lấn thì phải so sánh nhiều lần hơn thôi. (n cạnh thì so sánh 2n lần). Tuy nhiên nếu sơ bộ diện tích, chu vi kiểm tra trước thì cũng ít phải so sánh.
  4. ngokiet

    Lisp tạo bảng thống kê ATT cùng tên trong block khác nhau

    Viết sơ cho bác. Do bãn vẽ khá là lộn xộn cách đặt tên block, tên tag nên mình chỉ phỏng đoán 1 phần. Block AUX-AUX thì mình không biết là 24VDC hay 220VAC nên mình cứ để tọa độ vào. Block 51X thì lấy tag 51X là tương ứng tag AUX. Không biết là NO hay NC. Còn thống kê thì mình làm 1 bảng dài. Thích copy đoạn nào thì copy., xong thì overkill thì line sẽ nối lại. Nếu Ok thì trả phí cho mình (Inbox nhé) tka.rar
  5. ngokiet

    [TÌM CAO NHÂN] LISP THỐNG KÊ ĐA GIÁC PLINE

    Bác có xét ABCD vs BCDA hay DCBA không vậy? Hay là chỉ mới test copy đa giác ra thôi?
  6. ngokiet

    Hỏi về Lisp (thuật toán, ý tưởng, coding,...)

    Cái "C:\\test1\\test2\\test3" thì Cad hiểu là cái dưới Còn cái "C:\test1\test2\test3" thì cad hiều /t là tab ascii là 9 Vì vậy (LM:StringSubst "\t" "\\t" "C:\\test1\\test2\\test3")
  7. ngokiet

    Xin lisp chuyển bảng mã UTF-8 sang Unicode và ngược lại

    Bạn có vấn đề gì với utf-8/unicode. Nếu chỉ là người dùng thì nó là 1 thôi. Cad chọn cách lưu text là unicode hay utf-8 là tùy cad. Nên về người sử dụng là như nhau.
  8. ngokiet

    Xin trợ giúp dựng hình khối không gian 3d

    Vẽ hình khối đơn giản thì cứ lấy mặt bằng , mặt đứng Extrude lên rồi intersect là có phần giao. Nếu không thì vẽ từ 1 mặt. mặt kia dùng slice là được. - Còn kích thước chính xác thì có thể dùng grid. Nhấn ctrl + chọn cạnh. Nhấn Ctrl chuyển chế độ kéo đánh kích thước vào thôi.
  9. ngokiet

    Lisp Chuyển Đổi Mã Font Chữ Trong Autocad

    Nó thay đổi 1 đống. Toàn mấy hàm hay dùng để xử lý string nên các hàm convert này phải sửa lại hết https://help.autodesk.com/view/OARX/2021/ENU/?guid=GUID-037BF4D4-755E-4A5C-8136-80E85CCEDF3E
  10. ngokiet

    Vẽ góc tiếp tuyến đường tròn

    Rõ ràng bắt tanger không được đánh góc vì góc phải xác định điểm base. Nên muốn vẽ thì phải tìm phương án khác thôi. Suy nghĩ nhanh được cách nào thì làm cách đó thôi. Còn cách nhanh thì có thể vẽ line thăng đứng qua điểm quad tiếp xúc vòng tròn rồi quay theo tâm vòng tròn 15 độ là xong. Mình trả lời để bạn ấy suy nghĩ thoáng 1 chút trong cách vẽ thôi chứ không bắt buộc phải cố gắng làm chuyện không thể. Lý do cad vẽ bắt điểm 1 số trường họp điểm động thì sẽ thiếu 1 số chức năng.
  11. (defun c:nd(/ ss tt st i) (or (setq ss (vl-sort (mapcar '(lambda(x) (cons (vla-get-EffectiveName (setq x (vlax-ename->vla-object x))) (vlax-safearray->list(vlax-variant-value(vla-get-insertionpoint x))))) (acet-ss-to-list (ssget '((0 . "INSERT"))))) '(lambda(x y) (if (eq (car x) (car y)) (< (caddr x) (caddr x)) (< (car x) (car y)))))) (exit)) (setq tt (list (car ss)) i 1) (foreach x (append (cdr ss) '(nil)) (if (eq (car x) (caar tt)) (setq tt (cons x tt)) (progn (or (tblsearch "LAYER" (setq st (strcat "Noi Diem " (itoa i)))) (entmake (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord")'(100 . "AcDbLayerTableRecord") (cons 2 st) '(70 . 0)))) (entmakex (vl-list* '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") (cons 8 st) '(100 . "AcDbPolyline") (cons 90 (length tt)) '(70 . 0) (mapcar '(lambda (x)(cons 10 (cdr x))) tt))) (setq tt (list x) i (1+ i))))) (princ)) Viết nhanh .Sài đỡ.
  12. ngokiet

    Vẽ góc tiếp tuyến đường tròn

    Bạn vẽ Cad mà cứ nghĩ vẽ đường nào đúng đường đó là không nên. Bạn nên nghĩ đến vẽ các đường phụ đễ xác định đường mình cần vẽ. Tùy theo tình hình mà nên vẽ cái nào trước. Nếu có sẵn 1 số thứ thì vẽ riêng rồi move vào cũng được. Nếu mình vẽ mới hết thì mình vẽ vậy Tuy nhiên do thực tế thì thường người ta ve 3 cái lỗ tròn trước. Nên bạn có thể vẻ 3 bước đầu rồi move về tâm vòng tròn trên là dc. Nên bật polar tracking (F10) với góc 15 là dễ vẽ hơn
  13. Ở đây cũng có lọc chọn màu rồi nè. Chỉnh sửa chút xíu nữa là được.
  14. ngokiet

    Hỏi cách chuyển layer đường tròn

    À mình mới thử. Thấy đúng. string hay int đều được. @vanlam6408 Hình như bác ít test bằng Console trong vlide. Bác vào vlide nhấn F6. Cửa sổ dòng lệnh hiện ra thì bác có thể test thoải mái mà. Ví dụ như đánh (vla-put-color (vlax-ename->vla-object(car(entsel))) "2") Thì nó sẽ cho chọn object và set color là 2. Hay nhấn (getvar "CECOLOR") là nó trả lới giá trị của cecolor. Vì vậy bạn có thể test nhanh lệnh nào sai để sửa lại cho đúng. Lệnh gộp cũng có thể tách ra test thử. Hy vọng bác có thể nhanh viết lisp được riêng cho mình. Mình không thích vla nhiều mà thích lisp thường hơn. Nó nhanh hơn dùng vla vì khi sài vla nó sửa từng lần 1 trong bản vẽ. Còn entmod thì nó sửa 1 lần nên nhanh hơn. Nhất là khi vẽ mấy bãng table. Vla thích hợp khi đọc dữ liệu từ các app khác nhiều hơn.
  15. ngokiet

    Hỏi cách chuyển layer đường tròn

    (getvar "CECOLOR") của mình nó cho ra kết quả string nên cái (cc) sau đổi thành (atoi cc) @vanlam6408 Cái cc chỉ cho vla-put-color thôi. Bác sửa đoạn (vla-put-Color x (getvar "CECOLOR")) thành (vla-put-Color x cc) các thứ khác giữ nguyên. Còn lỗi "error: bad DXF group: (-1 . #<VLA-OBJECT IAcadLWPolyline 2342be54>)" là do bác dùng list là object chứ không phải là ename. Còn không có acet thì lisp trên của mình sửa lại vậy. (setq ll (list (cons 8 (getvar 'clayer)) (cons 6 (getvar 'celtype)) (cons 62 (if (eq (setq ll (getvar "cecolor")) "BYLAYER") 256 (if (eq ll "BYBLOCK" ) 0 (atoi ll)))) (cons 370 (getvar 'celweight)))) (mapcar '(lambda(x) (entmod (cons (cons -1 x) ll))) (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget)))))
×