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

nhờ sửa lisp tạo block nhanh

Các bài được khuyến nghị

em đang dùng 1 lisp tạo block nhanh là QB. nhưng lisp tự động tạo tên là newblock+(1+n),  các bác có thể sửa lệnh giúp em thành tạo tên block là tên file+(1+n) được không ạ? 

em xin cám ơn các bác

Quote

(defun c:QB (/ selectionset insertionpoint number Blockname)
  ;;; Tharwat 11. May. 2012 ;;
  (if (and (setq selectionset (ssget "_:L"))
           (setq insertionpoint (getpoint "\n Specify insertion point :"))
      )
    (progn
      (setq number    1
            Blockname (strcat "MyBlock" (itoa number))
      )
      (while (tblsearch "BLOCK" Blockname)
        (setq Blockname
               (strcat "MyBlock" (itoa (setq number (1+ number))))
        )
      )
      (command "_.-Block" Blockname insertionpoint selectionset "")
      (command "_.-insert" Blockname insertionpoint "" "" "")
    )
    (princ)
  )
  (princ)
)

 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Thử cái này:

 

(defun c:QB (/ selectionset insertionpoint number Blockname)
  ;;; Tharwat 11. May. 2012 ;;
  (if (and (setq selectionset (ssget "_:L"))
           (setq insertionpoint (getpoint "\n Specify insertion point :"))
      )
    (progn
      (setq bname (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 4)))
      (setq number    1
            Blockname (strcat bname (itoa number))
      )
      (while (tblsearch "BLOCK" Blockname)
        (setq Blockname
               (strcat bname (itoa (setq number (1+ number))))
        )
      )
      (command "_.-Block" Blockname insertionpoint selectionset "")
      (command "_.-insert" Blockname insertionpoint "" "" "")
    )
    (princ)
  )
  (princ)
)

  • Like 1
  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
42 phút trước, vietduc147258 đã nói:

Thử cái này:

 

(defun c:QB (/ selectionset insertionpoint number Blockname)
  ;;; Tharwat 11. May. 2012 ;;
  (if (and (setq selectionset (ssget "_:L"))
           (setq insertionpoint (getpoint "\n Specify insertion point :"))
      )
    (progn
      (setq bname (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 4)))
      (setq number    1
            Blockname (strcat bname (itoa number))
      )
      (while (tblsearch "BLOCK" Blockname)
        (setq Blockname
               (strcat bname (itoa (setq number (1+ number))))
        )
      )
      (command "_.-Block" Blockname insertionpoint selectionset "")
      (command "_.-insert" Blockname insertionpoint "" "" "")
    )
    (princ)
  )
  (princ)
)

thành công rồi ạ, em cám ơn bác nhiều. em lại cứ cố gắng chèn thẳng dwgname vào into luôn, bảo sao không đc.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Vào lúc 6/5/2024 tại 15:50, vietduc147258 đã nói:

Thử cái này:

 

(defun c:QB (/ selectionset insertionpoint number Blockname)
  ;;; Tharwat 11. May. 2012 ;;
  (if (and (setq selectionset (ssget "_:L"))
           (setq insertionpoint (getpoint "\n Specify insertion point :"))
      )
    (progn
      (setq bname (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 4)))
      (setq number    1
            Blockname (strcat bname (itoa number))
      )
      (while (tblsearch "BLOCK" Blockname)
        (setq Blockname
               (strcat bname (itoa (setq number (1+ number))))
        )
      )
      (command "_.-Block" Blockname insertionpoint selectionset "")
      (command "_.-insert" Blockname insertionpoint "" "" "")
    )
    (princ)
  )
  (princ)
)

Cảm ơn bài viết, mình có thể nhờ bạn chỉnh sửa tự tạo block điểm chèn tự động tại tâm của Block không ạ, không cần pick điểm, cảm ơn

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
2 giờ trước, mr.thanh2610 đã nói:

Cảm ơn bài viết, mình có thể nhờ bạn chỉnh sửa tự tạo block điểm chèn tự động tại tâm của Block không ạ, không cần pick điểm, cảm ơn

Làm sao xác định được tâm của những đối tượng đã chọn. Thậm chí còn chưa nói đến khái nệm đó. Tâm của một polyline khép kín thì có. Với lại thêm 1 cái pick chuột không mất thời gian lắm đâu

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
2 giờ trước, vietduc147258 đã nói:

Làm sao xác định được tâm của những đối tượng đã chọn. Thậm chí còn chưa nói đến khái nệm đó. Tâm của một polyline khép kín thì có. Với lại thêm 1 cái pick chuột không mất thời gian lắm đâu

Chắc phải lấy trọng tâm của cái pline kín ngoài cùng. Cái này làm được nhưng tốn khá time!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Lúc trước tạo block, tớ cũng chăm chút chọn điểm chèn là tâm, nhưng dần dần hiểu được không gì hoàn mỹ cả, và chèn tại tâm đôi khi lại rất khó chịu.

Và nhận ra rằng chèn tại góc là tốt nhất.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Điểm chèn bock tuỳ thuộc ý đồ tạo và sử dụng cụ thể của block nên khó nói cái nào tốt hơn cái nào. Mình vân ko ưu tiên cho việc chọn điểm chèn tự động.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Chủ đề này vậy mà kéo dài quá. Cái này là tạo Block tự động. Hay dùng cho các block không quan trọng lắm. Ngay cả cái tên còn không quan trọng thì lo gì đến điểm chèn.

Nếu một block quan trọng thì sẽ làm thủ công rồi. Lúc đó thì mới xét xem điểm chèn ở đâu là phù hợp.

Tôi không dùng lisp này, chỉ góp ý chút vậy thôi.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×