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. 8 giờ trước, minhnhutla2000 đã nói:

    Em đc thầy cho bài tập để vẽ cái này mà kh biết vẽ hay kiếm thư viện cad ở đâu mong mọi người giúp em.với ạ.

     

    + Tôi xóa bài của bạn này 1 lần. Giờ bạn lại đăng lại thì tôi trả lời thay mọi người vậy.

    ---> Bạn nên lên trên Youtobe, gõ từ khóa "Hướng dẫn tự học cad cơ bản". Sẽ có những video hướng dẫn bạn làm quen với Cad, với các thao tác vẽ cơ bản.

    Chứ nói thật, nếu bạn không biết vẽ cái hình cỏn con trên thì bạn chẳng có kiến thức gì về sử dụng Cad cả !


  2. Lỗi ở dòng code : (arxload "acwipeout.arx")

    + Nguyên nhân: Bằng 1 cách thức nào đấy, trong dòng code trên có thừa mất 2 dấu cách, dù nhìn bằng mắt thường không thấy được nó !!!

    Để biết được điều này: Bạn hãy copy dòng chữ màu xanh bên trên, dán vào 1 text trong cad.

    Rồi Edit, copy lại chữ trong cad dán lại vào trong trang diễn đàn này là ra ( kẹp giữa chữ màu đỏ ): 

    (arxload "acwip eout.arx ")

    ---> Khắc phục:  Xóa hết dòng code đó, rồi gõ lại bằng tay là chạy được.

    • Like 1

  3. 32 phút trước, Doan Nguyen Van đã nói:
    
    (defun c:tt ()
      (vl-load-com)
      (setq ss (acet-ss-to-list (ssget)))
    (foreach ent ss
      (vla-put-linetypescale (vlax-ename->vla-object ent) 0)))

    Bạn thử xem đã đúng chưa

    + Viết lisp nên khử các biến trong lisp cho người dùng. Vì khi sử dụng nó có thể gây lỗi cho nhiều lisp khác !


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

    Có khi nào có trường hợp này xảy ra đối với TEXT không ta: (= (assoc 10 (entget Ename)) "nil") ???

    Sáng ra mắt nhắm mắt mở.  Entget Text xong, ngó thấy số (11 . ) rồi  nhìn bên trái không thấy số 10 đâu. Vậy nên em mới đè ra công thức kỳ quái trên bác ạ... Tội lỗi quá  @@ 


  5. 11 giờ trước, Gia phuc đã nói:

    hihi.đúng như bạn nói . mình biết hàm chọn hết. nhưng ko biết xử lý cái đống đối tượng đó xử lý thế nào. tại nhiều vị trí khác nhau .

    Ví dụ đơn giản cho việc chèn point vào text.

    Trong đây có tất cả các thứ bạn cần. Hãy tự tìm hiểu.

     

    (defun c:CP ( / ENAME OBJECT PT)
      (setq object (ssget '((0 . "TEXT"))))
      (repeat (sslength object)
        (progn
          (setq Ename (ssname object 0))
          (setq PT (cdr (assoc 10 (entget Ename))))
          (command "Point" PT)
          (ssdel Ename object)
          ); end progn
        ); end repeat
      (princ)
      )

    • Like 1

  6. + Muốn chọn hết thì xài hàm (ssget "\nChon loai dat)

    Hàm trả về 1 tập hợp mớ đối tượng được chọn.

    + Muốn sử lý mớ hỗn độn trên, cách đơn giản thì dùng hàm (repeat)

     

    Còn muốn tìm hiểu kỹ thì cố học lập trình cho bài bản 1 tí. Chứ viết được thế này mà không biết mấy thứ căn bản trên thì không hay cho lắm !


  7. 4 giờ trước, dungpham01 đã nói:
    
    (defun C:cco ( / d lis lis1 lis2 e)
    (setq d (vlax-ename->vla-object (car (entsel))))
    (cond
    ((=(vla-get-ObjectName d) "AcDbPolyline")
    (progn
    (setq lis (vlax-get d 'Coordinates))
    (while lis
    (setq lis1 (cons (list (car lis) (cadr lis)) lis1))
    (setq lis (cddr lis))
    )))
    ((=(vla-get-ObjectName d) "AcDb3dPolyline")
    (progn
    (setq lis (vlax-get d 'Coordinates))
    (while lis
    (setq lis1 (cons (list (car lis) (cadr lis)) lis1))
    (setq lis (cdddr lis))
    )))
    (t nil)
    );cond
    (command "copy" (ssget "cp" lis1) "" pause pause "")
    (setq e (car (entsel)))
    (command "OFFSET" 0.1 e pause "")
    (setq d (vlax-ename->vla-object (entlast)))
    (cond
    ((=(vla-get-ObjectName d) "AcDbPolyline")
    (progn
    (setq lis (vlax-get d 'Coordinates))
    (while lis
    (setq lis2 (cons (list (car lis) (cadr lis)) lis2))
    (setq lis (cddr lis))
    )))
    ((=(vla-get-ObjectName d) "AcDb3dPolyline")
    (progn
    (setq lis (vlax-get d 'Coordinates))
    (while lis
    (setq lis2 (cons (list (car lis) (cadr lis)) lis2))
    (setq lis (cdddr lis))
    )))
    (t nil)
    );cond
    (command "zoom" "o" e "")
    (command "trim" e "" "f")
    (foreach tam lis2
    (command tam))
    (command (car lis2) "" "")
    )

    vậy phải thủ công chút. đánh lệnh> chọn đường pline> copy từ điểm 1 sang điểm 2> chọn lại đường pline vừa mới copy> chọn 1 điểm bất kỳ bên ngoài pline

     

    4 giờ trước, Gia phuc đã nói:

    vậy là ok rùi bạn, cảm ơn bạn nhiều nhé,  bạn ở biên hòa mời bạn cafe này

     

    + Các bạn thảo luận 1 vấn đề đã được giải quyết 7 năm trước !!!

    Tại sao không chịu khó tìm kiếm hơn ?

     


  8. 24 phút trước, tinhyeu_forever2 đã nói:

    Có cao nhân nào giúp mình làm cách nào hay có biến của lệnh nào mà lúc mình copy đối tượng (ctrl + C) xong paste block (ctrl + shift + V) thì cái block tạo ra đấy nó có thuộc tính Scale uniformly (Scale X, Y, Z giống nhau) luôn không ạ. Tại mình làm thử trên máy bạn của mình thì là như thế, nhưng máy của mình thì là block bình thường, Scale X, Y, Z khác nhau. Mình cũng xem qua nhưng không biết khác nhau gì mà nó lại được như thế. Mình cảm ơn.

     

    + Bạn có thể chụp lại cái Property của block sau khi paste lên để mọi người đoán lỗi được không?

    + Khắc phục tạm thời: Sau khi nhấn "Ctrl+Shift+V"  --> Nhấn "S" để nhập tỷ lệ của cả XYZ. Hoặc nhấn "x", "y", "z" để nhập tỷ lệ của từng phương.

    • Like 1

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

    @Danh Cong : có ename rồi, sao e không entmod mà lại dùng command change ?
    Hơn nữa yêu cầu của đề bài là đổi layer thôi, thì entmod thẳng, không cần tạo Layer nữa

    Em xài code copy, nên quên mất ko xài subst.

    Còn thêm layer do nghĩ ngợi nó cũng ko hại gì, đề phòng chủ thớt lại thêm thắt nọ kia nên triệt sản luôn :v


  10. 2 giờ trước, tiencongvn đã nói:

    Lisp hoạt động rất tốt, hơn cả mong đợi. Cám ơn bác Danh Cong nhé !

    ( Em nhận thấy, trong thực tế, đối với một số Mline trong bản vẽ do trước đó dùng lệnh Mirror, Mline Scale đang ở giá trị âm (-110; -90... chẳng hạn) thì layer W-110; W-90...tương ứng sẽ bị Off, cần phải Layon bác ạ). Thanks bác !

    Thử sửa

     (setq value-dxf40 (cdr (assoc 40 (entget (ssname object 0)))))

    Thành

     (setq value-dxf40 (abs (cdr (assoc 40 (entget (ssname object 0))))))

    Rồi chạy lại xem !

    • Vote tăng 1

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

    Em chào các tiền bối trên diễn đàn,

    Em có câu hỏi này, nhờ các a viết giúp một lisp :

    Trên bản vẽ có rất nhiều Mline có Scale khác nhau.

    Sau khi dùng lisp mà mỗi Mline có Scale khác nhau sẽ chuyển về Layer tương ứng với Scale của Mline đó.

    Ví dụ: Mline có Scale là 110 sẽ chuyển về layer W110

               Mline có Scale là 60 sẽ chuyển về layer W60

               .....................(giống file kèm theo)

    Em cám ơn các a !

    ML.dwg

     

    Viết cho bạn: Check thử nhé.

    Lisp tự tạo Layer luôn, nên chỉ việc enter thôi.

     

    (defun c:DCD ( / OBJECT VALUE-DXF40)
      (princ "\nSelect Mline")
      (setq object (ssget '((0 . "MLINE"))))
      (repeat (sslength object)
           (progn
                 (setq value-dxf40 (cdr (assoc 40 (entget (ssname object 0)))))
                (if (= (tblsearch "layer" (strcat "W" (rtos value-dxf40 2 0))) nil)
                (command  "-layer" "n" (strcat "W" (rtos value-dxf40 2 0)) "c" (rtos value-dxf40 2 0) (strcat "W" (rtos value-dxf40 2 0)) ""))
                (command "change" (ssname object 0) "" "p" "layer" (strcat "W" (rtos value-dxf40 2 0)) "")
                (ssdel (ssname object 0) object)))
      (princ))

    • Vote tăng 1

  12. + Em muốn hỏi cách bác : 

    Em đang chọn khổ giấy in hiện hành là "A3".  Giờ em muốn code lấy thông tin về kích thước của khổ giấy "A3" này là "Paper size : 420.16mm x 297.05mm"

    thì phải viết thế nào ạ. Mong các bác code giùm. Em xin cám ơn :))))

     

    ( Mục đính là em muốn viết 1 cái lisp nho nhỏ cho phòng làm việc để in tự động bản vẽ. Do mấy lisp khác trên mạng cồng kềnh và không kiểm soát được. Nên em muốn tự mình viết sẽ tốt hơn )

    Paper-Size.jpg


  13. A1. Cọc khoan nhồi : D=1.0m  - Cầu Anh Phong

    A2. Cọc khoan nhồi : D=1.2m  - Cầu Cửa Đại  - Quảng ngãi - Extradore 5 tháp ( tương đương Nhật Tân )

    A3. Cọc khoan nhồi : D=1.5m  - Cầu Cửa Đại  - Quảng ngãi

    A4. Cọc khoan nhồi : D=2.0m  - Cầu Pá Uôn   - Trụ cao nhất Việt Nam ( Đã được xét vào kỷ lục Việt Nam)

     

    B1. Cọc đóng : D=35x35cm  - Cầu Cổ Rồng - Thái Bình

    B2. Cọc đóng : D=40x40cm  - Cầu Kênh - Thái Bình

    B3. Cọc đóng : D=45x45cm  - Cầu Cổ Rồng - Thái Bình

     

    _________Thiết kế: Công ty cổ phần tư vấn thiết kế Cầu Lớn - Hầm Britec - Địa chỉ 278 Tôn Đức Thắng - Đống Đa - Hà Nội ________

    +  Cọc đóng:

    - Chỉ cho bản vẽ, không cho bảng khối lượng ( Do đơn giản, nên mọi người tự lập bảng khối lượng để kiểm soát giá trị ).

    - Các bản vẽ trên đều được lấy từ các công trình thực tế đã và đang thi công rồi.

    - Cầu nào đã thông xe, đi mà chưa  thấy sập , nên mọi người cứ yên tâm mà dùng.

    Tap hop BVTC Coc.rar


  14. 9 phút trước, Mao đã nói:

    Mình xin nói lại cho rõ để mọi người giúp mình

    Mình đang xử dụng Autocad 2015 ( mình đang học )

    khi làm bài tập về lệnh Array , mình nhập lệnh này thì xuất hiện hộp thư thoại ( như đính kèm ở trên. ) nhưng do lúc thao tác, mình lỡ bấm nút close ở bên phải hộp thoại, lập tức hộp thoại mất, và mình tìm cách để hộp thoại này xuất hiện mà không được 

    Mình tắt mày khởi động lại , nhập lệnh Array mà hộp thoại vẫn không xuất hiện 

    vậy ý mình muốn các bạn giúp mình làm sao để hộp thoại xuất hiện 

    cảm ơn các bạn 

    ( các bạn thông cảm vì mình đang học Autocad nên còn lúng túng lắm ) 

     

    1.  Google "Machenical" là cơ khí. Vậy nôm na : "Autocad Machenical 2014" là dành cho kỹ sư cơ khí là chủ yếu.

    Nếu bạn không phải là kỹ sư cơ khí thì đừng dùng loại này. Thay vào đó là sử dụng loại có mỗi chữ "Autocad 2014" thôi.

    2. Câu trả lời trước tôi có 1 yêu cầu là chụp lại cái màn hình để có cơ sở đoán lỗi. Bạn vòng vo mãi ko làm thì thôi, tôi cũng ko có trách nhiệm trả lời tiếp cho bạn.

×