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

Danh Cong

Moderator
  • Số lượng nội dung

    1.387
  • Đã tham gia

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

  • Ngày trúng

    117

Bài đăng được đăng bởi Danh Cong


  1. Lisp cộng số trong Text

     

    ;Lisp Congtext

     

    (defun c:congtext ()
    (prompt "\nChon Text")
    (setq sslist (ssget '((-4 . "<or")(0 . "TEXT")(0 . "MTEXT")(-4 . "or>"))))
    (setq number (SSLENGTH sslist)
          sum 0)
    (repeat number
     
    (setq Value (atof (cdr (assoc 1 (entget (ssname sslist 0))))))
    (setq sum (+ sum value))
    (ssdel (ssname sslist 0) sslist)
    )
    (setq ptext (getpoint "\nChon diem chen Text: \n"))
    (command "-text" ptext "" "" (rtos sum 2 2))
      (princ)
      )

     

    • Vote tăng 1

  2. Lisp Congtext

     

    (defun c:congtext ()
    (prompt "\nChon Text")
    (setq sslist (ssget '((-4 . "<or")(0 . "TEXT")(0 . "MTEXT")(-4 . "or>"))))
    (setq number (SSLENGTH sslist)
          sum 0)
    (repeat number
     
    (setq Value (atof (cdr (assoc 1 (entget (ssname sslist 0))))))
    (setq sum (+ sum value))
    (ssdel (ssname sslist 0) sslist)
    )
    (setq ptext (getpoint "\nChon diem chen Text: \n"))
    (command "-text" ptext "" "" (rtos sum 2 2))
      (princ)
      )

  3. mình chưa biết gì về autocad xin các bạn chỉ dẫn mình cách vẽ với ạ...mình đi học ban đêm còn ban ngày đi làm nên không có thời gian để học.xin cam ơn nhiều

    Nếu học cad 2D thì thử mấy video trên Youtube này xem.

    Ngày xưa mình cũng tự học cad cơ bản qua mấy video này. Sau 3 bài thì gọi là hiểu sơ sơ về cad. Muốn giỏi thì phải học nhiều.

     

    Bài 1:

    Bài 2:

    Bài 3:


  4. Xin hỏi các cao nhân, làm thế nào để ẩn đối tượng không cho hiển thị ở 1 layout

    cụ thể hơn. giả sử có đối tượng A và có 2 layout B và Layout C

    em muốn đối tượng A chỉ hiện thị ở layout B mà không hiển thị ở layout C 

    mặc dù cả 2 layout đó đều nhìn vào vị trí có đối tượng A

    Cụ thể hơn mời các pro xem bản vẽ kèm theo. Em thấy họ làm được điều đó mà mình không biết làm thế nào để làm được như vậy ? 

    xin được chỉ giáo

    file đính kèm minh họa: https://drive.google.com/file/d/0B0Tz2I4833XxQkh3al9BOFpDSVU/view

     

    Giải quyết dễ nhất thì làm thế này:

    B1: Đặt đặt đối tượng A vào 1 layer riêng.

    B2: Vào layout ."VPLAYER"---> Chọn "Freeze--> Gõ tên Layer bạn muốn khóa ---> Selec những Viewport muốn khóa Layer đó. --> Enter+ Enter ...

     

    Đọc thêm thảo luận này nếu muốn chi tiết. http://www.cadviet.com/forum/topic/165092-nho-cac-cao-thu-giai-dap-mot-so-van-de-hoc-bua-ve-cad/?do=findComment&comment=405624

    • Vote tăng 1

  5. Nói chung bạn cần cái gì ? Cái lisp bạn nói là Lisp nào của các anh chị trên diễn đàn.

     

    Chọn text thì sao ko bật FIlter lên. ? Chọn trong hay ngoài thì sao ko sử dụng Select kết hợp : WP : chọn đối tượng nằm trong vùng đa giác / CP : Chọn đối tượng nằm trong và giao cắt với đa giác.


  6. Cảm ơn bạn đã trả lời, nhưng mình không hề sử dụng lisp đổi màu nào cả, chỉ sử dụng trimdim thôi. Mình setup autocad về mặc định thì trở lại bình thường, nhưng xài một lúc lại bị lỗi!  :(

     

    Trong 1 lisp có thể chứ N lisp con bên trong  -_-  -_-​  Bác @Hà nói chắc ko sai đâu bạn.

    Ko thì bạn có thể kiểm tra lisp đưa vào:

    1: Nếu đã load nhiều lisp thì gỡ tất cả ra, sau đó lại load lại từng lisp 1. Gõ lệnh 1...2...3. xem bị đổi mầu ko.

    2: Nếu chỉ load 1 lisp: Vào lisp đó tìm kiếm từ khóa  C:1 ,  C:2   xem có không, nếu có thì gỡ nó ra. ( Đoán là bạn đang bị trường hợp này)


  7. LISP ghi diện tích. Lệnh GB.

     

    (defun c:gb(/ p ss S frome cur toe tt)

    (setq p (getpoint "\n Pick 1 diem vao mien trong hinh kin :") 
    ss (ssadd) S 0)
    (while p
    (setq frome (entlast))
    (command ".boundary" p "")
    (setq toe (entlast));; 
    (setq cur frome
    )
        (while (not (eq cur toe))
    (setq cur (entnext cur)
    ss (ssadd cur ss))
    (command "area" "S" "O" ss "" "")
    (setq tt (getvar "area"))
    (setq S (+ S tt))
         )
      (command "area" "A" "O" "L" "" "")
      (setq tt (getvar "area"))
      (setq S (+ S (* tt 2))) 
    (sssetfirst ss ss)
    (setq p (getpoint "\n Pick 1 diem vao mien trong hinh kin :"))
     
    )
    (if (> (sslength ss) 0)
    (progn 
    (princ (strcat "Area = " (rtos S 2 2)))
    (setq ptext (getpoint "Moi ban chon diem chen Text ^^ \n"))
    (command "-text" ptext "" "" (strcat "A=" (rtos S 2 2) " M2" ))
    )
    (alert "\n Ban chua Pick vao mien kin nao ca ")
    )
    (command "erase" ss "")
    (Princ)
    )

     

    • Vote tăng 1

  8. LISP SS của bạn có vấn đề gì đó mà mình ko chạy được. Nhưng mình cũng sửa 1 lisp cũ của bác nào đó theo ý bạn. Tác dụng tương tự.

    bác nào rảnh tay giúp em thêm đoạn xuất kết quả vào text có tiền tố, hậu tố

    vd: A=10m2, L=2m

    lisp này cũ cũng của các bác trên 4room nhưng em tìm mãi không được lisp ưng ý trên 4room hoặc không xài được. mong các bác giúp

    sẵn tiện lisp "ss" bác có thể sửa để cộng nhiều đối tượng tính diện tích không ak

    lisp của em đây. Thx các bác

    https://drive.google.com/drive/folders/0B18eA56nV_lKQjJIZmpLclltT0k?usp=sharing

     

    ;; free lisp from cadviet.com

    (defun c:gb(/ p ss S frome cur toe tt)
    (setq p (getpoint "\n Pick 1 diem vao mien trong hinh kin :") 
    ss (ssadd) S 0)
    (while p
    (setq frome (entlast))
    (command ".boundary" p "")
    (setq toe (entlast));; 
    (setq cur frome
    )
        (while (not (eq cur toe))
    (setq cur (entnext cur)
    ss (ssadd cur ss))
    (command "area" "S" "O" ss "" "")
    (setq tt (getvar "area"))
    (setq S (+ S tt))
         )
      (command "area" "A" "O" "L" "" "")
      (setq tt (getvar "area"))
      (setq S (+ S (* tt 2))) 
    (sssetfirst ss ss)
    (setq p (getpoint "\n Pick 1 diem vao mien trong hinh kin :"))
     
    )
    (if (> (sslength ss) 0)
    (progn 
    (princ (strcat "Area = " (rtos S 2 2)))
    (setq ptext (getpoint "Moi ban chon diem chen Text ^^ \n"))
    (command "-text" ptext "" "" (strcat "A=" (rtos S 2 2) " M2" ))
    )
    (alert "\n Ban chua Pick vao mien kin nao ca ")
    )
    (command "erase" ss "")
    (Princ)
    )

  9. LISP TL.

     

    LISP TL đã sửa.

     

    ;; free lisp from cadviet.com
    (defun Length1(e) (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)))
    ;;;--------------------------------------------------------------------
    (defun C:TL( / ss L e)
    (setq
    ss (ssget (list (cons 0 "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")))
    L 0.0
    )
    (vl-load-com)
    (while (setq e (ssname ss 0))
    (setq L (+ L (length1 e)))
    (ssdel e ss)
    )
    (setq ptext (getpoint "Moi ban chon diem chen Text ^^ \n"))
    (command "-text" ptext "" "" (strcat "L=" (rtos L 2 2) " M" ))
      (princ)
      )

     

    • Vote tăng 1

  10. LISP TL đã sửa.

     

    Em xin lỗi bác, em add nhầm folder. Em chỉ nhờ 2 lisp này thôi ak

    https://drive.google.com/drive/folders/0B18eA56nV_lKanAwdjlPb1dlaWc?usp=sharing

    cái lisp "ss" bác cho em cộng nhiều đối tượng được thì em cảm ơn nhiều

    ;; free lisp from cadviet.com
    (defun Length1(e) (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)))
    ;;;--------------------------------------------------------------------
    (defun C:TL( / ss L e)
    (setq
    ss (ssget (list (cons 0 "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")))
    L 0.0
    )
    (vl-load-com)
    (while (setq e (ssname ss 0))
    (setq L (+ L (length1 e)))
    (ssdel e ss)
    )
    (setq ptext (getpoint "Moi ban chon diem chen Text ^^ \n"))
    (command "-text" ptext "" "" (strcat "L=" (rtos L 2 2) " M" ))
      (princ)
      )

  11. Chạy LISP này thử coi.

     

     

    Của bạn đây: 

     

    (defun c:congtext ()
    (setq object (ssget '((0 . "*TEXT")))
          number 0)
    (repeat (sslength object)
      (progn
        (setq number (+ number (atof (cdr (assoc 1 (entget (ssname object 0)))))))
        (ssdel (ssname object 0) object)
      )
    )
     ;;;;; Chon text thay ket qua
      (setq sstext (car (entsel "Chon Text Thay Ket Qua ")))
      (setq sstext (subst (cons 1 (rtos number 2 2)) (assoc 1 (entget sstext)) (entget sstext)))
      (ENTMOD sstext)
      (princ)
      )
    • Vote tăng 1
    • Vote giảm 1

  12. Xin chào các anh. Mình tìm trên diễn đàn thấy cái này gần như cái em mong muốn. Nhờ các anh sửa giúp em bước sau cùng là output ra text mới thì sửa lại thành chọn text có sãn để thay đổi kết quả. Em cảm ơn cá anh.

    Ví dụ: Text 1: 22.5

              Text 2: 10,5

              Text 3: 2,34.

     Khi đó cộng Text 1 và Text 2 lại cho kết quả nhấp chọn vào Text 3 sẽ cho kết quả Text 3: 23,00

    Em cảm ơn các anh.

     

    Của bạn đây: 

     

     

     

    (defun c:congtext ()
    (setq object (ssget '((0 . "*TEXT")))
          number 0)
    (repeat (sslength object)
      (progn
        (setq number (+ number (atof (cdr (assoc 1 (entget (ssname object 0)))))))
        (ssdel (ssname object 0) object)
      )
    )
     ;;;;; Chon text thay ket qua
      (setq sstext (car (entsel "Chon Text Thay Ket Qua ")))
      (setq sstext (subst (cons 1 (rtos number 2 2)) (assoc 1 (entget sstext)) (entget sstext)))
      (ENTMOD sstext)
      (princ)
      )
    • Vote giảm 2

  13. Không phải chờ MOD giải đáp đâu! Vấn đề này cũng đã được nói nhiều, do lỗi diễn đàn.

    Mình cũng bị dính nhiều, tạm thời giải quyết bằng cách: tự mình đáp lại bài viết của mình (dùng nút: Lựa chọn trích dẫn, trả lời)... Hoặc xóa đi làm lại.

     

     

    Ketxu

    Mod k giải quyết được vấn đề này bạn nhé  :(

     

     

     

    :blink:  :blink:  :blink: Cảm giác như con bù nhìn trông chim ăn lúa anh ạ. Hix.


  14. Em đang có thắc mắc: Mong MOD giải đáp

    Em cũng mới tham gia vào diễn đàn, và cũng học hỏi từ diễn đàn khá nhiều.

     

    Nhưng gần đây em tham gia bình luận ở 1 số bài, hoặc viết thử 1 số đoạn lisp trả lời bình luận . Nhưng khi nhìn màn hình mày tính thì chẳng thấy đoạn Lisp đi sau đâu , cả lisp dạng Text hay file .LSP đều thế.   Còn khi em đăng nhập bằng điện thoại thì mới thấy được đoạn lisp em trả lời.

    Em thử dùng máy tính của người khác cũng vậy. Thế nên giờ em tưởng em là con bù nhìn ý  :wacko:  :wacko:  :wacko:  Làm cách nào để mọi người nhìn thấy bài em mà sửa lisp cho em ???

     

    Như bài gần đây là:

    http://www.cadviet.com/forum/topic/166299-nho-viet-lisp-cong-cac-so-trong-text-hoac-mtext-va-output-sang-mot-mtext-khac/     mục #2

    Mấy anh chị vào thử bằng điện thoại rồi vào bằng máy tính thì biết ạ. (TT). 


  15.  

    MTEXT đây ^_^

    (defun c:test  ()
      (if (not (setq ss (ssget '((0 . "*TEXT")))))
        (princ "\nBan da khong chon TEXT.")
        (progn
          (setq n 0)
          (setq sum 0)
          (repeat (sslength ss)
            (setq value (cdr (assoc 1 (entget (ssname ss n)))))
            (setq value (ATOF value))
            (setq sum (+ sum value))
            (setq n (1+ n))
            ) ;progn
          (setq pt (getpoint "\nChon diem chen text: "))
          (entmake
            (list
              (cons 0 "MTEXT")
              (cons 100 "AcDbEntity")
              (cons 100 "AcDbMText") 
              (cons 10 (trans pt 1 0))
              (cons 40 (cdr (assoc 40 (entget (ssname ss 0)))))
              (cons 8 (cdr (assoc 8 (entget (ssname ss 0)))))
              (cons 7 (cdr (assoc 7 (entget (ssname ss 0)))))
              (cons 1 (rtos sum))
              (cons 50 0)
              )
            )
          )
        )
      (princ)
      )
    

    Thiếu mất 2 dòng của bác  ^_^  ^_^  Quên cũng chưa check  thử. 

    Mà hỏi bác xíu. Làm sao khi Entmake mình biết các giá trị DXF nào bắt buộc phải có khi tạo 1 đối tượng mới nhỉ  :D  :D

    Ko biết thì hỏi, muốn giỏi phải học thôi @@

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

  16. Thank bác.

    Tuy nhiên vẫn chưa đúng ý e lắm :)

    + Chỗ output bác có thể sửa giúp e thành định dạng mtext như yêu cầu ko? hiện tại bác đang để định dạng là text.

    + Một cái nữa là layer của output bác có thể lấy như layer của đối tượng đầu tiên ko? (layer của mtext "2").

     

    Thay đoạn code (cons 0 "TEXT") của bác Bee thành: 

     

    (cons 0 "MTEXT")

    (cons 8 (cdr (assoc 8 (entget (ssname ss 0)))))

     

    :)  :)  :) 

    • Vote giảm 2

  17. Nhờ các cao thủ viết giúp mình lisp như tựa đề.

    Ví dụ cụ thể:

    Trên bản vẽ có sẵn 2 hoặc nhiều text (hoặc mtext), chẳng hạn 2(text), 3(mtext) và 4(text).

    Mình gõ lệnh (ví dụ "cộng"), click chọn vào 2, 3, và 4, sẽ được kết quả là 9, và output ra 1 mtext. Mình sẽ click chọn vị trí để output mtext này trên bản vẽ.

    Cảm ơn nhiều! :D

     

    Hóng nào hóng nào ^^

    Bác check thử xem được chưa.

     

    (defun c:congtext ()
    (prompt "Moi Dai Ca Chon Text Giup Em ^^")
    (setq sslist (ssget '((-4 . "<or")(0 . "TEXT")(0 . "MTEXT")(-4 . "or>"))))
    (setq number (SSLENGTH sslist)
          sum 0)
    (repeat number
     
    (setq Value (atof (cdr (assoc 1 (entget (ssname sslist 0))))))
    (setq sum (+ sum value))
    (ssdel (ssname sslist 0) sslist)
    )
    (setq ptext (getpoint "Moi Dai Ca chon diem chen Text ^^ \n"))
    (command "-text" ptext "" "" (rtos sum 2 2))
      (princ)
      )
    • Vote giảm 2

  18. trước e có thấy thằng bạn dùng lệnh này, mà giờ e ko thấy ai dùng nữa. bác cho e hỏi: nó có gì hay ho ko ạ?

     

    Ko rõ ở phần tranh luận nào trong diễn đàn, nhưng mình đã đọc và trải nghiệm: MVSETUP được đánh giá là tính năng thừa trong cad sau bao nhiêu phiên bản  nâng cấp các năm. :) :) Mà trải nghiệm sống là mấy người bạn của bạn đó, cứ hỏi trực tiếp có khi lại tuyệt hơn ko?  :wacko:  :wacko:

     

    http://www.cadviet.com/forum/topic/61349-hoi-lenh-mvsetup/

    http://www.cadviet.com/forum/topic/14764-cach-gioi-han-ban-ve-bang-lenh-mvsetup/


  19. tiện thể cho em hỏi em co file cad nhưng không biết tỷ lệ như thế nào. Giờ muốn vẽ tỷ lệ 1/2000 thì làm ntn a.

     

    Vấn đề này được bàn luận khá nhiều trên diễn đàn rồi. .

    http://www.cadviet.com/forum/topic/8397-van-de-ve-ty-le-ban-ve/         đọc ở bình luận #6

     

    Còn nữa, nếu bạn mới sử dụng cad, nên tìm hiểu khái niệm: Vẽ trên Model- In trên layout.


  20. Hỏi Ketxu xem nào ^_^

     

    Thôi thì hỏi đơn giản 1 chút. Mấy anh học món này như thế nào ạ.

    Lisp đơn thuần ko sử dụng Vla- Acet... thì em còn có thể đọc sách để biết.

    Vậy những thứ nâng cao kia em phải học như thế nào, mong mấy anh chỉ bảo.

     

    Nếu có sách học thì hay  :(  :( Chứ tự dưng thấy 1 lisp nào đó, mò ra tìm hiểu nó là gì thì ko hệ thống cho lắm.


  21. Chào ketxu. Cao thủ thì không dám nhận, những điều mình biết cũng đủ dùng thôi. :) Mình cũng mong được học hỏi từ diễn đàn và của mọi người. 

     

     Các anh- chị- bác trai- bác gái..... toàn sử dụng "Vla" với "Acet" "Geom" các kiểu, còn em thì chưa hiểu gì..... :wacko:  :wacko:  :wacko:  Tự thấy bản thân còn gà quá. !!!

     Có bác nào dạy em phần này ko, em nhận mang xôi gà đến học hỏi !!!   (TT)

×