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  
hoangkimoanh

[Yêu cầu] Nhờ các anh sửa giúp lisp chuyển vị trí text sang trái (Justifi : Left)

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

Nhờ các anh sửa giúp để khi thực hiện lệnh nó sẽ tự chuyển tất cả các text trong bản vẽ sang vị trí bắt điểm trái.

như lisp gửi kèm thì nó chỉ chuyển sang vị trí giữa của text và chỉ chọn có 1 text.

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

mục đích của em là chỉnh các text số có điểm point (mà text chỉnh căn lề trái nhưng vẫn phải trùng với điểm point, để có 1 điểm duy nhất trùng với điểm ponit)

 

thường thì em phải nhấn Ctrl 1 và chọn Text sau đó chọn Justifi : Left để các Text chuyển vị trí căn lề xoay quanh điểm point 

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

dạ em cũng làm như vậy thường ngày, nhưng em thấy cái code trên làm được gần giống cái em cần là nó chọn Text và di chuyển Text đó Middle center. em muốn di chuyển text là Left mà không biết sửa chỗ nào và có thể chọn toàn bộ khu vực hoặc toàn bộ Text trên bản vẽ nữa.

Nhờ anh coi và giúp 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.678

Làm bằng Cad được, và thậm chí còn nhanh hơn lisp thì tại sao vẫn cứ "tương tư" lisp ?

Sửa thì đơn giản thôi nhưng chỉ tội làm cho bạn lệ thuộc lisp mà tội cad!!!

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

vì nếu sửa được thì em sẽ kết hợp 1 lệnh duy nhất để vừa chỉnh điểm point thành vòng tròn, vừa đổi màu điểm point và di chuyển Text số thứ tự cho trùng điểm point luôn!

có thể là em lợi dụng lisp trong nhiều việc nhưng mà nhờ nó em hoàn thành công việc nhanh hơn!

anh đừng giận 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

Cho em hỏi chút là sao em sửa đoạn mã này dùng với mã căn lề trái 0 (Left) mà sao nó tại hiểu là giữa (Center) nhỉ? 

;;;acAlignmentLeft = 0
 

;;;acAlignmentLeft = 0

;;;acAlignmentCenter =1

(defun c:test ( / )
(setq e1 (entsel "Choose a text: "))
(setq en (entget(car e1)))
(entmod 
(subst (cons 73 0) (assoc 73 en) en) ;;;0 = Left (Center ?)
)
);entmod
(princ)
)

 

(setq e1 (entsel "Choose a text: "))
(setq en (entget(car e1)))
(entmod 
(defun c:test ( / )
(setq e1 (entsel "Choose a text: "))
(setq en (entget(car e1)))
(entmod 
(subst (cons 73 0) (assoc 73 en) en)
)
);entmod
(princ)
)
;;;acAlignmentLeft = 0
;;;acAlignmentCenter =1
(setq e1 (entsel "Choose a text: "))
(setq en (entget(car e1)))
(entmod 
(subst (cons 73 0) (assoc 73 en) en)
)
);entmod
(princ)
)

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
gia_bach    1.442

Lisp chuyển điểm chèn về Left theo yêu cầu.

(defun c:left (/ i ss obj align pt)
  ;; By : Gia_Bach 2013 ;;
  (vl-load-com)
  (if (setq i -1 ss (ssget (list(cons 0 "TEXT")) ))
    (repeat (sslength ss)
      (setq obj (vlax-Ename->Vla-Object (ssname ss (setq i (1+ i)))))
      (if (/= (setq align (vla-get-Alignment obj)) 0)
	(progn
	  (setq pt (vla-get-textalignmentpoint obj))
	  (vla-put-alignment obj 0)
	  (vla-put-insertionpoint obj pt) ))))
  (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
phamthe    1

 

Lisp chuyển điểm chèn về Left theo yêu cầu.

(defun c:left (/ i ss obj align pt)
  ;; By : Gia_Bach 2013 ;;
  (vl-load-com)
  (if (setq i -1 ss (ssget (list(cons 0 "TEXT")) ))
    (repeat (sslength ss)
      (setq obj (vlax-Ename->Vla-Object (ssname ss (setq i (1+ i)))))
      (if (/= (setq align (vla-get-Alignment obj)) 0)
	(progn
	  (setq pt (vla-get-textalignmentpoint obj))
	  (vla-put-alignment obj 0)
	  (vla-put-insertionpoint obj pt) ))))
  (princ))

Nhờ các anh giúp sửa đoạn code trên thêm 2 dòng này vào để đổi font Text và màu đối tượng Text chọn với ạ!

(command "style" "TEXT" "romans.shx" Hst "0.8" "" "" "" "")

(COMMAND "-LAYER" "m" "TEXT" "color" 4 "" "" "" ) 

;;;(command "style" "SoThua" "romans.shx" Hst "0.8" "" "" "" "")
;;;;(COMMAND "-LAYER" "m" "Diem mia" "color" 4 "" "" "" ) 
  • 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
gia_bach    1.442

e muốn chuyển text về "Middle center" thì làm như thế nào ah? a có thể sửa lisp giúp e dk k ah?

 

Về Middle-Center : 

(defun c:mc (/ obj pt)
  ;; By : Gia_Bach 2014 ;;
  (vl-load-com)
  (if (ssget (list(cons 0 "TEXT")) )
    (vlax-for obj (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-Acad-Object)))
      (if (/= (vla-get-Alignment obj) 10)
	(progn
	  (if (= (vla-get-Alignment obj) 0)
	    (setq pt (vla-get-insertionpoint obj))
	    (setq pt (vla-get-textalignmentpoint obj)))
	  (vla-put-alignment obj 10)
	  (vla-put-insertionpoint obj pt)
	  (vla-put-textalignmentpoint obj pt) ))))
  (princ))
(defun c:mc (/ obj pt)
  ;; By : Gia_Bach 2014 ;;
  (vl-load-com)
  (if (ssget (list(cons 0 "TEXT")) )
    (vlax-for obj (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-Acad-Object)))
      (if (/= (vla-get-Alignment obj) 10)
(progn
 (if (= (vla-get-Alignment obj) 0)
   (setq pt (vla-get-insertionpoint obj))
   (setq pt (vla-get-textalignmentpoint obj)))
 (vla-put-alignment obj 10)
 (vla-put-insertionpoint obj pt)
 (vla-put-textalignmentpoint obj pt) ))))
  (princ))
Chỉnh sửa theo gia_bach
  • 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
gia_bach    1.442

Em cam on a, kết quả nhận dk thi ok nhưng text nhận đk lại chạy ra mãi goxc màn hình vậy a? có cách nào giữ nguyên vị trí của text a ah?

Sorry, em lấy lại Lisp ở bài trên nhé.

  • 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
Tot77    501

Trong bộ Express có 1 hàm rất hay, đó là hàm acet-tjust để chuyển justify của text mà không thay đổi vị trí của text. Lệnh trên có thể viết gọn lại như sau.

 

(defun c:mc ()
  (acet-tjust (ssget (list (cons 0 "TEXT"))) "MC")
  (princ)
)
  • Vote tăng 2

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
gia_bach    1.442

Trong bộ Express có 1 hàm rất hay, đó là hàm acet-tjust để chuyển justify của text mà không thay đổi vị trí của text. Lệnh trên có thể viết gọn lại như sau.

 

Cám ơn anh Tot77 về hàm acet-tjust.

Nhưng t/hợp này chủ thớt yêu cầu điểm chèn của Text không thay đổi như hình bài #9.

Riêng với y/cầu cùa Tuandoosan  thì không biết hiểu thế nào ? (vì không có hình minh hoạ)

  • 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
tuandoosan    4

chúc các a bsang tốt lành và 1 ngày làm việc hiệu quả !

 

 E cảm ơn a gia_bach nhe, lisp của a đúng ý của e rùi. lisp của bác Tot77 cũng rất hay ah.

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  

×