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

#1 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 22 June 2007 - 12:19 AM

Lệnh XO của lisp dưới đây sẽ xoay góc nghiêng của Attribute Block về 0.


(defun c:XO( / ssdt sodt index tt entdt)
(setq ssdt (ssget)
sodt (sslength ssdt)
index 0
)
(repeat sodt
(setq entdt (ssname ssdt index)
index (1+ index)
entdt (entnext entdt)
tt (entget entdt)
tt (subst (cons 50 0.0) (assoc 50 tt) tt)
)
(entmod tt)
(entupd entdt)
)
(princ)
)


Sử dụng đặc hiệu trong trường hợp block ký hiệu trục nằm nghiêng.
Hình đã gửi
  • 0

#2 vndesperados

vndesperados

    biết lệnh xref

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

Đã gửi 22 June 2007 - 03:40 PM

Lệnh XO của lisp dưới đây sẽ xoay góc nghiêng của Attribute Block về 0.


(defun c:XO( / ssdt sodt index tt entdt)
(setq ssdt (ssget)
sodt (sslength ssdt)
index 0
)
(repeat sodt
(setq entdt (ssname ssdt index)
index (1+ index)
entdt (entnext entdt)
tt (entget entdt)
tt (subst (cons 50 0.0) (assoc 50 tt) tt)
)
(entmod tt)
(entupd entdt)
)
(princ)
)


Sử dụng đặc hiệu trong trường hợp block ký hiệu trục nằm nghiêng.
Hình đã gửi




Cái này chỉ dùng cho những Block có điểm chèn trùng với tâm Block (BLock có tính đối xứng)
Nếu gặp những Block không có tính đối xứng thì sao???
  • 0

#3 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 22 June 2007 - 04:34 PM

Cái này chỉ dùng cho những Block có điểm chèn trùng với tâm Block (BLock có tính đối xứng)
Nếu gặp những Block không có tính đối xứng thì sao???


Lệnh này dùng với mọi block có điểm chèn bất kỳ và hình bất kỳ!

Lệnh XO của lisp dưới đây sẽ xoay góc nghiêng của Attribute Block về 0.

Lệnh này dùng để xoay góc nghiêng của Attribute Block trong Block về 0, chứ không hề tác động hoặc lấy thông tin nào từ block mẹ. Ngay trong file ví dụ trên, điểm chèn cũng không nằm tại tâm vòng tròn mà nằm lệch vào đầu mút của nét line, ký hiệu trục trong ví dụ trên cũng không đối xứng tâm vì ngoài vòng tròn còn có kèm thêm một mẩu line ở đầu.

vndesperados hãy đọc mã lệnh chương trình đi (mã có lẽ là đủ ngắn và clear để đọc hiểu), hoặc nếu không đọc được thì cũng nên test qua chương trình đã, đừng suy đoán.
  • 0

#4 vndesperados

vndesperados

    biết lệnh xref

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

Đã gửi 22 June 2007 - 04:56 PM

Lệnh này dùng với mọi block có điểm chèn bất kỳ và hình bất kỳ!

Lệnh này dùng để xoay góc nghiêng của Attribute Block trong Block về 0, chứ không hề tác động hoặc lấy thông tin nào từ block mẹ. Ngay trong file ví dụ trên, điểm chèn cũng không nằm tại tâm vòng tròn mà nằm lệch vào đầu mút của nét line, ký hiệu trục trong ví dụ trên cũng không đối xứng tâm vì ngoài vòng tròn còn có kèm thêm một mẩu line ở đầu.

vndesperados hãy đọc mã lệnh chương trình đi (mã có lẽ là đủ ngắn và clear để đọc hiểu), hoặc nếu không đọc được thì cũng nên test qua chương trình đã, đừng suy đoán.



http://www.cadviet.com/upfiles/Blk001_1.zip

Nhờ bác test trên block này đi.
Cái này mằm trong một phần chương trình ghi diện tích mà mình đã post lên diễn đàn đó

Mà đúng là lúc nãy chỉ đọc thôi, không test
Bây giờ mới test thật nè, mà cái block này là có sẵn chứ không cố tạo ra để chơi bác đâu.

Mô tả block cho bác luôn
Đó là block dùng 6 cái ATT
Ba cái hiển thị:
Một cái ghi ký hiệu
Một cái ghi diện tích
Một cái ghi dân số
Ba cái ẩn
Một cái ghi giá trị handle của đối tượng mà Block gắn vào
Một cái ghi đơn vị DT
Một cái ghi đơn vị dân số
Cực kỳ trong sáng chứ không có gì khuất tất...
  • 0

#5 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 22 June 2007 - 05:05 PM

http://www.cadviet.com/upfiles/Blk001_1.zip

Nhờ bác test trên block này đi.
Cái này mằm trong một phần chương trình ghi diện tích mà mình đã post lên diễn đàn đó


Tại sao vndesperados không test luôn!

trước và sau khi xoay:
Hình đã gửi
  • 0

#6 vndesperados

vndesperados

    biết lệnh xref

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

Đã gửi 22 June 2007 - 05:24 PM

Tại sao vndesperados không test luôn!

trước và sau khi xoay:
Hình đã gửi


(defun c:XO( / ssdt sodt index tt entdt)
(setq ssdt (ssget)
sodt (sslength ssdt)
index 0
)
(repeat sodt
(setq entdt (ssname ssdt index)
index (1+ index)
entdt (entnext entdt)
tt (entget entdt)
tt (subst (cons 50 0.0) (assoc 50 tt) tt)
)
(entmod tt)
(entupd entdt)
)
(princ)
)

Block này hiển thị đến 3 thông tin luôn. Đó mới chỉ là ký hiệu thôi. Còn thông tin về dân số và diện tích nằm trong 2 phần 1/4 hình tròn
Bác nhập đủ rồi test thử lại xem sao
  • 0

#7 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 22 June 2007 - 05:32 PM

Ý tôi muốn nói ở đây là lisp trên chạy rất tốt với mọi block.

Nó chỉ hiệu chỉnh 1 thuộc tính đầu tiên trong block. Muốn hiệu chỉnh tất cả các thuộc tính trong block (không phải ai cũng muốn), cần phải thêm một chút mã lệnh.
  • 0

#8 vndesperados

vndesperados

    biết lệnh xref

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

Đã gửi 22 June 2007 - 05:43 PM

Đùa bác tý thôi, nếu bác giận thì xin lỗi nhé
Có bài tóan này nè:
Trong một bản vẽ có nhiều block
Bây giờ muốn thay đổi lại điểm chèn (tâm) của block mà không làm thay đổi vị trí của block
Các block có thể có nhiều góc xoay và scale khác nhau.
Giả thích rõ ra nhé
Ví dụ có 1 block có điểm chèn nằm lệch. Sau khi đã chèn rất nhiều block đó vào bản vẽ thì người ta mới phát sinh nhu cầu thay đổi lại điểm chèn (tâm) của block mà không làm thay đổi vị trí của block đó.
  • 0

#9 hugo75

hugo75

    biết vẽ polygon

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

Đã gửi 16 June 2011 - 05:55 PM

Lệnh XO của lisp dưới đây sẽ xoay góc nghiêng của Attribute Block về 0.


(defun c:XO( / ssdt sodt index tt entdt)
(setq ssdt (ssget)
sodt (sslength ssdt)
index 0
)
(repeat sodt
(setq entdt (ssname ssdt index)
index (1+ index)
entdt (entnext entdt)
tt (entget entdt)
tt (subst (cons 50 0.0) (assoc 50 tt) tt)
)
(entmod tt)
(entupd entdt)
)
(princ)
)


Sử dụng đặc hiệu trong trường hợp block ký hiệu trục nằm nghiêng.
Hình đã gửi

Nhờ bác Hoành hoặc bác nào biết sửa lại cho có thể nhập góc xoay vào được.Thanks.
  • 0

#10 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 17 June 2011 - 05:53 AM

Nhờ bác Hoành hoặc bác nào biết sửa lại cho có thể nhập góc xoay vào được.Thanks.

Sửa lại theo yêu cầu của bạn 1 tí

(defun c:XO( / ssdt sodt index tt entdt ang)
(setq ssdt (ssget '((0 . "INSERT") (66 . 1)))
sodt (sslength ssdt)
index 0
)
(or *ang* (setq *ang* 0.0))
(setq ang (getangle (strcat "\n Nhap goc < "
(rtos (/ (* 180 *ang*) pi) 2 2) " > :")))
(if ang (setq *ang* ang) (setq ang *ang*))
(repeat sodt
(setq entdt (ssname ssdt index)
index (1+ index))
(while (/= (cdr(assoc 0 (entget entdt))) "SEQEND")
(setq
entdt (entnext entdt)
tt (entget entdt)
tt (subst (cons 50 ang) (assoc 50 tt) tt)
)
(entmod tt)
(entupd entdt)
)
)
(princ)
)

  • 1

#11 hugo75

hugo75

    biết vẽ polygon

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

Đã gửi 17 June 2011 - 06:41 AM

Báo lỗi ; error: bad SSGET list value.Mong bác xem lại giúp.
  • 0

#12 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 17 June 2011 - 07:30 AM

Báo lỗi ; error: bad SSGET list value.Mong bác xem lại giúp.

Đã sửa lại code. Bạn download lại Lisp ở bài viết trên của Tue_NV
  • 0

#13 unikey1991

unikey1991

    biết zoom

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

Đã gửi 11 March 2014 - 05:57 PM

các bác cho em hỏi nhờ chút ạ

những Block có tên trùng nhau nhưng có góc quay khác nhau thì có cách nào xuất được tọa độ và những góc quay đó không ạ

Em cảm ơn ạ


  • 0

#14 Kieu Tan

Kieu Tan

    biết vẽ rectang

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

Đã gửi 30 September 2016 - 08:44 PM

Lệnh XO của lisp dưới đây sẽ xoay góc nghiêng của Attribute Block về 0.

(defun c:XO( / ssdt sodt index tt entdt)
(setq ssdt (ssget)
sodt (sslength ssdt)
index 0
)
(repeat sodt
(setq entdt (ssname ssdt index)
index (1+ index)
entdt (entnext entdt)
tt (entget entdt)
tt (subst (cons 50 0.0) (assoc 50 tt) tt)
)
(entmod tt)
(entupd entdt)
)
(princ)
)

Sử dụng đặc hiệu trong trường hợp block ký hiệu trục nằm nghiêng.
XoayAttr.gif

Sau khi sử dụng lệnh xo thì text trong att block bị lệch vị trí mọi người có biết tại sao không giúp mình với


  • 0

#15 Bee

Bee

    biết lệnh array

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

Đã gửi 30 September 2016 - 10:58 PM

Sau khi sử dụng lệnh xo thì text trong att block bị lệch vị trí mọi người có biết tại sao không giúp mình với

Thử lệnh :  torient trong express xem sao. ^_^


  • 0

#16 Kieu Tan

Kieu Tan

    biết vẽ rectang

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

Đã gửi 01 October 2016 - 05:51 AM

Thử lệnh :  torient trong express xem sao. ^_^

Mình cũng có dùng lệnh này rồi, nhưng không biết tại sao có lúc được lúc không ah! 


  • 0

#17 Bee

Bee

    biết lệnh array

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

Đã gửi 01 October 2016 - 09:32 AM

Mình cũng có dùng lệnh này rồi, nhưng không biết tại sao có lúc được lúc không ah! 

Vì Justification của att không phải Middle center và không trùng với tâm đường tròn. 


  • 0

#18 Kieu Tan

Kieu Tan

    biết vẽ rectang

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

Đã gửi 01 October 2016 - 10:23 AM

Vì Justification của att không phải Middle center và không trùng với tâm đường tròn.


Vay co cach nao lam cho no trung voi tam duong tron khong vay ban? Boi vi att block nay do nguoi khac tao truoc do roi.
  • 0

#19 Bee

Bee

    biết lệnh array

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

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

Vay co cach nao lam cho no trung voi tam duong tron khong vay ban? Boi vi att block nay do nguoi khac tao truoc do roi.

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

 

^_^


  • 0

#20 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

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

Nếu điểm insert của block trùng với tâm đường tròn thì có thể sửa bổ sung trong lisp.


  • 0