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ị

toai    1

Khi thực hiện ghi kích thước theo các phương (thẳng đứng, nằm ngang....) cho nhiều đối tượng trong một bản vẽ, mình không biết làm thế nào để đưa các khoảng cách từ đường ghi kích thước (dim line) tới các đối tượng (line...) về cùng một giá trị. Mình đã đã thử tìm kiếm trên DĐ rồi mà không thấy kết quả nào cả. Mong anh em trong diễn đàn cho ý kiến giúp đỡ nhé.

Thanks!

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
levanduy    73
Khi thực hiện ghi kích thước theo các phương (thẳng đứng, nằm ngang....) cho nhiều đối tượng trong một bản vẽ, mình không biết làm thế nào để đưa các khoảng cách từ đường ghi kích thước (dim line) tới các đối tượng (line...) về cùng một giá trị. Mình đã đã thử tìm kiếm trên DĐ rồi mà không thấy kết quả nào cả. Mong anh em trong diễn đàn cho ý kiến giúp đỡ nhé.

Thanks!

Thiết lập như sau:

New_Picture_7.jpg

Khi ghi kích thước bạn kéo dim sao cho khoảng cách từ chân dim đến line một khoảng a nhỏ thôi.

Drawing1_2.jpg

Thế là tất cả đều bằng nhau một khoảng cách tương đối :lol2:

Nếu tuyệt đối bằng nhau thì phải nhờ đến các cao thủ trong diễn đàn. :lol2:

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
truongnhataz    15
Khi thực hiện ghi kích thước theo các phương (thẳng đứng, nằm ngang....) cho nhiều đối tượng trong một bản vẽ, mình không biết làm thế nào để đưa các khoảng cách từ đường ghi kích thước (dim line) tới các đối tượng (line...) về cùng một giá trị. Mình đã đã thử tìm kiếm trên DĐ rồi mà không thấy kết quả nào cả. Mong anh em trong diễn đàn cho ý kiến giúp đỡ nhé.

Thanks!

vao modi dimi line anh arrows chọn nơi offset from origin chon kich thước

java script:void(0)

untitled.jpg

néu làm khoang cach tới đương ghi số thì phải dùng offset để chi khoang cách

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
toai    1
vao modi dimi line anh arrows chọn nơi offset from origin chon kich thước

java script:void(0)

untitled.jpg

néu làm khoang cach tới đương ghi số thì phải dùng offset để chi khoang cách

Cám ơn levanduy và truongnhataz! Hướng dẫn của 2 bạn là để thiết lập khoảng cách từ chân đường dóng kích thước tới đối tượng đúng không? Nhưng ý của mình là muốn bằng cách nào đó để trong bản vẽ có được tất cả khoảng cách từ ĐƯỜNG GHI KÍCH THƯỚC tới các đối tượng cần ghi kích thước có giá trị bằng nhau cơ(vì khi thực hiện kéo kích thước, nhất là các đối tượng ở các mặt cắt khác nhau thì rất khó cố định một k/c nhất định từ dim line tới đối tượng)

Mong các bạn chỉ bảo tiếp nhé. :lol2:

Đây là ví dụ về ý định của mình:

http://www.cadviet.com/upfiles/VD.dwg

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
levanduy    73
Cám ơn levanduy và truongnhataz! Hướng dẫn của 2 bạn là để thiết lập khoảng cách từ chân đường dóng kích thước tới đối tượng đúng không?

Bạn hiểu sai rồi.Cách làm của mình là thiết lập cố định khoảng cách từ chân đường kích thước đến đường ghi kích thước luôn luôn là không đổi.

Còn khoảng cách từ chân đường kích thước đến đối tượng xa gần tùy thuộc vào vị trí đặt đường kích thướ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
ndtnv    397

 

Cám ơn levanduy và truongnhataz! Hướng dẫn của 2 bạn là để thiết lập khoảng cách từ chân đường dóng kích thước tới đối tượng đúng không? Nhưng ý của mình là muốn bằng cách nào đó để trong bản vẽ có được tất cả khoảng cách từ ĐƯỜNG GHI KÍCH THƯỚC tới các đối tượng cần ghi kích thước có giá trị bằng nhau cơ(vì khi thực hiện kéo kích thước, nhất là các đối tượng ở các mặt cắt khác nhau thì rất khó cố định một k/c nhất định từ dim line tới đối tượng)
Mong các bạn chỉ bảo tiếp nhé. %5Burl=
Đây là ví dụ về ý định của mình:
http://www.cadviet.com/upfiles/VD.dwg


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)

)
  • Vote tăng 3

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
toai    1
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 độ

Thanks! Đoạn lisp này rất đúng với ý của mình, nhưng nếu bạn có thể bố sung thêm tính năng sẽ gán được một giá trị chung bất kỳ cho đường dóng (chân dim) của tất cả các đối tượng đã được chọn thì thật hay. :s_dead:

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
potter    8

Người nghĩ ra ý tưởng cũng hay và người viết lisp cũng hay, nhân tiện em xin hỏi bác ndtnv, hình như măc định khoảng cách từ basepoint tới đường dim của bác là 700, ở cty em hay dùng khoảng cách 600 cho các đường dim, em có thể thay đổi giá trị 700 này ở đâu, Thank bác 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
Thangcowasu    8

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?

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
ndtnv    397
Người nghĩ ra ý tưởng cũng hay và người viết lisp cũng hay, nhân tiện em xin hỏi bác ndtnv, hình như măc định khoảng cách từ basepoint tới đường dim của bác là 700, ở cty em hay dùng khoảng cách 600 cho các đường dim, em có thể thay đổi giá trị 700 này ở đâu, Thank bác nhiều

Bạn sửa trong hàm

(defun DimSpace () (* 7 (getvar "dimscale")))

Bản vẽ mẫu tỉ lệ 1/100 nên có dimscale = 100, kc dim là 7*100 = 700 đv trên bản vẽ

nếu bạn cần kc tương đối là 6 lần dimscale thì sửa thành

(defun DimSpace () (* 6 (getvar "dimscale")))

còn nếu là kc tuyệt đối thì sửa thành

(defun DimSpace () 600)

  • 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
xaaaaao    0

các bác cho em hỏi có cách nào dim khoảng cách của line hoạc pline khi mình chọn vào đối tượng cần dim không? thay vì chọn vào điểm đầu và cuối của đoạn thẳng. các pro nao giỏi về lisp thì chỉ giáo em 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
Doan Van Ha    2.680

các bác cho em hỏi có cách nào dim khoảng cách của line hoạc pline khi mình chọn vào đối tượng cần dim không? thay vì chọn vào điểm đầu và cuối của đoạn thẳng. các pro nao giỏi về lisp thì chỉ giáo em với.

Cho dù chọn vào đối tượng thì cũng cần phải biết kiểu dim: hor, ver, ali... và điểm đặt dim nữa, chứ không thể ăn gỏi kiểu này đâu bạ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
phongtran86    21

Anh hà chỉnh cho em líp trên biến khoảng cách đường kích thước với điểm base phụ thuộc vào cỡ chữ của dim với 3 lần chẳng hạn. Ví dụ text hight dim là 220 dimscale trong thẻ fit là 1 thi cỡ chữ là 220. cỡ chữ bằng Tchư x dimscale. Cảm ơn anh 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
phongtran86    21

Mình định  sửa đoạn code khoảng cách đường kích thước dimension line đến điểm base point như này:

(defun DimSpace () (* 5 (getvar "dimscale") (getvar "dimtxt")))

Nhưng như này vẫn bất tiện. Vì đây là cỡ chữ của dimstyle hiện thời. Mình muốn nó là cỡ chữ của dim đc chỉnh khoảng cách thì làm ntn. :D Cũng đang mày mò nghịch lisp tí :) Anh Hà vào chỉ giáo nhé

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
Doan Van Ha    2.680

Lisp ở trang nào? Chỉnh như thế nào thì nói cho rõ ra. Nói trước để bạn khỏi thất vọng: nếu đơn giản thì mần giúp, còn phức tạp thì ngại sửa lisp của người khác lắm. 4R có nhiều người mà sao bạn cứ chỉ đích danh tôi, không hay 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
phongtran86    21

Lisp ở trang nào? Chỉnh như thế nào thì nói cho rõ ra. Nói trước để bạn khỏi thất vọng: nếu đơn giản thì mần giúp, còn phức tạp thì ngại sửa lisp của người khác lắm. 4R có nhiều người mà sao bạn cứ chỉ đích danh tôi, không hay lắm đâu.

http://www.cadviet.com/upfiles/3/21028_adjustdim_selfadjustdim2.lspn Xin lỗi vì đã làm phiền anh. Tài em thấy anh trả lời ở trên nên em phiền chút.

Mình định  sửa đoạn code khoảng cách đường kích thước dimension line đến điểm base point như này:

(defun DimSpace () (* 5 (getvar "dimscale") (getvar "dimtxt")))

Nhưng như này vẫn bất tiện. Vì đây là cỡ chữ của dimstyle hiện thời. Mình muốn nó là cỡ chữ của dim đc chỉnh khoảng cách thì làm ntn.

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
Doan Van Ha    2.680

Hàm lấy height của Dim được chọn:


(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)
 

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
phongtran86    21

em lắp vào hàm trên

(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)
(defun DimSpace () (* 5 (Get_height(ent))))

không chạy được. Em gà mấy cái này quá. Biến ent là dim đc chọn thì trong hàm dímpace nhập cái gì nhỉ :D

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
Doan Van Ha    2.680

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)
 

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
Doan Van Ha    2.680

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)
 

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
phongtran86    21

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). :(

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
Doan Van Ha    2.680

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.

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  

×