Đế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

#1 risusu

risusu

    biết vẽ circle

  • Members
  • PipPip
  • 34 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 08 October 2011 - 09:19 PM

Lisp này của bạn Thaistreetz viết nhưng chỉ dùng được cho Dtext nhờ các bạn chỉnh sửa để dùng cho Mtext. Thanks
Hình ảnh: Hình đã gửi


;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=22849
(defun C:TC (/ Txt PTxt PTX SS i prmt DK TEMP_JTF DCL_ID DCL_JTF)
(setq SS (ssget "I" '((0 . "TEXT"))) i 0)
(command "undo" "begin")
(setvar "cmdecho" 0)
(if (not JTF-T) (setq JTF-T (list 0 1 0)))
(if (= (cadr JTF-T) 1)
(setq prmt "Text to Center")
(if (= (caddr JTF-T) 1) (setq prmt "Text to Right") (setq prmt "Text to Left"))
);if
(vl-load-com)
(if (not SS)
(progn
(prompt (strcat "\nSelect text object [Setting - " prmt " ]"))
(setq DK (grread nil 4 2))
(if (= (car DK) 3)
(setq SS (ssget "C" (cadr DK) (getcorner (cadr DK)) '((0 . "TEXT"))))
(if (= (cadr DK) 115)
(progn
(setq DCL_JTF (list "JTFtext : dialog {label = \"Justify in Region\"; : boxed_radio_row {"
" : radio_button { label = \"Left\"; key = \"Lft\";}"
" : spacer { width = 1.2; }"
" : radio_button { label = \"Center\"; key = \"Ctr\";}"
" : radio_button { label = \"Right\"; key = \"Rgt\";}}"
" ok_cancel;}"))
(setq TEMP_JTF (vl-filename-mktemp "CTK.DCL")
FILE_DCL (open TEMP_JTF "W"))
(foreach LL DCL_JTF (write-line LL FILE_DCL))
(close FILE_DCL)
(setq DCL_ID (load_dialog TEMP_JTF))
(new_dialog "JTFtext" DCL_ID)
(set_tile "Lft" (rtos (nth 0 JTF-T) 2 0))
(set_tile "Ctr" (rtos (nth 1 JTF-T) 2 0))
(set_tile "Rgt" (rtos (nth 2 JTF-T) 2 0))
(action_tile "accept" "(setq JTF-T (list(atof(get_tile \"Lft\"))(atof (get_tile \"Ctr\"))(atof (get_tile \"Rgt\"))))(done_dialog)")
(start_dialog)
(unload_dialog DCL_ID)
(vl-file-delete TEMP_JTF)
(setq SS (ssget '((0 . "TEXT"))))
);progn
(if (= (cadr DK) 32) (exit) (progn (prompt "\nWrong Key (!) Select text oject or press [S]etting") (C:TC)))
);if
);if
);progn
);if
(if SS
(progn
(command "UCS" "W")
(setq OSMLAST (getvar "osmode"))
(setvar "OSMODE" 0)
(cond ((= (nth 1 JTF-T) 1)
(repeat (sslength SS)
(setq txt (ssname SS i) PTxt (GET_MIDTEXT txt) PTX (GET_CENTER_REGION PTxt) i (1+ i))
(if PTX (vl-cmdf "move" txt "" PTxt PTX))
);repeat
);list_Ctr
((= (nth 0 JTF-T) 0)
(repeat (sslength SS)
(setq txt (ssname SS i) PTxt (GET_RIGHTTEXT txt) PTX (cadr (GET_LR_REGION PTxt)) i (1+ i))
(if PTX (vl-cmdf "move" txt "" PTxt PTX))
);repeat
);list_rgt
((= (nth 2 JTF-T) 0)
(repeat (sslength SS)
(setq txt (ssname SS i) PTxt (GET_LEFTTEXT txt) PTX (car (GET_LR_REGION PTxt)) i (1+ i))
(if PTX (vl-cmdf "move" txt "" PTxt PTX))
);repeat
);list_lft
);cond
(setvar "osmode" OSMLAST)
(command "UCS" "P")
);progn
);if
(prompt "Thaistreetz@gmail.com")
(command "undo" "end")
(princ)
);end TC
(defun GET_CENTER_REGION (PT / SSL PTC )
(setq SSL (entlast))
(if (= (DXF 0 SSL) "POLYLINE")
(while (/= "SEQEND" (DXF 0 (entnext SSL)))
(setq SSL (entnext SSL))
);while
);if
(vl-cmdf "-boundary" PT "")
(if (entnext SSL)
(progn
(command "region" "L" "")
(setq PTC (vlax-safearray->list (vlax-variant-value (vlax-get-property (vlax-ename->vla-object (entlast)) 'Centroid))))
(command "erase" (entlast) "")
PTC
);progn
nil
);if
);END
(defun GET_LR_REGION (PT / SSL PTC )
(setq SSL (entlast))
(if (= (DXF 0 SSL) "POLYLINE")
(while (/= "SEQEND" (DXF 0 (entnext SSL)))
(setq SSL (entnext SSL))
);while
);if
(vl-cmdf "-boundary" PT "")
(if (entnext SSL)
(progn
(command "region" "L" "")
(setq PTC (ACET-GEOM-SS-EXTENTS-FAST (ssget "L")))
(command "erase" (entlast) "")
(list (list (car (car PTC)) (+ (cadr (car PTC)) (* 0.5 (abs (- (cadr (car PTC)) (cadr (cadr PTC)))))))
(list (car (cadr PTC)) (- (cadr (cadr PTC)) (* 0.5 (abs (- (cadr (car PTC)) (cadr (cadr PTC))))))))
);progn
nil
);if
);END
(defun GET_MIDTEXT (EN / TB PTxt PT0 PTA)
(setq TB (textbox (entget EN))
PTxt (GET_M2P (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 GET_RIGHTTEXT (EN / TB PTxt PT0 PTA)
(setq TB (textbox (entget EN))
PTxt (GET_M2P (car TB) (cadr TB))
PT0 (DXF 10 EN)
PTA (list (+ (car PT0) (car PTxt)) (+ (cadr PT0) (cadr PTxt))))
(list(+(car PT0)(car (cadr TB))(abs(-(cadr(car TB))(cadr (cadr TB))))) (cadr(polar PT0 (+(DXF 50 EN)(angle PT0 PTA))(distance PT0 PTA))))
)
(defun GET_LEFTTEXT (EN / TB PTxt PT0 PTA)
(setq TB (textbox (entget EN))
PTxt (GET_M2P (car TB) (cadr TB))
PT0 (DXF 10 EN)
PTA (list (+ (car PT0) (car PTxt)) (+ (cadr PT0) (cadr PTxt))))
(list (- (car PT0) (abs (- (cadr (car TB)) (cadr (cadr TB))))) (cadr (polar PT0 (+ (DXF 50 EN) (angle PT0 PTA)) (distance PT0 PTA))))
)
(defun DXF (Id Obj)
(cdr (assoc Id (entget Obj)))
)
(defun GET_M2P (PT1 PT2) (polar PT1 (angle PT1 PT2) (* 0.5 (distance PT1 PT2))));end

  • 0
^_^0905-0988.782004^_^

#2 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 08 October 2011 - 09:38 PM

Bạn không đọc quy định post bài ở box Autolisp à ?
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3 risusu

risusu

    biết vẽ circle

  • Members
  • PipPip
  • 34 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 08 October 2011 - 09:49 PM

Đã sửa lại như thế có được không ketxu. Vì mình mới post lần đầu nên còn gà lắm. mong bạn thông cảm. thanks bạn cái lisp đánh cos cao độ nhé.
  • 0
^_^0905-0988.782004^_^

#4 hoan2182

hoan2182

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2646 Bài viết
Điểm đánh giá: 832 (rất tốt)

Đã gửi 08 October 2011 - 10:10 PM

Không hiểu ý của anh risusu dư nào???
Với các kiểu vẽ text vào giữa ô chữ nhật , vuông, tròn, khỏi cần phải dùng lisp! Chỉ cần dùng lệnh DT:
Command: dt TEXT
Current text style: "Standard" Text height: 25.5472 Annotative: No
Specify start point of text or [Justify/Style]: j Enter an option
[Align/Fit/Center/Middle/Right/TL/TC/TR/ML/MC/MR/BL/BC/BR]: c
Specify center point of text:
Specify height <25.5472>: 210
Specify rotation angle of text <0>:
( Với hình vuông, hình chữ nhật, sau khi chọn c, phải Polar tracking để bắt tâm ...)
  • 0

Gió đưa cây cải về trời

Rau răm ở lại chịu lời đắng cay...


#5 risusu

risusu

    biết vẽ circle

  • Members
  • PipPip
  • 34 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 08 October 2011 - 10:14 PM

Không hiểu ý của anh dư nào???
Với các kiểu vẽ text vào giữa ô chữ nhật , vuông, tròn, khỏi cần phải dùng lisp! Chỉ cần dùng lệnh DT:
Command: dt TEXT
Current text style: "Standard" Text height: 25.5472 Annotative: No
Specify start point of text or [Justify/Style]: j Enter an option
[Align/Fit/Center/Middle/Right/TL/TC/TR/ML/MC/MR/BL/BC/BR]: c
Specify center point of text:
Specify height <25.5472>: 210
Specify rotation angle of text <0>:
( Với hình vuông, hình chữ nhật, sau khi chọn c, phải Polar trackinh để bắt tâm ...Đừng hao tổn Nơ- ron và những chuyện vô bổ!


Bạn đã dùng lisp này chưa nếu chưa thì dùng thử đi. đánh lệnh kéo 1 cái bao quanh toàn bộ text là nó tự động vào giữa rất nhanh.
  • 1
^_^0905-0988.782004^_^

#6 hoangtung_91hn

hoangtung_91hn

    biết pan

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

Đã gửi 19 February 2012 - 02:58 PM

không có lits dành cho TEXT hay MTEXT hả các anh. Vì em thấy dùng text và mtext nhiều hơn DTEXT mà.
  • 0

#7 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 19 February 2012 - 03:18 PM

không có lits dành cho TEXT hay MTEXT hả các anh. Vì em thấy dùng text và mtext nhiều hơn DTEXT mà.

DTEXT chính là TEXT đó.
  • 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.


#8 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 19 February 2012 - 10:37 PM

Lisp này của bạn Thaistreetz viết nhưng chỉ dùng được cho Dtext nhờ các bạn chỉnh sửa để dùng cho Mtext. Thanks Hình ảnh: Hình đã gửi

Những trường hợp lập bảng như thế này thì tốt hơn là dùng DTEXT cho nhẹ. Quan điểm của mình khi vẽ là hạn chế dùng MTEXT nên không viết cho MTEXT.
Mình bận nên chỉ sửa qua 1 chút theo yêu cầu của bạn (Căn TEXT hoặc MTEXT vào chính giữa ô) thôi nhá.
Không căn được MTEXT cho lựa chọn căn vào lề phải và trái của ô đâu đấy, bác nào rảnh rỗi thì sửa dùm bạn ấy cho 2 lựa chọn này. mình cảm ơn!
(defun C:TC (/ Txt PTxt PTX SS i prmt DK TEMP_JTF DCL_ID DCL_JTF)
(setq SS (ssget "I" '((0 . "*TEXT"))) i 0)
(command "undo" "begin")
(setvar "cmdecho" 0)
(if (not JTF-T) (setq JTF-T (list 0 1 0)))
(if (= (cadr JTF-T) 1)
(setq prmt "Text to Center")
(if (= (caddr JTF-T) 1) (setq prmt "Text to Right") (setq prmt "Text to Left"))
);if
(vl-load-com)
(if (not SS)
(progn
(prompt (strcat "\nSelect text object [Setting - " prmt " ]"))
(setq DK (grread nil 4 2))
(if (= (car DK) 3)
(setq SS (ssget "C" (cadr DK) (getcorner (cadr DK)) '((0 . "*TEXT"))))
(if (= (cadr DK) 115)
(progn
(setq DCL_JTF (list "JTFtext : dialog {label = \"Justify in Region\"; : boxed_radio_row {"
" : radio_button { label = \"Left\"; key = \"Lft\";}"
" : spacer { width = 1.2; }"
" : radio_button { label = \"Center\"; key = \"Ctr\";}"
" : radio_button { label = \"Right\"; key = \"Rgt\";}}"
" ok_cancel;}"))
(setq TEMP_JTF (vl-filename-mktemp "CTK.DCL")
FILE_DCL (open TEMP_JTF "W"))
(foreach LL DCL_JTF (write-line LL FILE_DCL))
(close FILE_DCL)
(setq DCL_ID (load_dialog TEMP_JTF))
(new_dialog "JTFtext" DCL_ID)
(set_tile "Lft" (rtos (nth 0 JTF-T) 2 0))
(set_tile "Ctr" (rtos (nth 1 JTF-T) 2 0))
(set_tile "Rgt" (rtos (nth 2 JTF-T) 2 0))
(action_tile "accept" "(setq JTF-T (list(atof(get_tile \"Lft\"))(atof (get_tile \"Ctr\"))(atof (get_tile \"Rgt\"))))(done_dialog)")
(start_dialog)
(unload_dialog DCL_ID)
(vl-file-delete TEMP_JTF)
(setq SS (ssget '((0 . "TEXT"))))
);progn
(if (= (cadr DK) 32) (exit) (progn (prompt "\nWrong Key (!) Select text oject or press [S]etting") (C:TC)))
))));if
(if SS
(progn
(command "UCS" "W")
(setq OSMLAST (getvar "osmode"))
(setvar "OSMODE" 0)
(cond ((= (nth 1 JTF-T) 1)
(repeat (sslength SS)
(setq txt (ssname SS i) PTxt (GET_MIDTEXT txt) PTX (GET_CENTER_REGION PTxt) i (1+ i))
(if PTX (vl-cmdf "move" txt "" PTxt PTX))));list_Ctr
((= (nth 0 JTF-T) 0)
(repeat (sslength SS)
(setq txt (ssname SS i) PTxt (GET_RIGHTTEXT txt) PTX (cadr (GET_LR_REGION PTxt)) i (1+ i))
(if PTX (vl-cmdf "move" txt "" PTxt PTX))));list_rgt
((= (nth 2 JTF-T) 0)
(repeat (sslength SS)
(setq txt (ssname SS i) PTxt (GET_LEFTTEXT txt) PTX (car (GET_LR_REGION PTxt)) i (1+ i))
(if PTX (vl-cmdf "move" txt "" PTxt PTX))));list_lft
);cond
(setvar "osmode" OSMLAST)
(command "UCS" "P")));if
(prompt "Thaistreetz@gmail.com")
(command "undo" "end")
(princ)
);end TC
(defun GET_CENTER_REGION (PT / SSL PTC enx)
(setq SSL (entlast) enx SSL)
(if (= (DXF 0 SSL) "POLYLINE")
(while (/= "SEQEND" (DXF 0 (entnext SSL))) (setq SSL (entnext SSL))));if
(vl-cmdf "-boundary" PT "")
(if (entnext SSL)
(progn
(command "region" "L" "")
(setq PTC (vlax-safearray->list (vlax-variant-value (vlax-get-property (vlax-ename->vla-object (entlast)) 'Centroid))))));if
(while (setq enx (entnext enx)) (entdel enx))
ptc);END
(defun GET_LR_REGION (PT / SSL PTC )
(setq SSL (entlast))
(if (= (DXF 0 SSL) "POLYLINE")
(while (/= "SEQEND" (DXF 0 (entnext SSL)))(setq SSL (entnext SSL))));if
(vl-cmdf "-boundary" PT "")
(if (entnext SSL)
(progn
(command "region" "L" "")
(setq PTC (ACET-GEOM-SS-EXTENTS-FAST (ssget "L")))
(entdel (entlast))
(list (list (car (car PTC)) (+ (cadr (car PTC)) (* 0.5 (abs (- (cadr (car PTC)) (cadr (cadr PTC)))))))
(list (car (cadr PTC)) (- (cadr (cadr PTC)) (* 0.5 (abs (- (cadr (car PTC)) (cadr (cadr PTC)))))))));progn
nil));END
(defun GET_MIDTEXT (EN / TB PTxt PT0 PTA)
(setq TB (ACET-GEOM-TEXTBOX (entget EN) 0))
(GET_M2P (car TB) (caddr TB)))
(defun GET_RIGHTTEXT (EN / TB PTxt PT0 PTA)
(setq TB (textbox (entget EN))
PTxt (GET_M2P (car TB) (cadr TB))
PT0 (DXF 10 EN)
PTA (list (+ (car PT0) (car PTxt)) (+ (cadr PT0) (cadr PTxt))))
(list(+(car PT0)(car (cadr TB))(abs(-(cadr(car TB))(cadr (cadr TB))))) (cadr(polar PT0 (+(DXF 50 EN)(angle PT0 PTA))(distance PT0 PTA)))))
(defun GET_LEFTTEXT (EN / TB PTxt PT0 PTA)
(setq TB (textbox (entget EN))
PTxt (GET_M2P (car TB) (cadr TB))
PT0 (DXF 10 EN)
PTA (list (+ (car PT0) (car PTxt)) (+ (cadr PT0) (cadr PTxt))))
(list (- (car PT0) (abs (- (cadr (car TB)) (cadr (cadr TB))))) (cadr (polar PT0 (+ (DXF 50 EN) (angle PT0 PTA)) (distance PT0 PTA)))))
(defun DXF (Id Obj) (cdr (assoc Id (entget Obj))))
(defun GET_M2P (PT1 PT2) (polar PT1 (angle PT1 PT2) (* 0.5 (distance PT1 PT2))));end

  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#9 t031285

t031285

    biết vẽ rectang

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

Đã gửi 20 February 2012 - 10:24 AM

Lisp này căn được 1 dòng text vào giữa hình cn hoặc vuông,có bác nào có lisp căn nhiều dòng text vào không,cho mình xin.Thanks.
  • 0

#10 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 20 February 2012 - 10:46 AM

Lisp này căn được 1 dòng text vào giữa hình cn hoặc vuông,có bác nào có lisp căn nhiều dòng text vào không,cho mình xin.Thanks.


Lisp này căn được 1 dòng text vào giữa hình cn hoặc vuông,có bác nào có lisp căn nhiều dòng text vào không,cho mình xin.Thanks.

Hề hề hề, nếu đã căn được một dòng text ắt bạn sẽ có thể căn được nhiều dòng vói một vòng lặp để căn cho các text có trong bộ chọn của bạn.
Là người tham gia diễn đàng không mới,và cũng đã có ít nhiều kinh nghiệm về lisp. bạn hãy cố gắng tự sửa cái lisp trên được không.
Gợi ý là bạn hãy chọn tập hợp các Text cần căn chỉnh bằng hàm ssget rồi sau đó lặp với hàm while hoặc foreach xem sao nhé.
Chúc bạn thành công...
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#11 t031285

t031285

    biết vẽ rectang

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

Đã gửi 20 February 2012 - 11:25 AM



Hề hề hề, nếu đã căn được một dòng text ắt bạn sẽ có thể căn được nhiều dòng vói một vòng lặp để căn cho các text có trong bộ chọn của bạn.
Là người tham gia diễn đàng không mới,và cũng đã có ít nhiều kinh nghiệm về lisp. bạn hãy cố gắng tự sửa cái lisp trên được không.
Gợi ý là bạn hãy chọn tập hợp các Text cần căn chỉnh bằng hàm ssget rồi sau đó lặp với hàm while hoặc foreach xem sao nhé.
Chúc bạn thành công...

Nói thật với bác,về lisp thì e mù tịt,Bác có thời gian thì giúp e tí.Cảm ơn bác nhiều.
  • 0

#12 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 20 February 2012 - 03:42 PM

Nói thật với bác,về lisp thì e mù tịt,Bác có thời gian thì giúp e tí.Cảm ơn bác nhiều.


Nói thật với bác,về lisp thì e mù tịt,Bác có thời gian thì giúp e tí.Cảm ơn bác nhiều.

Hề hề hề,
Bạn đã dùng lisp này với nhiều text chưa nhỉ???
Mình chưa dùng nhưng đọc lisp thì thấy bác ấy cho phép làm với nhiều text cơ mà. bạn hãy thử lại coi sao 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.

#13 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 20 February 2012 - 04:26 PM

Lisp này căn được 1 dòng text vào giữa hình cn hoặc vuông,có bác nào có lisp căn nhiều dòng text vào không,cho mình xin.Thanks.

Lisp của TG Thaistress căn tất cả text/mtext trong từng ô về giữa ô. Khi đó nếu trong ô có nhiều text thì chúng sẽ đè lên nhau. Tôi đoán là ý bạn không phải thế. Có lẽ bạn muốn nếu ô có nhều dòng text thì chúng không đè lên nhau mà vẫn cách nhau theo từng hàng(?). Nếu là đúng ý bạn thì y/c của bạn đưa ra là chưa đầy đủ, vì còn nhiều vấn đề liên quan khác, chẳng hạn:
- Khoảng cách giữa các hàng?
- Khoảng cách của hàng trên/dưới so với đường bao?
Nói chung là hơi khổ đấy.
Nếu đoán sai thì thôi nhé!
Thân thương!
  • 2

* 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.


#14 t031285

t031285

    biết vẽ rectang

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

Đã gửi 20 February 2012 - 04:32 PM

Lisp của TG Thaistress căn tất cả text/mtext trong từng ô về giữa ô. Khi đó nếu trong ô có nhiều text thì chúng sẽ đè lên nhau. Tôi đoán là ý bạn không phải thế. Có lẽ bạn muốn nếu ô có nhều dòng text thì chúng không đè lên nhau mà vẫn cách nhau theo từng hàng(?). Nếu là đúng ý bạn thì y/c của bạn đưa ra là chưa đầy đủ, vì còn nhiều vấn đề liên quan khác, chẳng hạn:
- Khoảng cách giữa các hàng?
- Khoảng cách của hàng trên/dưới so với đường bao?
Nói chung là hơi khổ đấy.
Nếu đoán sai thì thôi nhé!
Thân thương!

Ý mình như thế này,có 2 dòng text(hoặc n dòng text) cách nhau 1 đoạn có sẵn.Khi sử dụng lisp sẽ đưa 2 dòng text này vào giữa 1 hcn hoặc 1 hình bất kỳ,trung điểm của khoảng cách 2 dòng text sẽ là tâm của hình đó.Nếu nhiều dòng text thì trung điểm của khoảng cách text đầu và text cuối sẽ là tâm của hình.Cảm ơn các bác đã quan tâm.
  • 0

#15 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 20 February 2012 - 09:42 PM

Ý mình như thế này,có 2 dòng text(hoặc n dòng text) cách nhau 1 đoạn có sẵn.Khi sử dụng lisp sẽ đưa 2 dòng text này vào giữa 1 hcn hoặc 1 hình bất kỳ,trung điểm của khoảng cách 2 dòng text sẽ là tâm của hình đó.Nếu nhiều dòng text thì trung điểm của khoảng cách text đầu và text cuối sẽ là tâm của hình.Cảm ơn các bác đã quan tâm.

Vậy yêu cầu của bạn khác hẳn với lisp đầu topic. Mục đích của Lisp bác Thái viết là tự động sắp các Text (nhiều text) vào chính giữa ô mà nó đang đứng <=> bạn quét chọn 1 loạt Text, lisp sẽ xử lý từng thằng Text một. Còn bạn yêu cầu là coi tất cả các nhóm bạn chọn là 1, tống nó vào "tâm" 1 hình bất kỳ nào đó.
Thực ra yêu cầu của bạn cũng không khó, chỉ là kết hợp của 2 lisp xác định tâm BoundingBox tập chọn và TÂM của 1 hình bất kỳ - cả 2 đều có thể tìm thấy trong diễn đàn. Tuy nhiên, bạn hãy đưa ra định nghĩa Tâm của 1 hình bất kỳ - của bạn - và - hình đó được tạo ra như thế nào ^^

Trước đó, hãy ngó qua cái nội quy yêu cầu trong Box Autolisp ^^
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#16 t031285

t031285

    biết vẽ rectang

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

Đã gửi 20 February 2012 - 09:53 PM

Vậy yêu cầu của bạn khác hẳn với lisp đầu topic. Mục đích của Lisp bác Thái viết là tự động sắp các Text (nhiều text) vào chính giữa ô mà nó đang đứng <=> bạn quét chọn 1 loạt Text, lisp sẽ xử lý từng thằng Text một. Còn bạn yêu cầu là coi tất cả các nhóm bạn chọn là 1, tống nó vào "tâm" 1 hình bất kỳ nào đó.
Thực ra yêu cầu của bạn cũng không khó, chỉ là kết hợp của 2 lisp xác định tâm BoundingBox tập chọn và TÂM của 1 hình bất kỳ - cả 2 đều có thể tìm thấy trong diễn đàn. Tuy nhiên, bạn hãy đưa ra định nghĩa Tâm của 1 hình bất kỳ - của bạn - và - hình đó được tạo ra như thế nào ^^

Trước đó, hãy ngó qua cái nội quy yêu cầu trong Box Autolisp ^^

Hình đã có sẵn và move text vào chính giữa hình đó bạn ah.Thanks.
  • 0

#17 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 20 February 2012 - 10:20 PM

- Đó là xét theo phương Y, còn theo phương X thì sao? trong số n dòng đó, mỗi anh 1 kiểu, dài ngắn khác nhau thì bạn tính thế nào?

- Yêu cầu này của bạn nếu thực sự là nếu có ai đó viết dùm thì bạn nên cảm ơn người đó rất nhiều đấy.
Mình nói thể bởi vì đó chính xác là việc làm cực kỳ vô nghĩa. Bạn sai ngay ở cách thức bạn giải quyết công việc dẫn đến việc bạn đưa ra 1 yêu cầu tối nghĩa và.. vô nghĩa. Và cũng có thể (mình thì cho là như vậy), rằng bạn cũng chưa có cái nhu cầu ngớ ngẩn đó đâu, nhưng vì thử dùng lisp trên bạn thấy nó chưa làm được việc này, việc kia.. bạn đưa ra yêu cầu cốt để chỉ tăng thêm tính năng cho nó, nhưng bản thân bạn thì cũng chưa chắc là mình có sử dụng nó hay không.
Mình có thể viết lisp phụ vụ công việc, nhưng nếu mình có nhu cầu trên thì mình dùng lệnh Move là OK rồi. (có thể mình nói hơi khó nghe, mong bạn không giận)
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#18 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 20 February 2012 - 10:48 PM

Hình đã có sẵn và move text vào chính giữa hình đó bạn ah.Thanks.

Có 1 cách để bạn không làm cho diễn đàn rối rắm vì không hiểu ý bạn, đó là: bạn post 1 bản vẽ ví dụ lên, trong đó thể hiện cái hiện hữu và cái bạn muốn đạt đến sau khi dùng lisp. Hy vọng từ đó mọi điều sẽ sáng tỏ.
  • 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.


#19 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 - 09:05 AM

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

#20 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 - 09:08 AM

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


  • 0