Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
toai

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

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

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.

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

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.

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

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.com/upfiles/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.

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

http://www.cadviet.com/upfiles/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.

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

Đâ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))
 

  • 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

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.com/download/8q7r8a9ra68iabp/CUTDIM.lsp

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

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

Cái này có lẽ phải dùng lisp thôi

Bạn dùng thử

lệnh là :

- SelfAdjustDim : dùng khi chiều dài 2 chân dim = nhau, dim nằm trong cùng

- AdjustDim : dùng khi định vị trí dimline với 1 điểm cho trước

Đã sửa phần đổi hệ tọa độ

 

(defun Dxf(n e) (cdr (assoc n e)))

(defun ModDxf(n v e)

    (if (Dxf 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 DimSpace () (* (getvar "DIMSCALE") (getvar "dimscale")))



(defun AdjustDim1 (p l e / a)

    (if (= 0 (logand 92 (Dxf 70 e)))

        (progn

            (setq a (angle (Dxf 14 e) (Dxf 10 e)))

            (ModDxf 10 (polar p a  (if (= 1 (rem  (Dxf 70 e) 2)) l (/ l (abs (sin (- a (Dxf 50 e))))))) e )    )

    )

)

 

(defun AdjustDim(ss l / i p)

  (if ss

        (progn

            (setq p (trans (getpoint "\nBase point:")1 0) i -1)

      (repeat (sslength ss)

            (setq i (1+ i) )    (AdjustDim1 p l (entget (ssname ss i)))

    )    ) )(princ)

)



(defun C:AdjustDim()    (AdjustDim (TSel "DIMENSION" "\nSelect Dimensions :") (DimSpace)))



(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 (Dxf 14 e) (DimSpace) e)

  ) )(princ)

)

chào bạn,  lisp của bạn rất hay, mình sử dụng trong model thi ổn, nhưng khi sử dụng trong môi trường layout, sử dụng loại dim cho nhiều tỉ lệ thì nó lại ko dùng được. Vậy bạn ( hay bác nào đi ngang qua) giúp mình chỉnh cho lisp có thể sử dụng được ở trong môi trường layout. Cám ơn bạn nhiề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

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

Đăng nhập để thực hiện theo  

×