Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
19 replies to this topic

#1 hoangkimoanh

hoangkimoanh

    biết vẽ spline

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

Đã gửi 18 November 2013 - 02:00 PM

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.c...103752_test.lsp


  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 18 November 2013 - 02:28 PM

Dùng lệnh QSELECT hoặc FILTER để chọn tất cả Text, sau đó dùng lệnh CH để canh left, nhanh hơn. Tội gì dùng lisp?


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


#3 hoangkimoanh

hoangkimoanh

    biết vẽ spline

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

Đã gửi 18 November 2013 - 02:40 PM

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 


  • 0

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 18 November 2013 - 02:49 PM

Thay vì Ctrl 1 từng lần cho 1 text, bây chờ bạn chọn tất tả text rồi ctrl 1.


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


#5 hoangkimoanh

hoangkimoanh

    biết vẽ spline

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

Đã gửi 18 November 2013 - 03:01 PM

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!


  • 0

#6 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 18 November 2013 - 03:08 PM

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!!!


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


#7 hoangkimoanh

hoangkimoanh

    biết vẽ spline

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

Đã gửi 18 November 2013 - 03:12 PM

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é!


  • 0

#8 hoangkimoanh

hoangkimoanh

    biết vẽ spline

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

Đã gửi 19 November 2013 - 02:29 PM

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

  • 0

#9 hoangkimoanh

hoangkimoanh

    biết vẽ spline

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

Đã gửi 19 November 2013 - 02:52 PM

Hình và file mong muốn đạt được:

http://www.cadviet.c...52_drawing1.dwg103752_untitled_2.jpg


  • 0

#10 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 20 November 2013 - 02:26 PM

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

  • 3

#11 hoangkimoanh

hoangkimoanh

    biết vẽ spline

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

Đã gửi 21 November 2013 - 07:44 PM

oh hoàn toàn đúng ý em, cảm ơn anh rất nhiều!


  • 0

#12 phamthe

phamthe

    biết vẽ polygon

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

Đã gửi 01 September 2014 - 03:11 PM

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

  • 1

#13 tuandoosan

tuandoosan

    biết vẽ ellipse

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

Đã gửi 28 October 2014 - 03:45 PM

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?


  • 0

#14 enddie7542

enddie7542

    Chưa sử dụng CAD

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

Đã gửi 28 October 2014 - 04:00 PM

Em muốn tinh tong ma trong co text va so : vi du 6m+4m+7m=17m tuy theo don vi (mm,cm m, km...),mong cac anh giup e


  • 0

#15 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 28 October 2014 - 04:15 PM

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

Bài viết đã được chỉnh sửa nội dung bởi gia_bach: 28 October 2014 - 09:20 PM

  • 1

#16 tuandoosan

tuandoosan

    biết vẽ ellipse

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

Đã gửi 28 October 2014 - 04:43 PM

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?


  • 0

#17 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 28 October 2014 - 09:24 PM

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


  • 1

#18 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 29 October 2014 - 08:05 AM

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

  • 2

#19 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 29 October 2014 - 08:24 AM

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


  • 1

#20 tuandoosan

tuandoosan

    biết vẽ ellipse

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

Đã gửi 29 October 2014 - 08:46 AM

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.


  • 0