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

Biet ve CAD

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

    474
  • Đã tham gia

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

  • Ngày trúng

    71

Bài đăng được đăng bởi Biet ve CAD


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

    Bác cho em hỏi có cách nào chọn được file cad đang mở để viết hàm "write-line" vào được không nhỉ. Bình thường mở file theo đường dẫn rồi viết write-line. Cảm ơn bác!

    Bạn nên hỏi trong chủ đề hỏi đáp autolisp ấy ^^

    Ý bạn chắc là lấy full name của các file cad đang mở à, đây là hàm lấy danh sách các file cad đang mở

    (vl-load-com)

    (setq *doc* (vla-get-Documents (vlax-get-acad-object)))

    (vlax-for d *doc* (princ (strcat "\n" (vla-get-FullName d))))


  2. Vào lúc 27/4/2020 tại 07:03, Danh Cong đã nói:

    @Biet ve CAD, anh tư vấn cho bạn ấy kìa :))

     

    hehe, mỗi người đều có nhu cầu khác nhau @Danh Cong à ^^ lisp các bạn khác trên diễn đàn cũng rất tốt rồi, tuy nhiên bạn nào thích in được các file có đấu tiếng Việt, hay ngôn ngữ như Hàn, Trung...thì liên hệ mình nhé ^^

    tiện giới thiệu lại video lisp

    https://youtu.be/tp4sfbP5x2s

    • Like 3

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

    Hề hề hề, tất cả dữ liệu đề bài đưa ra đều làm được.

    Việc định danh tên block "làm tâm" hay việc lấy dữ liệu ngoài thay thế toạ độ block "làm tâm" cũng không khó.

    Việc định danh tên block theo giá trị thuộc tính để đo khoảng cách cũng không khó.

    Chỉ khó là người nhờ viết lisp lại ra đầu bài không rõ ràng làm người viết lisp phải khốn khổ. Đưa bản vẽ này làm mẫu, lại dùng bản vẽ khác, mà bản vẽ khác cũng sai về toạ độ điểm chèn block mới khốn khổ.

    Đầu tư viết 1 lisp như thế này rất vất vả, lấy được 4 field từ 2 đối tượng tính căn bậc hai của tổng 2 bình phương của hiệu từng cặp 4 field này không đơn giản chút nào, bây giờ thì không cần dùng nữa, đôi khi cảm thấy nản.

    Dạ vâng bác, em cũng biết lisp nên cảm thấy được cái khó, thấy bác viết rất nhiệt tình, cách thức dùng lisp cũng rất chu đáo lường trước được các tình huống mà người yêu cầu chưa đưa ra. Nên em chỉ nói vui như vậy gây ra hiểu nhầm ^^

     

    • Like 1

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

    Chào Bạn Biet ve CAD …! Không biết tuổi tác bạn thế nào cho dễ xưng hô . nhưng tôi nói với bạn thế này

    Có thể kiến thức bạn hơn tôi . Bạn học hành hơn tôi . nhưng bạn hãy vẫn dụng kiến thức của mình để giúp chính bạn , nếu có time thì giúp đỡ mọi người . còn nếu không thì lên im lặng , đừng chọc gậy bánh xe kiểu như vậy . Cảm ơn đã đọc

    Thân …!

    xin Info để lúc nào tặng bạn cuốn sách ^^

     

    Không nên suy nghĩ tiêu cực như vậy bạn à, hãy hiểu hết ý nghĩa đã rồi mới phê bình hay đại loại như vậy bạn

    Bạn cũng đăng nhiều bài, xin lisp cũng nhiều mà cách bạn yêu cầu cảm thấy ko nhất quán, để được đoạn lispp như bác Thiệp viết ko phải đơn giản, nên phải sửa lisp hay làm lisp mới với yêu cầu chưa rõ ràng, chưa có sự đầu tư kỹ lưỡng của người yêu cầu thì thành ra là làm khó người viết

    Bạn hiểu ý mình chứ, suy nghĩ kỹ lưỡng trước khi yêu cầu bạn nhé


  5. Vào lúc 18/4/2020 tại 08:46, VNG_Vodanh đã nói:

    bác còn cái lisp này không, share em cái

    Tải về http://www.mediafire.com/file/fx3phih5s44or91/chuyen_font_c_cf_-_free.fas/file

     

    Xem thêm các lisp  tiện ích khác:

    *** Lisp in nhanh bản vẽ: https://www.youtube.com/playlist?list=PL05frYPpT5LLRHAE9W-osYor9Jbe7nOg-

    *** Tiện ích hay khác: https://www.youtube.com/playlist?list=PL05frYPpT5LJUXFg-LYSgxvSmxzIPdoqA

     

     


  6. 1 giờ} trướ}c, vietduong234 đã nói:

    Cảm ơn @Biet ve CAD, tại trước đây mình vẽ không bị như vậy, khảng thời gian gần đây có hiện tượng này, mỗi lần mở 1 file là nó lại lưu một File acad.exe ở Task manager. Mình vẽ TK viễn thông, mỗi ngày mở - tắt nhiều file nên rất khó chịu. Không có cách nào khắc phục ah bạn?

    Bạn gõ lệnh SDI và dặt là 0 thử xem có dc ko ( sau đó phải tắt cad đi bật lại nhé )


  7. acad.exe không phải là virut bạn nhé, đó là file chạy của chương trình autocad, mở file dwg tất nhiên acad.exe phải chạy, bạn chọn nó và end process

    sở dĩ có 2 cái acad.exe chạy là do bạn khi tắt cad, nó chưa thoát hẳn, và bạn đã mở file dwg khác lên. khi cad chưa thoát hẳn thì tất nhiên ko thể đổi tên thư mục chứa file rồi

    • Like 1

  8. 34 phút trước, Duy Anh Trần đã nói:

    EM chỉnh sửa đưa link lên rồi đó 

    - Bác xem rúp em với 

    - Em thử mở máy có  cad 2014 thì in không vấn đề gì nhưng cứ mở 2018 để in là bị

    Khó bắt bệnh phết, thử cad 2007 và 2020 đều bt

    bạn thử file này xem nhé: https://drive.google.com/file/d/1AikPbVQtSLjb7tO0T4FRsirpYTJ2yz7g/view?usp=sharing

     

    Không được bạn thử lưu về dxf và chuyển lại dwg xem


  9. 2 giờ trước, lethanh2004 đã nói:

    Bác thiệp có thể chỉ chi tiết cho em hơn đc ko . do mục đích e làm  không nhiều đối tượng và cũng không gần như bác mô tả ạ

     

    File cad đính kèm đã làm mẫu bạn 1 cái ATT, tuy nhiên đây là cách thủ công, còn muốn dùng lisp cho nhanh thì phải nhờ các bác trên này viết giùm

    tesdokc fix bvc.dwg


  10. 12 giờ trước, thiep đã nói:

    Tại bảng Properties, khi người dùng thay đổi thuộc tính từ TextOverwrite sang Measurement hoặc ngược lại của textDim thì biểu thức field đã gán cho text có sẵn sẽ không update được vì nó chỉ update giá trị của thuộc tính đã định sẵn trong biểu thức field, không update việc thay đổi thuộc

    Bác @thiep nhiệt tình quá, thấy bác làm đoạn lisp đoạn lisp trên cũng khá tốn công, Like bác ^^

    Sao bác ko quy định chung cho cách sử dụng lisp, chứ sao mà xử lý hết tình huống của cad được, TextOverwrite và Measurement là 2 giá trị độc lập nhau cơ mà

    Quy định luôn là lisp chỉ dùng cho TextOverwrite hoặc Measurement, nếu 1 trong 2 giá trị này thay đổi cho nhau thì người dùng phải dùng lại lisp để lấy lại thông tin, như vậy mọi người đều hiểu và sử dụng dúng chức năng của lisp


  11. 12 giờ trước, Han Tinh đã nói:

    Thanks bạn!

    Theo hướng dẫn của bạn @ Doan Nguyen Van mình cũng làm được rồi, tuy nhiên chỉ làm được với các chi tiết có kích thước thật. Trường hợp của mình là các chi tiết có các kích thước na ná nhau, do đó mình edit các kích thước này (edit dim) thì nó không được. Vậy mình nhờ các bạn giúp đỡ cho trường hợp các kích thước này bị edit.

    Lisp mình tự nhận text override của dim mà, chắc bạn chưa thử ^^


  12. 18 giờ trước, Han Tinh đã nói:

    Thanks bạn đã hướng dẫn, tuy nhiên sau khi làm thử thì thấy là: nó chỉ thay đổi text khi ta thay đổi chiều dài dim (phải vẽ tỉ lệ 1:1) nếu ta vẽ phi tỉ lệ thì nó không được. Bạn có thể viết giúp mình 1 lisp dùng cho trường hợp này được không vậy bạn. Gõ lệnh xong, sau đó chọn tất cả các dim rồi chọn text (hình vẽ có thể là phi tỉ lệ hoặc đúng tỉ lệ). Thanks bạn!

     

    Lisp đã có rồi mà bạn, phiền các bạn khác phải mắc công viết lại làm chi, lisp liên quan đến Field và  Formula cũng toát mồ hôi hột ra ấy chứ ^^

    Bạn tham khảo video này , thay vì chọn Rectang bạn có thể chọn đối tượng là Dim

     

    • Like 1

  13. 18 phút trước, zaqzaqzaqzaq đã nói:

    sử dụng lisp của a vanngeonhuxua thì làm được rồi nhưng em nhờ a ấy sửa lại 1 chút để sử dụng cho tiện

    Bạn thử xem nhé ( mình sửa lại dựa lisp trên của vanngeonhuxua )

    (vl-load-com) 
    
    (defun l-coor2l-pt (lst flag / )
      (if lst
        (cons
          (list
            (car lst)
            (cadr lst)
            (if flag
              (+ (if (vlax-property-available-p ename 'Elevation) (vlax-get ename 'Elevation) 0.0) (caddr lst))
              (if (vlax-property-available-p ename 'Elevation) (vlax-get ename 'Elevation) 0.0)
            )
          )
          (l-coor2l-pt (if flag (cdddr lst) (cddr lst)) flag)
        )
      )
    )
    
    (defun c:Change_MLine ( / js ent ename l_pt cur_lay closed lst ss) 
    (princ "\nPlease Select a MLine ") 
    
      (if (setq ss (ssget '((0 . "MLINE"))))
        (progn
          (setq js 0)
          (repeat (sslength ss)
          
      (setq
        ent (ssname ss js)
        ename (vlax-ename->vla-object ent)
        l_pt (l-coor2l-pt (vlax-get ename 'Coordinates) T)
        cur_lay (getvar "CLAYER")
      ) 
        
      (setvar "clayer" (vlax-get ename 'Layer))
      (command "_.mline" "S" (vla-get-MlineScale ename))
      (foreach n l_pt (command "_none" (trans n 0 1)))
      (command "")
    	
    	(vla-put-Justification (vlax-ename->vla-object(entlast)) (vla-get-Justification ename))
      (entdel ent)
      
    	(setq js (1+ js))
    	)
          (setvar "CLAYER" cur_lay)
      ))
      (prin1)
    )

     

    • Like 1

  14. 1 giờ} trướ}c, zaqzaqzaqzaq đã nói:

    anh ơi lisp này hay quá ạ. nhưng khi em thực hiện thì kích thước Mline cũng thay đổi theo setup hiện hành, nên nếu muốn giữ nguyên thì phải mỗi loại kích thước 1 lần. a có thể sửa lại để khi em thực hiện lệnh Change_MLine thì nó vẫn giữ nguyên kích thước của đối tượng Mline không ạ? Và có thể chọn nhiều Mine 1 lúc không a (hiện tại phải chọn từng Mline một)? Thank a!!!

    1.Bạn mở 1 bản vẽ mới tinh lên, tạo mlstyle1 với các tính chất giống hệt mlstyle2 ( nếu bản vẽ hiện hành có rồi thì copy sang và mlstyle2 đổi tên thành mlstyle1)

    2.Bên bản vẽ hiện hành chọn tất cả các mline có mlstyle1

    3. sau đó cut sang bản vẽ mới

    4. tiếp theo là đổi tên mlstyle1 thành mlstyle2

    5. Copy tất cả sang bản vẽ hiện hành là ok

    • Vote tăng 1
×