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

NGUYENVANHIEUGTVT

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

    49
  • Đã tham gia

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

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


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

    Uh, sr mình nhầm 1 chút ở đối tượng là line, lsp sửa:

    DoubleOffsetV1-1.lsp

    Dạ quá thành công rồi Bác nhưng có cái nữa là có chức năng là chọn layer sau khi offset Bác có thể giữ nguyên như ban đầu được không ạ ! Do thói quen E lâu giờ muốn giờ đã dùng giờ khác nhìn lạ quá :v
    nếu có thể Bác điều chỉnh chút ạ. Em cảm ơn nhiều lắm
     


  2. 15 phút trước, thiep đã nói:

    thiếu mấy chức năng ban đầu là chức năng gì bạn?

    Có 1 chức năng Through tôi bỏ qua dùng để tìm khoảng cách offset khi pick 2 điểm. Có phải vậy không hay còn gì khác nữa không bạn.

    Dạ e chào Bác lisp Bác thêm vào đó mà các chức năng như có trong lisp Lee-Mac bị lỗi dùng k đc, các chức năng về xóa nét sau khi offset, rồi chuyển layer khi offset đều k dùng đc, Bác xem lại dùm E với vì lâu nay dùng Lisp của Lee-Mac quen rồi nên giờ k dùng đc bất tiện quá, E chỉ muốn thép chức năng khép kín line hoặc polyline thôi ạ, Còn mọi chức năng khác vẫn đc giữ nguyên. Làm phiền Bác chút nhưng mong Bác xem lại với Ạ !


  3. Vào lúc 23/2/2020 tại 11:44, thiep đã nói:

    Hi NGUYENVANHIEUGTVT,

    Đã thêm bớt 1 vài dòng lệnh lisp của Lee Mac, bạn chạy thử:

    DoubleOffset.LSP

    Bác ơi lisp hoạt động rất tốt k lỗi gì cả, nhưng Bác có thể bổ sung lisp của Lee-Mac là điểm kết thúc nhưng mọi chức năng lisp đều đc giữ nguyên đc k ạ, vì mấy hôm đang sử dụng cái lisp của Lee-Mac quen thao tác rồi mà trong khi lisp phía trên Bác bổ sung lại thiếu mấy chức năng ban đầu thành ra bất tiện quá.. Làm phiền Bác quá nhưng mong Bác giúp đỡ với ạ ! cảm ơn Bác đã quan tâm.


  4. Mình sưu tầm trên trang Web của Lee-Mac thì có cái lisp offset này khá hay, nhưng bây giờ mọi người có thể bổ sung chút nữa là khi dùng lệnh thì 2 đường offset mới có thể đc đóng kín như hình vẽ đc k ạ. Mình đính kèm file lisp bên dưới để mọi người xem qua ạ.

    Mình cũng đã tìm trên diễn đàn các nội dung tương tự nhưng chưa thấy. Mong mọi người giúp đỡ ạ !

    image.png.a4af4d3ad53a4b5c8c29966494c334bd.png

    DoubleOffsetV1-1.lsp


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

    đây bác.

    xlContinuous = 1

     

    Full Code thì đây:

    https://www.experts-exchange.com/viewCodeSnippet.jsp?codeSnippetId=20-37668660-2

    Bác có thể xem qua dùm e mã code VBA k ạ, em sửa mãi mà k sửa đc lỗi đấy, em hơi gà mờ về VBA nên Bác thông cảm .. 

    image.png.7f8c290f5d9b53ea30e2222e2edf4478.pngimage.png.1ffbe0a51ac1186c5e059e60fbb588a0.png

    Xac dinh toa do cac diem trong Acad.rar


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

    bác sẽ phải thay thế hết các hằng số xl... bằng các giá trị CONST mà em gửi theo link đó nhé.

     

    Em tìm code giá trị xlContinuous và xlThin để khai báo mà k thấy có trên link Bác gửi ở trên, mà tìm mãi trên web cũng k thấy, Bác tham khảo dùm e với 


  7. 1 giờ trước, CadExTools đã nói:

    Trả lời bạn:

    1. Đôi tượng Excel nếu bạn dùng liên kết sớm thì code trên ko sao cả.

    2. Code của bạn đang dùng Liên Kết Muộn (Đối tượng ExcelObj đang khai báo dạng Object) nên nó sẽ không hiểu các giá trị xlCenter này.

    Nên bạn tham khảo link sau để sửa nhé.

    https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.excel.constants?view=excel-pia

     

    Cụ thể bạn khai báo như sau:

    Const xlCenter as Long = -4108

     

    Em sửa theo Bác đến chỗ này lại bị lỗi Code như sau ạ ! Bác hướng dẫn dùm e chút nữa vớiimage.thumb.png.e06e109486d9877c10fe819e3ff94785.png


  8. Mình có bản lập trình xuất tọa độ Cad sang Excel và xuất trực tiếp sang Cad bằng chương trình VBA. Trong đó chức năng Excel thì bị như lỗi trên ảnh còn trực tiếp sang cad thì vẫn bình thường. Mọi người có biết thì xử lý dùm mình với ạ !, mình đính kèm file VBA bên dưới mong mọi người trên diễn đàn biết và giúp đỡ ạ, mình dùng Autocad 2020 và Excel 2010

     

    image.thumb.png.3fa5b43adf1a92d59694d12feb211c37.png

    Xac dinh toa do cac diem trong Acad.rar


  9. 7 phút trước, duy782006 đã nói:
    
    (defun c:abc(/ ss n i S duyet ent sst nt j St duyett entt Skq)
    (prompt "\n Chon cac Dim cong:")
    (setq ss (ssget '((0 . "DIMENSION"))))
    
    (setq n (sslength ss) i 0 S 0 duyet 0)
    
    (while (< i n)
    (setq ent (entget(ssname ss i)))
    
    (if (= (cdr(assoc 1 ent)) "")
    (setq duyet (cdr(assoc 42 ent)))
    (setq duyet (atof(cdr(assoc 1 ent))))
    )
    (setq S (+ S duyet))
    (setq i (1+ i))
    )
    (Luachon S)
    (princ)
    )
    (defun Luachon(tbinh)
     (setq elst (entget (car (entsel "\n Thay cho so: "))))
     (setq ndc (cdr (assoc 1 elst)))
     (setq elst (subst (cons 1 (strcat ndc ", L=" (rtos tbinh 2 0))) (assoc 1 elst) elst))
    (if (assoc 62 elst)
    (setq elst (subst (cons 62 80) (assoc 62 elst) elst))
    (setq elst (append elst (list (cons 62 80))))
    )
    (entmod elst)
    (princ)
    )

    Chỉ sửa chút chổ xuất kết quả thôi nghen. các phần khác mình ko chịu trách nhiệm nhé.

    Em cảm ơn Bác nhé, có cách nào lúc mình xuất kết quả thì kết quả sẽ thay thế giá trị sau chữ "L=".
    VD: ban đầu text là "L=123" sau khi dùng lệnh thì kết quả mới sẽ thay thế thành "L=456".

     


  10. 23 giờ trước, quansla đã nói:

    Nói bán kính thì mình chỉ xử lý bán kính nhé ^T^ 

    • ttd_trudim.lsp
      lisp help
    •  
    
    ;; free lisp from cadviet.com
    ;; this lisp was downloaded from https://www.cadviet.com/forum/topic/205-vi%E1%BA%BFt-lisp-theo-y%C3%AAu-c%E1%BA%A7u/?page=84&tab=comments#comment-62720
    (defun c:TTD(/ ss n i S duyet ent sst nt j St duyett entt Skq)
    (prompt "\n Chon cac Dim cong:")
    (setq ss (ssget '((0 . "DIMENSION")
    		  (-4 . "<not")
    		  (100 . "AcDbDimension")
    		  (-4 . "not>")
    		  )))
    
    (setq n (sslength ss) i 0 S 0 duyet 0)
    
    (while (< i n)
    (setq ent (entget(ssname ss i)))
    
    (if (= (cdr(assoc 1 ent)) "")
    (setq duyet (cdr(assoc 42 ent)))
    (setq duyet (atof(cdr(assoc 1 ent))))
    )
    (setq S (+ S duyet))
    (setq i (1+ i))
    )
    
    
    (alert (rtos S 2 0))
    
    (princ)
    )
    (defun c:Trudim(/ ss n i S duyet ent sst nt j St duyett entt Skq)
    (prompt "\n Chon cac Dim lam so bi tru :")
    (setq ss (ssget '((0 . "DIMENSION"))))
    
    (prompt "\n Chon cac Dim lam so tru :")
    (setq ss (ssget '((0 . "DIMENSION")
    		  (-4 . "<not")
    		  (100 . "AcDbDimension")
    		  (-4 . "not>")
    		  )))
    
    (setq n (sslength ss) i 0 S 0 duyet 0)
    (setq nt (sslength sst) j 0 St 0 duyett 0)
    
    (while (< i n)
    (setq ent (entget(ssname ss i)))
    
    (if (= (cdr(assoc 1 ent)) "")
    (setq duyet (cdr(assoc 42 ent)))
    (setq duyet (atof(cdr(assoc 1 ent))))
    )
    (setq S (+ S duyet))
    (setq i (1+ i))
    )
    
    (while (< j nt)
    (setq entt (entget(ssname sst j)))
    
    (if (= (cdr(assoc 1 entt)) "")
    (setq duyett (cdr(assoc 42 entt)))
    (setq duyett (atof(cdr(assoc 1 entt))))
    )
    (setq St (+ St duyett))
    (setq j (1+ j))
    )
    
    (setq Skq (- S St))
    
    (alert (rtos Skq 2 0))
    
    (princ)
    )

     

    Bác kiểm tra lại lisp dùm e cái, quét chọn đối tượng Dim k được !

    • Vote giảm 1

  11. Mình tham khảo lòng vòng trên diễn đàn mấy ngày và chỉnh sửa được cái lisp tính tổng Dimension này. Bây giờ mình muốn nhờ mọi người viết thêm cho lisp này chút nữa là kết quả sau khi quét được thì sẽ ghi vào text có sẵn và ghi vào sau chữ "L=" như trên hình (giữ nguyên nội dung text phía trước) Cảm ơn Mn quan tâm và giúp đỡ ạ!

    Quote

    (defun c:abc(/ ss n i S duyet ent sst nt j St duyett entt Skq)
    (prompt "\n Chon cac Dim cong:")
    (setq ss (ssget '((0 . "DIMENSION"))))

    (setq n (sslength ss) i 0 S 0 duyet 0)

    (while (< i n)
    (setq ent (entget(ssname ss i)))

    (if (= (cdr(assoc 1 ent)) "")
    (setq duyet (cdr(assoc 42 ent)))
    (setq duyet (atof(cdr(assoc 1 ent))))
    )
    (setq S (+ S duyet))
    (setq i (1+ i))
    )
    (Luachon S)
    (princ)
    )
    (defun Luachon(tbinh)
     (setq elst (entget (car (entsel "\n Thay cho so: "))))
     (setq elst (subst (cons 1 (rtos tbinh 2 0)) (assoc 1 elst) elst))
    (if (assoc 62 elst)
    (setq elst (subst (cons 62 80) (assoc 62 elst) elst))
    (setq elst (append elst (list (cons 62 80))))
    )
    (entmod elst)
    (princ)
    )
     

     

    image.png.5119981df43062411a6ba50e155a7c6c.png

    • Vote giảm 1

  12. Mình tìm trên diễn đàn có lisp tính tổng Dimensions này. Nhờ mọi người sửa chút lisp này là lúc quét chọn đối tượng Dimensions thì bỏ qua k chọn đối tượng là "Bán kính".
    Và kết quả tổng Dimensions sẽ ghi vào sau chữ "L=" như trên hình. Mong mọi người hỗ trợ mình vơi ạ.. 
    cảm ơn mọi người nhiều !

    image.png.53f20e2d2041c1f4f37f9dafc0ecb9a6.png

    congdim_trudim.lsp


  13. 12 giờ trước, duy782006 đã nói:

    Tôi đã viết được như vầy rồi. các ký tự dư bạn tự bỏ bằng excel nhé. Tôi lười rồi. Lệnh là XTT

    
    (Defun duy:xd_listngngancach<kytu (chuoi kytu / chuoi kytu ckq) 
    (setq lkq nil)
    (setq bdd 1) 
    (setq b 1)
    (setq l (fix (strlen chuoi)))
    (repeat l
    (setq a (substr chuoi b 1))
    (cond
    ((= a kytu) 
    (setq dkt (substr chuoi bdd (- b bdd)))
    (setq lkq (append lkq (list dkt)))
    (setq bdd (+ b 1)) 
    )
    )
    (setq b (+ b 1))
    )
    (setq dkt (substr chuoi bdd (+ (- l bdd) 1)))
    (setq lkq (append lkq (list dkt)))
    lkq)
    ;;;;;;;;;;;;;;;;;;;
    (defun c:xtt ()
    (command "undo" "be")
    (princ "\nChon cac text can xuat")
    (setq taptextchon (ssget (list (cons 0 "TEXT"))))
    (setq vitrifiledulieu (getfiled "File xuat du lieu " "" "csv" 1))
    
    (setq filedulieu (open vitrifiledulieu "w"))
    
     (setq stt 0)
     (setq sotext (sslength taptextchon))
     (while (< stt sotext)
     (setq noidungdocduoc (cdr (assoc 1 (entget (ssname taptextchon stt)))))
    (setq nddongviet (duy:xd_listngngancach<kytu noidungdocduoc " "))
     (write-line (strcat (nth 0 nddongviet) "\;" (nth 1 nddongviet) "\;" (nth 2 nddongviet) "\;" (nth 3 nddongviet)) filedulieu)
     (setq stt (+ stt 1))
     )
    
    (close filedulieu)
    (command "undo" "end")
    )

     

    texraex.jpg

    Cảm ơn Bác rất là nhiều nhé, như vậy quá tuyệt vời rồi ...


  14. 21 giờ trước, duy782006 đã nói:

    -Nội dung dòng text thì chỉ có 3 gia trị trong khi excel thì có 6 giá trị thì còn 3 giá trị kia lấy ở đâu.

    -"đối tượng text" ở đây là cái giống gì: dtext, mtext, att. blockatt. Tốt nhất là up file cad lên và đời cad thấp 1 tí (2007 chẳng hạn)

    Cảm ơn Bác quan tâm..

    - các giá trí mình cần đưa vào Excel là "ký hiệu tên thanh", "số lượng cây", "đường kính cây" và "chiều dài" từ các thông số này mình sẽ tính được khối lượng và xuất ra excel luôn.
    - Mình để cái file Cad tham khảo phía dưới nhờ các bác xem hộ cái ạ..

    10. DSB2F - B2D ~ Reinforcement Column - L1B.DWG


  15. Mình đang làm bản vẽ kết cấu thì công việc nhập khối lượng từ Autocad sang Excel được lập đi lập lại rất nhiều tốn rất nhiều thời gian.
    Mọi người cho mình nhờ chút là có cách nào khi mình quét toàn bộ các text trong Autocad thì dữ liệu của đối tượng text có như hình sẽ nhập sang excel với các cột và hàng được sắp xếp thứ tự như hình không ạ.
    Mình biết là ngôn ngữ lập trình VBA có thể làm được nhưng món này thì mình k rành.. mong mọi người giúp đỡ.

    Cảm ơn mọi người quan tâm !

    Capture.PNG

    • Vote giảm 1
×