Đến nội dung


Hình ảnh

Cách tạo 1 khoảng cách chung tới đối tượng cho nhiều dim line?


  • Please log in to reply
32 replies to this topic

#21 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 27 May 2013 - 08:45 AM

Cách gọi lệnh:

(DimSpace)

File lisp:

(defun DimSpace()
 (* 5 (getvar "dimscale") (Get_height (car (entsel "\nChon Dim: ")))))
(defun Get_height(ent / blk1 blklst hei)
 (setq blk1 (cdr (assoc -2 (tblsearch "BLOCK" (cdr (assoc 2 (entget ent (list "*"))))))))
 (while (setq blk1 (entnext blk1))
  (setq blklst (entget blk1))
  (if (= (cdr (assoc 0 blklst)) "MTEXT")
   (setq hei (cdr (assoc 40 blklst)))))
 hei)
 


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#22 phongtran86

phongtran86

    biết lệnh offset

  • Members
  • PipPipPip
  • 177 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 27 May 2013 - 09:10 AM

Như vậy mất thêm thao tác chọn dim:D Em muốn thao tác chọn này trùng với thao tác chọn tất cả các dim để gióng luôn. Phiền anh nốt.


  • 0

#23 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 27 May 2013 - 09:18 AM

Vậy thì vầy!

(defun C:HA()
 (princ "\nCho cac Dim...")
 (foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "Dimension"))))))
  (DimSpace ent))
 (princ))
(defun DimSpace(ent)
 (* 5 (getvar "dimscale") (Get_height ent)))
(defun Get_height(ent / blk1 blklst hei)
 (setq blk1 (cdr (assoc -2 (tblsearch "BLOCK" (cdr (assoc 2 (entget ent (list "*"))))))))
 (while (setq blk1 (entnext blk1))
  (setq blklst (entget blk1))
  (if (= (cdr (assoc 0 blklst)) "MTEXT")
   (setq hei (cdr (assoc 40 blklst)))))
 hei)
 


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#24 phongtran86

phongtran86

    biết lệnh offset

  • Members
  • PipPipPip
  • 177 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 27 May 2013 - 10:09 AM

Em ghép vào thử lại rồi. Kết quả thì hàm Get_height cho ra kết quả chiều cao dim hiện thời chứ không phải dim đang chọn. Em không hiểu code lắm.

Tai em để dim ở Dim100 dùng gióng khoảng cách vẫn thế, dim 70 cũng giống như thế và kc là 5 lần chiều cao là textdim hiện thời. Nếu như thế ta dùng (getvar "dimtxt") sẽ cho ra chiều cao textdim của dimstyle hiện thời (biến hệ thống). :(


  • 0

#25 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 27 May 2013 - 10:33 AM

Sao mà hàm Get_height trả về height của dim current được nhỉ? Bạn add dòng code dưới đây vào command, sau đó chọn dim, xem nó ra gì? Height của Dim current hay Dim được chọn?

(Get_height (car (entsel "\nChon Dim: ")))

Chú ý: có thể height của dim current nó bằng height của dim được chọn.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#26 phongtran86

phongtran86

    biết lệnh offset

  • Members
  • PipPipPip
  • 177 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 27 May 2013 - 11:40 AM

Em mới mày mò chưa bik cách đặt hàm như thế nào vào hàm để nó chay rồi. :((. Anh đặt hàm vào vị trí giúp em để nó thực hiện đc lệnh gióng em tham khảo với.


  • 0

#27 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 27 May 2013 - 11:51 AM

1). Câu hỏi 1: bạn đã thử bài #25 chưa?

2). Câu hỏi 2: nếu bài #25 là OK thì dùng lisp ở bài #23.

Bạn hỏi một hồi làm tối cũng rối mù lên, trong khi vấn đề là đơn giản.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#28 phongtran86

phongtran86

    biết lệnh offset

  • Members
  • PipPipPip
  • 177 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 27 May 2013 - 02:49 PM

1). Câu hỏi 1: bạn đã thử bài #25 chưa?

2). Câu hỏi 2: nếu bài #25 là OK thì dùng lisp ở bài #23.

Bạn hỏi một hồi làm tối cũng rối mù lên, trong khi vấn đề là đơn giản.

http://www.cadviet.c...3/21028_add.lsp

Đây là file lisp đã sửa. Từ file lisp gốc em bỏ dòng (defun DimSpace () (* 7 (getvar "dimscale"))) đi và thay vào đoạn code ở bài 23 của anh mà nó khong chay. Em ko biết thêm thêm code gọi hàm như nào. Nhờ anh đặt luôn giúp.


  • 0

#29 phongtran86

phongtran86

    biết lệnh offset

  • Members
  • PipPipPip
  • 177 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 27 May 2013 - 06:10 PM

http://www.cadviet.c...3/21028_add.lsp

Đây là file lisp đã sửa. Từ file lisp gốc em bỏ dòng (defun DimSpace () (* 7 (getvar "dimscale"))) đi và thay vào đoạn code ở bài 23 của anh mà nó khong chay. Em ko biết thêm thêm code gọi hàm như nào. Nhờ anh đặt luôn giúp.

Code ở mục 25 ra kết quả rồi. Nhưng bjo mình không biết cách ghép nó vào lisp trên để nó ra hàm tạo khoảng cách đường kích thước đến đối tượng.


  • 0

#30 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 28 May 2013 - 09:14 AM

Đây bạn!

(defun GetDxf(n e)
 (cdr (assoc n e)))
(defun ModDxf(n v e)
 (if (GetDxf n e)
  (entmod (subst (cons n  v) (assoc n e) e))
  (entmod (append e (list (cons n  v))))))
(defun TSel(et ms)
 (if ms (princ ms))
 (ssget (if et (list (cons 0 et)))))
(defun AdjustDim1 (p l e / a)
 (if (= 0 (logand 92 (GetDxf 70 e)))
  (progn
   (setq a (angle (GetDxf 14 e) (GetDxf 10 e)))
   (ModDxf 10 (polar p a  (if (= 1 (rem  (GetDxf 70 e) 2)) l (/ l (abs (sin (- a (GetDxf 50 e))))))) e))))
(defun AdjustDim(ss / i p)
 (if ss
  (progn
   (setq p (trans (getpoint "\nBase point:")1 0) i -1)
   (repeat (sslength ss)
(setq i (1+ i))
(AdjustDim1 p (DimSpace (ssname ss i)) (entget (ssname ss i))))))
 (princ))
(defun C:AdjustDim()
 (AdjustDim (TSel "DIMENSION" "\nSelect Dimensions :")))
(defun C:SelfAdjustDim( / e)
 (setq i -1 ss (TSel "DIMENSION" "\nSelect Dimensions :"))
 (if ss
  (repeat (sslength ss)
   (setq i (1+ i) e (entget (ssname ss i)))
   (AdjustDim1 (GetDxf 14 e) (DimSpace (ssname ss i)) e)))
 (princ))
(defun DimSpace(ent / blk1 blklst hei)
 (setq blk1 (cdr (assoc -2 (tblsearch "BLOCK" (cdr (assoc 2 (entget ent (list "*"))))))))
 (while (setq blk1 (entnext blk1))
  (setq blklst (entget blk1))
  (if (= (cdr (assoc 0 blklst)) "MTEXT")
   (setq hei (cdr (assoc 40 blklst)))))
 (* 5 (getvar "dimscale") hei))
 


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#31 phongtran86

phongtran86

    biết lệnh offset

  • Members
  • PipPipPip
  • 177 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 28 May 2013 - 06:52 PM

Em gà quá, làm anh vất vả rồi


  • 0

#32 nghau90

nghau90

    biết vẽ circle

  • Members
  • PipPip
  • 32 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 07 February 2014 - 09:23 AM

bác ơi hướng dẫn cụ thể lại cái lisp dim đều này giúp e . cách sử dụng


  • 0

#33 vothanhcoc

vothanhcoc

    biết vẽ line

  • Members
  • PipPip
  • 20 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 27 February 2016 - 08:49 AM

mình có các đường Dim như thế này:(xem pic)dim1.jpg
mình muốn các chân đường Dim cách đường line1 một khoảng cách bằng khoảng cách từ line1 đến line2.
Bác nào biết làm thế nào cho nhanh bày mình với, có cách nào làm tương tự như trim hay ex đường line không?

Bạn dùng lisp dưới đây! dùng lệnh CD để cắt dim; lệnh BD để dóng dim. http://www.mediafire...iabp/CUTDIM.lsp

Chúc bạn thành công!!! http://www.mediafire...g8qs/CUTDIM.lsp


  • 0