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

tuanthunder

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

    19
  • Đã tham gia

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

  • Ngày trúng

    1

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


  1. Cảm ơn bác đã cho em link bài viết. Nhưng em đọc mấy bài đó em ko hiểu, .Nên phiền bác ghi cho em các bước để thực hiện việc trên của em không ạ?

    Cảm ơn bác. Chúc bác 1 ngày vui vẻ


  2. Em chào các bác forum CADVIET.

    Em muốn hỏi các bác:

    1. Em mới tìm hiểu về layout. Em đã đọc nhiều bài viết về layout nhưng em vẫn không hiểu các bước để Dim và viết text trong layout để kích thước và chiều cao bằng nhau khi tỷ lệ khác nhau. Nhưng em ko hiểu . khi em làm thử dim kích thước thì số quá to.

    2. Em cũng ko biết cái ô Annotative trong Dim style và Hatch.. có tác dụng là gì ? Và cách sử dụng?

    Xin các bác hưóng dẫn em từng bước (step by step)- vì em là newbie ,để dim và viết text có chiều cao bằng nhau trong Layout và cách dùng Annotative.

    Cảm ơn các bác nhiều.


  3. Mạn phép anh giabach Tue_NV viết thêm vào đoạn Code của anh để giúp cho bạn tuanthunder

    @ tuanthunder : Bạn sử dụng code này thử nhé :

    (defun c:brk(/ cobj ent ov pt1 pt2 tmp vl str); brk -> Break Curve
     (vl-load-com)
     (command "undo" "be")
     (setq vl '("osmode" "orthomode" "cmdecho") ; Sys Var list
    ov (mapcar 'getvar vl))              ; Get Old values
     (mapcar 'setvar vl '(545 0 0))
     (if (and (setq Ent (car (entsel "\nChon doi tuong can chia :")))
       (wcmatch (cdr (assoc 0 (entget ent))) "*LINE,ARC")
       (not (redraw ent 3))
       (setq pt1 (getpoint "\nDiem dau :"))
       (setq pt2 (getpoint "\nDiem cuoi :"))   )
       (progn
             (setq cObj (vlax-ename->vla-object Ent)
        pt1 (vlax-curve-getClosestPointto cObj (trans pt1 1 0))
        pt2 (vlax-curve-getClosestPointto cObj (trans pt2 1 0)))
         (if (> (vlax-curve-getParamAtPoint cObj pt1)
         (vlax-curve-getParamAtPoint cObj pt2))
    (setq tmp pt1 pt1 pt2 pt2 tmp) )      
         (command "._break" ent "_non" (trans pt2 0 1) "_non" (trans pt2 0 1))
         (if (equal pt1 (vlax-curve-getStartPoint cObj) 0.001)
    (command "change" ent "" "p" "LA" (lcurr) "")
    (progn
      (command "._break" ent "_non" (trans pt1 0 1) "_non" (trans pt1 0 1))
      (command "change" (entlast) "" "p" "LA" (lcurr) "")
      )
    )
         (redraw ent 4)
         (mapcar 'setvar vl ov) ; reset Sys Vars
         (command "undo" "e")
         )
       (alert "Khong hop le !"))
     (princ))
    ;
    (defun lcurr(/ e)
        (setq str (getstring t "\n Nhap ten layer hoac Enter de pick vao doi tuong :"))
    (if (= str "") 
    (progn 
    (while (null (setq e (entsel "\n pick vao doi tuong :"))))
    (setvar "clayer" (cdr(assoc 8 (entget(car e)))))
    )
    (progn
    (while (null (tblsearch "layer" str)) 
    (setq str (getstring t "\n Nhap lai ten layer :"))
    )
    (setvar "clayer" str)
    )
    )
    )
    

    Cảm ơn bác đã viết Lisp rất hay. Nhưng bác có thể chỉnh lại Lisp để các nét đứt đó sẽ là Layer hiện hành(Tức layer đang được chọn). Chứ không phải qua bước nhập tên layer hay pick layer nữa. Cảm ơn bác.Chúc bác luôn khỏe và thành đạt


  4. Chào các bác diễn đàn CADVIET.

    Các bác cho em hỏi ạ:

    Em đang phải vẽ bản vẽ bản đồ QUY HOACH SỬ DỤNG ĐẤT. Mỗi lô đất có 1 vòng tròn ghi các thông số bên trong như: Diện tich,dân số,tầng cao trung bình,mật độ.....Vì có nhiều ô đất nên vẽ lâu.

    Vì các thông số đó liên quan với nhau theo công thức. Nên em tính số liệu của từng lô đất trong Excel. Các bác cho em hỏi:

    Có cách nào để khi em vẽ các vòng tròn trong CAD làm thế nào để em lấy số liệu từng vòng tròn từ Excel vào và khi em thay đổi thông số bên Excel thì thông số trong CAD thay đổi theo.

    Cảm ơn các bác


  5. Sửa lỗi trong trường hợp gọi lệnh trong hệ tọa độ của người sử dụng UCS

    và bổ sung phần các điểm chọn trùng với 2 đầu mút.

    (defun c:brk(/ cobj ent ov pt1 pt2 tmp vl); brk -> Break Curve
     (vl-load-com)
     (command "undo" "be")
     (setq vl '("osmode" "orthomode" "cmdecho") ; Sys Var list
    ov (mapcar 'getvar vl))              ; Get Old values
     (mapcar 'setvar vl '(545 0 0))
     (if (and (setq Ent (car (entsel "\nChon doi tuong can chia :")))
       (wcmatch (cdr (assoc 0 (entget ent))) "*LINE,ARC")
       (not (redraw ent 3))
       (setq pt1 (getpoint "\nDiem dau :"))
       (setq pt2 (getpoint "\nDiem cuoi :"))   )
       (progn
         (if (not (tblsearch "LTYPE" "HIDDEN2"))
    (command "._linetype" "_load" "HIDDEN2" "acad.lin" ""))
         (setq cObj (vlax-ename->vla-object Ent)
        pt1 (vlax-curve-getClosestPointto cObj (trans pt1 1 0))
        pt2 (vlax-curve-getClosestPointto cObj (trans pt2 1 0)))
         (if (> (vlax-curve-getParamAtPoint cObj pt1)
         (vlax-curve-getParamAtPoint cObj pt2))
    (setq tmp pt1 pt1 pt2 pt2 tmp) )      
         (command "._break" ent "_non" (trans pt2 0 1) "_non" (trans pt2 0 1))
         (if (equal pt1 (vlax-curve-getStartPoint cObj) 0.001)
    (command "change" ent "" "p" "c" "8" "lt" "hidden2" "")
    (progn
      (command "._break" ent "_non" (trans pt1 0 1) "_non" (trans pt1 0 1))
      (command "change" (entlast) "" "p" "c" "8" "lt" "hidden2" "")
      )
    )
         (redraw ent 4)
         (mapcar 'setvar vl ov) ; reset Sys Vars
         (command "undo" "e")
         )
       (alert "Khong hop le !"))
     (princ))

     

    Lísp của bạn viết rất hay. Bạn có thể viết lại cái lisp : Khi cắt các line,Pl,arc... thì layer của đoạn bị cắt là một layer mình đang chọn (Chứ không phải layer hidden2) để lisp này chủ động hơn cho mọi người dùng không?

    Cảm ơn bạn.


  6. Không hiểu bạn làm ngành nghề gì vì mỗi ngành và mỗi công ty lại có cách vẽ khác nhau, cho nên nói thế nào là nhanh thì chung chung quá .

    Nhưng tựu chung có thể nói vẽ bằng máy (cad) tiện lợi và nhanh hơn vẽ tay là nhờ nó có thể copy đc. Vì vậy nếu có các bản vẽ gần giống nhau thì nên copy rồi sửa lại là nhanh nhất, và cũng chính vì thế nên các họa viên giỏi thường sử dụng nhuần nhuyễn các lệnh về modify (copy , mirror, offset, array, erase, fillet, chamfer, move , rotate, scale, stretch, lengthen, trim, extend, break, explode, match ...) hơn là các lệnh về draw (line, arc, circle,...).

    Ngoài ra đối với các công việc lặp đi lặp lại tốn nhiều thời gian thì bạn có thể dùng các chương trình hỗ trợ (lisp, vba..) cũng rất có ích và rút ngắn đc thời gian rất nhiều và còn tránh đc sự nhàm chán.

    Vài ý kiến đóng góp, chúc bạn sớm thành pro về cad.

    Mình học chuyên nghành kiến trúc. Mong các bác chỉ giáo thêm.

    Các bước vẽ?. Đầu tiên vẽ cái gì trước?. cái gì sau?


  7. Xin chào các bác. Em sử dụng CAD được gần 1 năm. Nhưng em thấy cách vẽ của em hơi chậm.

    Vì vậy kính mong các bác chia sẻ kinh nghiệm vẽ CAD nhanh của mình về :

    Trình tự các bước vẽ 1 bản CAD thế nào cho nhanh.

    Để những newbie như chúng em vẽ 1 bản CAD đúng nhất và nhanh nhất.

    Cảm ơn các bác rất nhiều.

    • Vote tăng 1

  8. Bạn thử đoạn code này xem :

    (defun c:COA()
    (prompt "\n Chon doi tuong : ")
    (setq ss (ssget))
    (setq p1 (getpoint "\n Specify first source point : "))
    (setq p2 (getpoint p1"\n Specify first destination point: "))
    (setq p3 (getpoint "\n Specify Second source point : "))
    (setq p4 (getpoint p3 "\n Specify Second destination point: "))
    (command "copy" ss "" p1 "@")
    (command "align" ss "" p1 p2 p3 p4 "" "")
    (princ)
    )

    Specify first source point :

    Specify first destination point:

    Specify Second source point :

    Specify Second destination point: giống như lệnh Align

     

    Mong bạn làm được :s_big:

    Cảm ơn các bác đã tận tình viết lisp giúp em.

    Bác Tue_NV bác sửa lại cho em sao cho lisp đó khi Align có thể Scale được (Giống như lệnh Align binh thường )

    Cái dòng đó em nhớ hình như: "Scale Objects based on alignment point/ Yes/ No

    Cảm ơn bác .

    • Vote tăng 1

  9. :s_big: Sơ ý quá, mình chưa kiểm tra với nhiều đồi tượng 1 lúc, nhưng nó vẫn ok khi chọn 1 đối tượng đấy.

    Cảm ơn bác. Nhưng bác xem lại cho em.Ý của em là lisp có tác dụng:

    B1: Copy đối tượng được chọn.

    B2: Align đối tượng đó ra chỗ khác.

    Lisp của bác em thử rồi nhưng không Copy đối tượng ra khi Align.B


  10. Xin chào các bác CADVIET.

    Em là newbie. Hôm nay em muốn phiền các bác viết cho em 1 lisp:

    - Lisp nầy có tác dụng: Tự động copy đối tượng khi dùng lệnh Align đối tượng đó ra chỗ khác.

    ( VD: Em vẽ 1 cái cửa trên mặt bằng.Em muốn dóng cái cửa đó vào 1 cái ô cửa khác.Thì bình thường em phải: 1.Copy cái cửa đó. B2: Dùng lệnh Al.)

    -Các bác giúp em nhé.Cảm ơn các bác trước.

     

    Các bác ơi, giúp em cái lisp này với.


  11. Xin chào các bác CADVIET.

    Em là newbie. Hôm nay em muốn phiền các bác viết cho em 1 lisp:

    - Lisp này có tác dụng: Tự động copy đối tượng khi Align đối tượng đó ra chỗ khác.

    ( VD: Em vẽ 1 cái cửa trên mặt bằng.Em muốn dóng cái cửa đó vào 1 cái ô cửa khác.Thì bình thường em phải: 1.Copy cái cửa đó. B2: Dùng lệnh Al.)

    -Các bác giúp em nhé.Cảm ơn các bác trước.


  12. Xin chào các bác CADVIET.

    Em là newbie. Hôm nay em muốn phiền các bác viết cho em 1 lisp:

    - Lisp nầy có tác dụng: Tự động copy đối tượng khi dùng lệnh Align đối tượng đó ra chỗ khác.

    ( VD: Em vẽ 1 cái cửa trên mặt bằng.Em muốn dóng cái cửa đó vào 1 cái ô cửa khác.Thì bình thường em phải: 1.Copy cái cửa đó. B2: Dùng lệnh Al.)

    -Các bác giúp em nhé.Cảm ơn các bác trước.

×