Đến nội dung


Hình ảnh
5 stars - based on 24598 reviews
- - - - -

[Yêu Cầu] Nhờ Viết Lisp Chia Dim Và Gộp Dim.


  • Please log in to reply
6 replies to this topic

#1 Mỹ Siro

Mỹ Siro

    biết zoom

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

Đã gửi 03 April 2017 - 10:39 PM

Em muốn nhờ các anh viết giúp giùm em 1 lisp chia dim và gộp dim lại

Ví dụ ta có 1 dim tổng của 1 đối tượng như này: 

 

159f0b.png

 

Sau khi ta pick vào các điểm trên đối tượng thì ta được như này:

 

22fbb0.png

 và ngược lại là gộp các dim con thành 1 dim tổng.

Em xin cảm ơn và chúc các anh sức khỏe và có 1 ngày làm việc thành công !

Ps: Dim thì cứ lấy theo dim đang được set current hiện hành là được ạ !


  • -1

#2 Danh Cong

Danh Cong

    biết lệnh block

  • Moderator
  • PipPipPipPipPipPip
  • 404 Bài viết
Điểm đánh giá: 88 (tàm tạm)

Đã gửi 03 April 2017 - 11:03 PM

Mình thấy yêu cầu của bạn có thể giải quyết trực tiếp: 

+ Chia Dim: dùng lệnh đo liên tiếp DCO. ( Vì yêu cầu của bạn phải pick điểm trên đối tượng ).

+ Cộng Dim: Sao lại phải chọn các Dim con trong khi chỉ cần Dim điểm đầu và điểm cuối là xong? Tự dưng lại phức tạp hoá 1 vấn đề ?


  • 1

            *** Vô lo - Vô nghĩ - Vô sầu hận ***
*** Chẳng thương - Chẳng giận - Chẳng đau lòng ***


#3 chien_lv

chien_lv

    biết vẽ spline

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

Đã gửi 04 April 2017 - 07:40 AM

Bổ sung: + Chia Dim: dùng lệnh QDIM là có thể giải quyết rồi.

 

 

 

  • 1

#4 Mỹ Siro

Mỹ Siro

    biết zoom

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

Đã gửi 04 April 2017 - 08:03 AM

Mình thấy yêu cầu của bạn có thể giải quyết trực tiếp: 

+ Chia Dim: dùng lệnh đo liên tiếp DCO. ( Vì yêu cầu của bạn phải pick điểm trên đối tượng ).

+ Cộng Dim: Sao lại phải chọn các Dim con trong khi chỉ cần Dim điểm đầu và điểm cuối là xong? Tự dưng lại phức tạp hoá 1 vấn đề ?

Mình  làm việc với số lượng dim rất nhiều nên ngồi dim rất vất vả bạn à, với lại các đối tượng nó gần nhau nên nhiều khi pick nhầm nữa, nói chung là nếu không quan trọng với mình thì mình đâu có tạo topic để nhờ đâu ?

Thứ 2 vấn đề của mình là làm bên thiết kế nhiều khi ước tính chia khoảng cách các đối tượng, nếu ko phù hợp thì lại gộp dim lại rồi chia ra, đở mất công ngồi dim lại từ đầu, với số lượng dim là rất nhiều.


  • 0

#5 quansla

quansla

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 654 Bài viết
Điểm đánh giá: 229 (khá)

Đã gửi 04 April 2017 - 08:56 AM

Mình  làm việc với số lượng dim rất nhiều nên ngồi dim rất vất vả bạn à, với lại các đối tượng nó gần nhau nên nhiều khi pick nhầm nữa, nói chung là nếu không quan trọng với mình thì mình đâu có tạo topic để nhờ đâu ?

Thứ 2 vấn đề của mình là làm bên thiết kế nhiều khi ước tính chia khoảng cách các đối tượng, nếu ko phù hợp thì lại gộp dim lại rồi chia ra, đở mất công ngồi dim lại từ đầu, với số lượng dim là rất nhiều.

 

 

Cái này là ăn theo kiểu làm việc của Revit mà, cơ mà theo mình nghĩ làm thiết kế quan trọng là cẩn thận thôi, bỏ công sức ra một chút, bé quá mà pick nhầm thì Zoom lên, trích tỉ lệ lớn, chọn DIM nhỏ hơn rồi Ma lại; bỏ qua không trích nữa - trích cái chính thôi

Mình nghĩ là nếu các pro viết thì viết được, nhưng có cần thiết không, có lệ thuộc vào LISPer quá không?


  • 0

#6 quang_lac

quang_lac

    biết lệnh stretch

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

Đã gửi 04 April 2017 - 09:09 AM

Lisp chia dim cho bạn

(defun c:LegLengthMod ( / ss dimobjs)
;; codehimbelonga KerryBrown@theSwamp 2010.05.28
(vl-load-com)
(if (and (setq ss (ssget '((0 . "DIMENSION"))))
(setq dimobjs (mapcar 'vlax-ename->vla-object
(vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
)
)
)
(foreach dim dimobjs
(vla-put-extlinefixedlensuppress dim :vlax-true)
(vla-put-extlinefixedlen dim (* 2 (vla-get-textheight dim)))
)
)
(princ)
)
(defun c:SplitDims (/ sel newpt ent edata elist)
;; codehimbelonga KerryBrown@theSwamp 2010.05.28
(if (and (setq sel (entsel "\nSelect Dimension to Split."))
(setq newpt (getpoint "\Select new Dim Point"))
)
(progn (setq ent (car sel)
edata (entget ent)
elist (vl-remove-if
'(lambda (pair)
(member (car pair)
(list -1 2 5 102 310 300 330 331 340 350 360 410)
)
)
edata
)
)
(entmod (subst (cons 14 newpt) (assoc 14 elist) edata))
(entmakex (subst (cons 13 newpt) (assoc 13 elist) elist))
)
)
(princ)
)

  • 1

#7 Mỹ Siro

Mỹ Siro

    biết zoom

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

Đã gửi 04 April 2017 - 10:28 AM

 

Lisp chia dim cho bạn

(defun c:LegLengthMod ( / ss dimobjs)
;; codehimbelonga KerryBrown@theSwamp 2010.05.28
(vl-load-com)
(if (and (setq ss (ssget '((0 . "DIMENSION"))))
(setq dimobjs (mapcar 'vlax-ename->vla-object
(vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
)
)
)
(foreach dim dimobjs
(vla-put-extlinefixedlensuppress dim :vlax-true)
(vla-put-extlinefixedlen dim (* 2 (vla-get-textheight dim)))
)
)
(princ)
)
(defun c:SplitDims (/ sel newpt ent edata elist)
;; codehimbelonga KerryBrown@theSwamp 2010.05.28
(if (and (setq sel (entsel "\nSelect Dimension to Split."))
(setq newpt (getpoint "\Select new Dim Point"))
)
(progn (setq ent (car sel)
edata (entget ent)
elist (vl-remove-if
'(lambda (pair)
(member (car pair)
(list -1 2 5 102 310 300 330 331 340 350 360 410)
)
)
edata
)
)
(entmod (subst (cons 14 newpt) (assoc 14 elist) edata))
(entmakex (subst (cons 13 newpt) (assoc 13 elist) elist))
)
)
(princ)
)

cảm ơn bạn rất nhiều, đã thanks 1 điểm, mình có góp ý 1 chút là lisp chia dim dùng đã ok rồi nhưng mỗi lần chỉ pick chia dim được 1 lần rồi phải gọi lệnh lại để pick chia dim điểm tiếp theo, bạn có cách nào pick chọn dim cần chia 1 lần rồi mỗi lần mình pick điểm trên đối tượng là nó chia tiếp không, đến khi thoát lệnh thì thôi. Mình cảm ơn bạn trước :)

còn lisp gộp dim thì hình như code nhẫm lẩn hay ko mà nó không gộp dim, cảm ơn bạn !


  • -1