Đến nội dung


Hình ảnh
- - - - -

Xoay text thuộc tính trong block


  • Please log in to reply
49 replies to this topic

#21 Kieu Tan

Kieu Tan

    biết vẽ rectang

  • Members
  • PipPip
  • 89 Bài viết
Điểm đánh giá: -23 (kém)

Đã gửi 01 October 2016 - 04:26 PM

1.Blockeditor 1 block bất kỳ. Thay justifi của att thành MC, Move vào tâm đường tròn. Save and close.

2.Insert block đó tại vị trí bất kỳ (xong sẽ xóa) với value attt bất kỳ.

3.Command: ATTSYNC -> select block vừa insert và Yes. Xong xóa block vừa insert đó. Done.

4.Dùng torient trong express để xoay att tùy ý.

 

^_^

- Trong 4 ý của bạn có ý 4 là ok nhưng lệnh này có khi cũng không dùng được. (có những bv vẽ ta không dùng được lệnh này)

- Ý 1 thì chỉ sử dụng được 1 att block được chọn thôi. 

---> Nói chung cũng không ổn lắm ! 


  • 0

#22 Bee

Bee

    biết lệnh extend

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

Đã gửi 01 October 2016 - 05:13 PM

- Trong 4 ý của bạn có ý 4 là ok nhưng lệnh này có khi cũng không dùng được. (có những bv vẽ ta không dùng được lệnh này)

- Ý 1 thì chỉ sử dụng được 1 att block được chọn thôi. 

---> Nói chung cũng không ổn lắm ! 

Ok, nếu thử lisp thì nghịch tí nào. Thêm cả 2 cách Autolisp và Visual lisp.

 

Autolisp này: ^_^ Ah tất nhiên dùng lisp trong trường hợp này là các block trục không nằm trong block tổng nữa nhé.  :D

(defun c:test (/ blk ss n name ins lst value)
  (if (setq blk (car (entsel "\nChon block: ")))
    (progn
      (setq
	ss (ssget "_X" (list '(0 . "INSERT") (assoc 2 (entget blk))))
      )
      (command "_justifytext" ss "" "MC")
      (setq name (cdr (assoc 2 (entget (ssname ss 0)))))
      (setq lst (get-block-entities name))
      (foreach ob lst
	(if (eq (cdr (assoc 0 (entget ob))) "CIRCLE")
	  (setq center (trans (cdr (assoc 10 (entget ob))) 1 0))
	  )
	);foreach
      (foreach ob lst
	(if (eq (cdr (assoc 0 (entget ob))) "ATTDEF")
	  (progn
	    (setq value (cdr (assoc 1 (entget ob))))
	    (entmod (subst (cons 11 center) (assoc 11 (entget ob)) (entget ob)))
	    )
	  )
	);foreach
      (entupd (ssname ss 0))
      (setq n 0)
      (repeat (sslength ss)
	(setq ins (cdr (assoc 10 (entget (ssname ss n)))))
	(setq value (cdr (assoc 1 (entget (entnext (ssname ss n))))))
	(command "_-insert" name "_none" ins 1 1 0 value
		 "_erase" (ssname ss n) "")
	(setq n (1+ n))
	)
      )
    )
  )
(defun get-block-entities ( blk / ent lst )
    (if (setq ent (tblobjname "block" blk))
      (while (setq ent (entnext ent))
	(setq lst (cons ent lst))
        ) ;; end WHILE
    ) ;; end IF
    (reverse lst) ;; Return the list
) ;; end DEFUN
;;;END CODE AUTOLISP HERE



  • 0

#23 Bee

Bee

    biết lệnh extend

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

Đã gửi 01 October 2016 - 05:16 PM

- Trong 4 ý của bạn có ý 4 là ok nhưng lệnh này có khi cũng không dùng được. (có những bv vẽ ta không dùng được lệnh này)

- Ý 1 thì chỉ sử dụng được 1 att block được chọn thôi. 

---> Nói chung cũng không ổn lắm ! 

Thử cả VL xem nào ^_^ Còn cái này thì chơi tất. :D

(defun c:MAC (/ acdoc mspace blk center temp)
  (setq acdoc (vla-get-activedocument (vlax-get-acad-object)))
  (setq mspace (vla-get-modelspace acdoc))
  (if (setq blk (car (entsel "\nChon block: ")))
    (progn
      (vlax-for	blks (vla-get-blocks acdoc)
	(if (wcmatch (vla-get-Name blks) (cdr (assoc 2 (entget blk))))
	  (progn
	    (vlax-for obj blks
	      (if (= (vla-get-ObjectName obj) "AcDbCircle")
		(setq center (vlax-get obj 'Center))
	      )
	    )
	    (vlax-for obj blks
	      (if
		(= (vla-get-ObjectName obj) "AcDbAttributeDefinition")
		 (progn
		   (vla-put-Rotation obj 0.0)
		   (vla-put-Alignment obj acAlignmentMiddleCenter)
		   (vla-put-TextAlignmentPoint
		     obj
		     (vlax-3d-point center)
		   )
		 )			;progn
	      )				;if
	    )				;vlax-for obj
	  )				;progn then
	)				;if
      )					;vlax-for blks
      (setq temp (vla-insertblock
		   mspace
		   (vlax-3d-point '(0. 0. 0.))
		   (cdr (assoc 2 (entget blk)))
		   1
		   1
		   1
		   0
		 )
      )
      (vla-sendcommand
	acdoc
	(strcat	"ATTSYNC\n"
		"Name\n"
		""
		(cdr (assoc 2 (entget blk)))
		"\n"
		""
	)
      )
      (vla-delete temp)
    )					;progn
  )					;if
(command "regen")
  (princ)
)					;defun

;;;END CODE VISUAL LISP HERE

  • 0

#24 Kieu Tan

Kieu Tan

    biết vẽ rectang

  • Members
  • PipPip
  • 89 Bài viết
Điểm đánh giá: -23 (kém)

Đã gửi 01 October 2016 - 05:24 PM

 

Ok, nếu thử lisp thì nghịch tí nào. Thêm cả 2 cách Autolisp và Visual lisp.

 

Autolisp này: ^_^

(defun c:test (/ blk ss n name ins lst value)
  (if (setq blk (car (entsel "\nChon block: ")))
    (progn
      (setq
	ss (ssget "_X" (list '(0 . "INSERT") (assoc 2 (entget blk))))
      )
      (command "_justifytext" ss "" "MC")
      (setq name (cdr (assoc 2 (entget (ssname ss 0)))))
      (setq lst (get-block-entities name))
      (foreach ob lst
	(if (eq (cdr (assoc 0 (entget ob))) "CIRCLE")
	  (setq center (trans (cdr (assoc 10 (entget ob))) 1 0))
	  )
	);foreach
      (foreach ob lst
	(if (eq (cdr (assoc 0 (entget ob))) "ATTDEF")
	  (progn
	    (setq value (cdr (assoc 1 (entget ob))))
	    (entmod (subst (cons 11 center) (assoc 11 (entget ob)) (entget ob)))
	    )
	  )
	);foreach
      (entupd (ssname ss 0))
      (setq n 0)
      (repeat (sslength ss)
	(setq ins (cdr (assoc 10 (entget (ssname ss n)))))
	(setq value (cdr (assoc 1 (entget (entnext (ssname ss n))))))
	(command "_-insert" name "_none" ins 1 1 0 value
		 "_erase" (ssname ss n) "")
	(setq n (1+ n))
	)
      )
    )
  )
(defun get-block-entities ( blk / ent lst )
    (if (setq ent (tblobjname "block" blk))
      (while (setq ent (entnext ent))
	(setq lst (cons ent lst))
        ) ;; end WHILE
    ) ;; end IF
    (reverse lst) ;; Return the list
) ;; end DEFUN
;;;END CODE AUTOLISP HERE


 

 

Thử cả VL xem nào ^_^ Ah tất nhiên dùng lisp trong trường hợp này là các block trục không nằm trong block tổng nữa nhé. :D

(defun c:MAC (/ acdoc mspace blk center temp)
  (setq acdoc (vla-get-activedocument (vlax-get-acad-object)))
  (setq mspace (vla-get-modelspace acdoc))
  (if (setq blk (car (entsel "\nChon block: ")))
    (progn
      (vlax-for	blks (vla-get-blocks acdoc)
	(if (wcmatch (vla-get-Name blks) (cdr (assoc 2 (entget blk))))
	  (progn
	    (vlax-for obj blks
	      (if (= (vla-get-ObjectName obj) "AcDbCircle")
		(setq center (vlax-get obj 'Center))
	      )
	    )
	    (vlax-for obj blks
	      (if
		(= (vla-get-ObjectName obj) "AcDbAttributeDefinition")
		 (progn
		   (vla-put-Rotation obj 0.0)
		   (vla-put-Alignment obj acAlignmentMiddleCenter)
		   (vla-put-TextAlignmentPoint
		     obj
		     (vlax-3d-point center)
		   )
		 )			;progn
	      )				;if
	    )				;vlax-for obj
	  )				;progn then
	)				;if
      )					;vlax-for blks
      (setq temp (vla-insertblock
		   mspace
		   (vlax-3d-point '(0. 0. 0.))
		   (cdr (assoc 2 (entget blk)))
		   1
		   1
		   1
		   0
		 )
      )
      (vla-sendcommand
	acdoc
	(strcat	"ATTSYNC\n"
		"Name\n"
		""
		(cdr (assoc 2 (entget blk)))
		"\n"
		""
	)
      )
      (vla-delete temp)
    )					;progn
  )					;if
  (princ)
)					;defun

;;;END CODE VISUAL LISP HERE

Cả 2 lsp đều bị lỗi hết rồi bạn ơi! 


  • 0

#25 Bee

Bee

    biết lệnh extend

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

Đã gửi 01 October 2016 - 05:28 PM

Cả 2 lsp đều bị lỗi hết rồi bạn ơi! 

Copy paste code đừng download.


  • 0

#26 Kieu Tan

Kieu Tan

    biết vẽ rectang

  • Members
  • PipPip
  • 89 Bài viết
Điểm đánh giá: -23 (kém)

Đã gửi 01 October 2016 - 05:46 PM

Copy paste code đừng download.

load ok rồi nhưng khi sử dụng thì lsp:

gõ lệnh xong sau đó chọn đối tượng rồi là bị lỗi ah! 


  • 0

#27 Bee

Bee

    biết lệnh extend

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

Đã gửi 01 October 2016 - 05:55 PM

load ok rồi nhưng khi sử dụng thì lsp:

gõ lệnh xong sau đó chọn đối tượng rồi là bị lỗi ah! 

Uhm bạn gửi bản vẽ lên đây xem nào !


  • 0

#28 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 01 October 2016 - 05:59 PM

Nếu điểm insert của block trùng với tâm đường tròn thì dùng lsp sửa lại này cho nhanh (Block gốc kệ nó - chỉ sửa các block được chọn)

(defun c:XO  (/ ent i lse lst poi ss)
 (if (setq ss (ssget '((0 . "INSERT") (66 . 1))))
  (repeat (setq i (sslength ss))
   (setq ent (ssname ss (setq i (1- i)))
         poi (cdr (assoc 10 (entget ent)))
         ent (entnext ent)
         lst (list (cons 50 0.0) (cons 10 poi) (cons 71 0) (cons 72 1) (cons 11 poi))
         lse (entget ent))
   (mapcar '(lambda (x) (entmod (subst x (assoc (car x) lse) lse))) lst)
   (entupd ent)))
 (princ))


  • 0

#29 Bee

Bee

    biết lệnh extend

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

Đã gửi 01 October 2016 - 06:25 PM

Nếu điểm insert của block trùng với tâm đường tròn thì dùng lsp sửa lại này cho nhanh (Block gốc kệ nó - chỉ sửa các block được chọn)

(defun c:XO  (/ ent i lse lst poi ss)
 (if (setq ss (ssget '((0 . "INSERT") (66 . 1))))
  (repeat (setq i (sslength ss))
   (setq ent (ssname ss (setq i (1- i)))
         poi (cdr (assoc 10 (entget ent)))
         ent (entnext ent)
         lst (list (cons 50 0.0) (cons 10 poi) (cons 71 0) (cons 72 1) (cons 11 poi))
         lse (entget ent))
   (mapcar '(lambda (x) (entmod (subst x (assoc (car x) lse) lse))) lst)
   (entupd ent)))
 (princ))

Chuẩn, nếu trùng tâm và điểm chèn thì nhàn hơi nhiều :D


  • 0

#30 Kieu Tan

Kieu Tan

    biết vẽ rectang

  • Members
  • PipPip
  • 89 Bài viết
Điểm đánh giá: -23 (kém)

Đã gửi 01 October 2016 - 06:31 PM

Uhm bạn gửi bản vẽ lên đây xem nào !

Bạn test thử chưa ? Do lsp bi lỗi mà

Do điễn đàn bị lỗi nên mình up bv lên không được nữa

 

Nếu điểm insert của block trùng với tâm đường tròn thì dùng lsp sửa lại này cho nhanh (Block gốc kệ nó - chỉ sửa các block được chọn)

(defun c:XO  (/ ent i lse lst poi ss)
 (if (setq ss (ssget '((0 . "INSERT") (66 . 1))))
  (repeat (setq i (sslength ss))
   (setq ent (ssname ss (setq i (1- i)))
         poi (cdr (assoc 10 (entget ent)))
         ent (entnext ent)
         lst (list (cons 50 0.0) (cons 10 poi) (cons 71 0) (cons 72 1) (cons 11 poi))
         lse (entget ent))
   (mapcar '(lambda (x) (entmod (subst x (assoc (car x) lse) lse))) lst)
   (entupd ent)))
 (princ))

Vấn đề là điểm chèn của nó không trùng với tâm đường tròn đó bạn .


  • 0

#31 Bee

Bee

    biết lệnh extend

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

Đã gửi 01 October 2016 - 06:32 PM

Bạn test thử chưa ? Do lsp bi lỗi mà

Do điễn đàn bị lỗi nên mình up bv lên không được nữa

 

Vấn đề là điểm chèn của nó không trùng với tâm đường tròn đó bạn .

Mình test lại rồi mà, không thấy lỗi. Up lên mediafire hoặc fshare.... mới được. Diễn đàn còn ko up đc ảnh xem lỗi gì. :(


  • 0

#32 Kieu Tan

Kieu Tan

    biết vẽ rectang

  • Members
  • PipPip
  • 89 Bài viết
Điểm đánh giá: -23 (kém)

Đã gửi 01 October 2016 - 06:46 PM

Mình test lại rồi mà, không thấy lỗi. Up lên mediafire hoặc fshare.... mới được. Diễn đàn còn ko up đc ảnh xem lỗi gì. :(

load thì thành công rồi nhưng khi dùng lệnh:

1/ lệnh test : thì nó báo lỗi (lsp không chọn được nhiều đối tượng) : 

 ; error: bad DXF group: (11)

2/ lệnh mac : thì nó báo lỗi (lsp cũng không chọn được nhiều đối tượng) : 

Chon block: ; error: bad 3D point: nil

Mình không biết up lên  mediafire hoặc fshare, gà lắm  :)


  • 0

#33 Bee

Bee

    biết lệnh extend

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

Đã gửi 01 October 2016 - 06:51 PM

Cần j chọn nhiều đối tượng. Chon 1 block trục là xong mà. Báo lỗi kiểu này mà ko có file xem thì ai fix dc.
  • 0

#34 Bee

Bee

    biết lệnh extend

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

Đã gửi 01 October 2016 - 07:06 PM

Lisp này chỉ cần chọn 1 block điển hình là toàn bộ block khác cùng loại sẽ auto move att về tâm đường tròn mà.
  • 0

#35 Kieu Tan

Kieu Tan

    biết vẽ rectang

  • Members
  • PipPip
  • 89 Bài viết
Điểm đánh giá: -23 (kém)

Đã gửi 01 October 2016 - 07:10 PM

Cần j chọn nhiều đối tượng. Chon 1 block trục là xong mà. Báo lỗi kiểu này mà ko có file xem thì ai fix dc.


Vi du; minh co 6 truc (6 att block) theo phuong X va 5 truc (5 att block) theo phuong Y thi phai chon het chung de xoay ma
  • 0

#36 Bee

Bee

    biết lệnh extend

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

Đã gửi 01 October 2016 - 07:23 PM

Vi du; minh co 6 truc (6 att block) theo phuong X va 5 truc (5 att block) theo phuong Y thi phai chon het chung de xoay ma

X hay Y hay góc bất kỳ thì cứ chọn đại 1 cái nhìn nó thích thích, em số 3 hay 2 hay 1 hay n theo phương X hoặc Y   :D xong rồi việc còn lại là ngồi xem các em nó diễn  :D


  • 0

#37 Kieu Tan

Kieu Tan

    biết vẽ rectang

  • Members
  • PipPip
  • 89 Bài viết
Điểm đánh giá: -23 (kém)

Đã gửi 01 October 2016 - 07:30 PM

X hay Y hay góc bất kỳ thì cứ chọn đại 1 cái nhìn nó thích thích, em số 3 hay 2 hay 1 hay n theo phương X hoặc Y :D xong rồi việc còn lại là ngồi xem các em nó diễn :D


Khong up bv len dc tiec that.
  • 0

#38 Bee

Bee

    biết lệnh extend

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

Đã gửi 01 October 2016 - 09:03 PM

Khong up bv len dc tiec that.

pm mail mình xem nào.! Kiểu khám qua net này cũng hay nhỉ :D ngồi đoán mò hết.


  • 0

#39 Kieu Tan

Kieu Tan

    biết vẽ rectang

  • Members
  • PipPip
  • 89 Bài viết
Điểm đánh giá: -23 (kém)

Đã gửi 02 October 2016 - 01:07 PM

pm mail mình xem nào.! Kiểu khám qua net này cũng hay nhỉ :D ngồi đoán mò hết.

Mail cua ban la gi vay?
  • 0

#40 Bee

Bee

    biết lệnh extend

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

Đã gửi 02 October 2016 - 02:43 PM

Mail cua ban la gi vay?

kiennt.vncc@gmail.com. Thêm vài  tiếng việt   :D ko bài viết bị xóa.


  • 0