Đến nội dung


Hình ảnh
- - - - -

[Nhờ chỉnh sửa] Xin lisp căn Text vào chính giữa ô


  • Please log in to reply
22 replies to this topic

#21 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 21 July 2012 - 01:50 PM

Nhờ các bác chỉnh giúp em lisp của Bác ThaiStreetZ căn chỉnh text, Mtext vào giữa 2 đường line, polyline

Hề hề hề,
Hãy post bản vẽ lên để mọi người biết thế nào là giữa nhé...
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#22 banbe0274

banbe0274

    biết vẽ pline

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

Đã gửi 21 July 2012 - 02:51 PM

Bản vẽ VD đây . Bác Giúp em nhé!http://www.cadviet.c..._xap_text_1.dwg
  • 0

#23 damvinhduy

damvinhduy

    biết vẽ line

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

Đã gửi 22 July 2012 - 10:12 AM

Bản vẽ VD đây . Bác Giúp em nhé!http://www.cadviet.c..._xap_text_1.dwg

Bạn dùng thử lisp này. Lệnh là TM dùng được cho Text lẩn MText. Have fun!

;;;============================[ TM.lsp ]=============================;;;
;;; Cong dung: ALign Text Middle =====================================;;;
;;; Version: 1.0 =====================================================;;;
;;; Create by damvinhduy =============================================;;;
(defun C:TM (/ Txt PTxt PTX SS n OSMLAST lstpoint1 lstpoint2 pc pt pp)
(vl-load-com)
(setq SS (ssget "I" '((0 . "*TEXT"))))
(command ".undo" "BE")
(if (not SS)
(progn
(prompt "- Select text object")
(setq SS (ssget '((0 . "*TEXT"))))
);progn
);if
(setq OSMLAST (getvar "osmode"))
(setvar "OSMODE" 0)
(setq n 0)
(repeat (sslength SS)
(setq txt (ssname SS n))
(if (= (DXF 0 txt) "TEXT")
(progn
(setq PTxt (GET_MIDTEXT txt))
(setq lstpoint1 (lstpoint (UOject txt)))
(setq lstpoint2 (lstpoint (AOject txt)))
(setq pt (pmin lstpoint1))
(setq pp (pmax lstpoint2))
(setq PTX (CV:Geom-Midpoint pt pp))
(setq Pc (list (car PTxt) (cadr PTX) 0.0))
(vl-cmdf "move" txt "" PTxt Pc)
)
(progn
(TM txt)
(setq PTxt (DXF 10 txt))
(setq lstpoint1 (lstpoint (UOject txt)))
(setq lstpoint2 (lstpoint (AOject txt)))
(setq pt (pmin lstpoint1))
(setq pp (pmax lstpoint2))
(setq PTX (CV:Geom-Midpoint pt pp))
(setq Pc (list (car PTxt) (cadr PTX) 0.0))
(entmod (subst (cons 10 Pc) (cons 10 PTxt) (entget txt)))
)
)
(setq n (1+ n))
);repeat
(command ".undo" "E")
(princ "\n***Copyright © 2012 damvinhduy***")
(setvar "osmode" OSMLAST)
(princ)
);end TC
;;;---------------------------------------------------------------------
(defun GET_MIDTEXT (EN / TB PTxt PT0 PTA)
(setq TB (textbox (entget EN))
PTxt (CV:Geom-Midpoint (car TB) (cadr TB))
PT0 (DXF 10 EN)
PTA (list (+ (car PT0) (car PTxt)) (+ (cadr PT0) (cadr PTxt))))
(polar PT0 (+ (DXF 50 EN) (angle PT0 PTA)) (distance PT0 PTA))
);end
;;;---------------------------------------------------------------------
(defun DXF (Id Obj)
(cdr (assoc Id (entget Obj)))
)
;;;---------------------------------------------------------------------
(defun TM (txt / p pl hor at atnew)
(setq ver (cdr (assoc 43 (entget txt))))
(setq at (cdr (assoc 71 (entget txt))))
(setq P (cdr (assoc 10 (entget txt))))
(if
(and (/= at 4) (/= at 5) (/= at 6))
(progn
(cond
((or (= at 1) (= at 2) (= at 3))
(setq p1 (polar p (* 1.5 pi) (* ver 0.5)))
)
((or (= at 7) (= at 8) (= at 9))
(setq p1 (polar p (* 0.5 pi) (* ver 0.5)))
)
)
(cond
((or (= at 1) (= at 7))
(setq atnew 4)
)
((or (= at 2) (= at 8))
(setq atnew 5)
)
((or (= at 3) (= at 9))
(setq atnew 6)
)
)
(entmod (subst (cons 10 p1) (cons 10 p) (entget txt)))
(entmod (subst (cons 71 atnew) (cons 71 at) (entget txt)))
(setq txt txt)
)
(setq txt txt)
)
)
;;;---------------------------------------------------------------------
(defun AOject (txt / h l p0 p1 ss1 LOj)
(setq h (DXF 40 txt))
(setq l (* 70 h))
(setq p0 (DXF 10 txt))
(setq p1 (polar p0 (* 0.5 pi) l))
(setq ss1 (ssget "F" (list p0 p1) (list (cons 0 "*LINE"))))
(setq AOj (ssname ss1 0))
AOj
)
;;;---------------------------------------------------------------------
(defun UOject (txt / h l p0 p2 ss2 ROj)
(setq h (DXF 40 txt))
(setq l (* 70 h))
(setq p0 (DXF 10 txt))
(setq p2 (polar p0 (* 1.5 pi) l))
(setq ss2 (ssget "F" (list p0 p2) (list (cons 0 "*LINE"))))
(setq UOj (ssname ss2 0))
UOj
)
;;;---------------------------------------------------------------------
(defun lstpoint (eline)
(cond
(
(wcmatch (cdr (assoc 0 (entget eline))) "LINE")
(append (list (vlax-curve-getStartPoint eline) (vlax-curve-getEndPoint eline)))
)
(
(wcmatch (cdr (assoc 0 (entget eline))) "LWPOLYLINE")
(getvert-en eline)
)
)
)
;;;---------------------------------------------------------------------
(defun pmin (lstpoint)
(apply 'mapcar (cons 'min lstpoint))
)
;;;---------------------------------------------------------------------
(defun pmax (lstpoint)
(apply 'mapcar (cons 'max lstpoint))
)
;;;---------------------------------------------------------------------
(defun getvert-en (en / i L)
(setq i -1 L nil)
(repeat (fix (1+ (vlax-curve-getEndParam en)))
(setq i (1+ i) L (append L (list (vlax-curve-getPointAtParam en i))))
)
)
;;;---------------------------------------------------------------------
(defun CV:Geom-Midpoint (p1 p2)(mapcar '(lambda (x y) (* (+ x y) 0.5)) p1 p2))


  • 2