Đến nội dung


Hình ảnh

Backwards hàng loạt Attribute block ?


  • Please log in to reply
12 replies to this topic

#1 levanduy

levanduy

    biết lệnh offset

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

Đã gửi 26 June 2012 - 11:13 AM

Em vô tình dùng attribute block có text bị mirror.Sau đó em dùng lệnh ATTSYNC thì tất cả Attribute block có text bị đảo lộn không thể đọc được nữa.Bây giờ mà ngồi click đúp vào từng block và chọn backward thì chắc mất cả ngày.
Các bác có cách nào giúp em với.
  • 0
Only dead fish go with the stream!

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 26 June 2012 - 11:21 AM

Tôi nghĩ là có thể backward lại được. Bạn gởi bản vẽ lên để test xem.
  • 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.


#3 levanduy

levanduy

    biết lệnh offset

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

Đã gửi 26 June 2012 - 11:28 AM

Em gửi bác một phần của bản vẽ em mắc lỗi.Chờ tin của bác
  • 0
Only dead fish go with the stream!

#4 levanduy

levanduy

    biết lệnh offset

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

Đã gửi 26 June 2012 - 11:32 AM

Xin lỗi các bác lâu không sử dụng diễn đàn nên mắc lỗi thiếu file đính kèm.Em gửi lại
http://www.cadviet.c...mat_cat_san.dwg
  • 0
Only dead fish go with the stream!

#5 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 26 June 2012 - 02:23 PM

Lisp dưới đây (của Lee Mac) có chức năng Matchprop nhiều thông số của Attribute, bao gồm:
Backward ; Height ; Layer ; Linetype ; LinetypeScale ; Lineweight ; ObliqueAngle ; Rotation ; ScaleFactor ; StyleName ; Thickness ; UpsideDown.
Cách sử dụng cho trường hợp của bạn:
- Copy 1 block_att làm mẫu, sau đó mirror để att không còn đảo ngược => được Block_Att mẫu.
- Chạy lisp: chọn Block_Att mẫu => lần lượt chọn từng Bolck_att cần Backward => kết quả.

;;-------------------=={ Match Attribs }==--------------------;;
;; Prompts for selection of source attribute, then proceeds to match the listed properties for subsequently picked attributes.
;; Author: Lee Mac, Copyright © 2010 - www.lee-mac.com ;;
(defun c:MatchAttribs ( / properties source )
(vl-load-com)
;; List of Properties to Match, may be edited to suit
(setq properties
'(Backward
Height
Layer
Linetype
LinetypeScale
Lineweight
ObliqueAngle
Rotation
ScaleFactor
StyleName
Thickness
UpsideDown))
;;------------------------------------------------------------;;
(if (setq source
(LM:Selectif
(lambda ( x )
(eq "ATTRIB" (cdr (assoc 0 (entget x)))))
nentsel "\nSelect Source Attribute: "))
((lambda ( properties values / dest )
(while
(setq dest
(LM:Selectif
(lambda ( x )
(eq "ATTRIB" (cdr (assoc 0 (entget x)))))
nentsel "\nSelect Destination Attributes: "))
(setq dest (vlax-ename->vla-object dest))
(mapcar
(function
(lambda ( property value )
(vlax-put-property dest property value)))
properties values)))
properties
(progn (setq source (vlax-ename->vla-object source))
(mapcar
(function
(lambda ( property ) (vlax-get-property source property)))
properties))))
(princ))
;;---------------------=={ Select if }==----------------------;;
;; Continuous selection prompts until the predicate function foo is validated.
;; Author: Lee Mac, Copyright © 2010 - www.lee-mac.com ;;
;; Arguments: ;;
;; foo - optional predicate function taking ename argument ;;
;; fun - selection function to invoke ;;
;; str - prompt string ;;
;; Returns: selected entity ename if successful, else nil ;;
(defun LM:Selectif ( foo fun str / e )
(while
(progn (setq e (car (fun str)))
(cond
( (eq 'ENAME (type e))
(if (and foo (not (foo e)))
(princ "\n** Invalid Object Selected **"))))))
e)

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


#6 levanduy

levanduy

    biết lệnh offset

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

Đã gửi 26 June 2012 - 02:32 PM

Lisp thật tuyệt vời bác ah.Ngóng reply của bác cả sáng nay,cuối cùng đã được đền đáp xứng đáng.Bác ở Hà Nội ko ?Có dịp offline được chạm cốc với bác.
  • 0
Only dead fish go with the stream!

#7 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 26 June 2012 - 02:38 PM

Chạm cốc online thì được, chạm cốc offline thì xa vời vợi.
  • 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.


#8 levanduy

levanduy

    biết lệnh offset

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

Đã gửi 26 June 2012 - 02:39 PM

Thay vì pick từng block thì có thể chọn bằng cửa sổ hoặc Quick Select và Filter không bác ?Bác phát triển tiếp lisp trên được không ah ?Em hơi tham lam tí :)
  • 0
Only dead fish go with the stream!

#9 VThanhgtvt

VThanhgtvt

    biết vẽ circle

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

Đã gửi 26 June 2012 - 03:44 PM

Top rất hữu ích với em!!!
  • 0

#10 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 26 June 2012 - 06:35 PM

Thay vì pick từng block thì có thể chọn bằng cửa sổ hoặc Quick Select và Filter không bác ?Bác phát triển tiếp lisp trên được không ah ?Em hơi tham lam tí :)

Bạn sài thử :

(defun c:setAtt (/ ent elst val ss tag)
(if
(and
(setq ent (car (nentsel "\nSelect attribute: ")))
(setq elst (entget ent))
(= (cdr (assoc 0 elst)) "ATTRIB")
(setq pro (vlax-get-property (vlax-Ename->Vla-Object ent)'Backward))
(princ "\nSelect blocks : ")
(setq ss (ssget (list '(0 . "INSERT") (assoc 2 (entget (cdr (assoc 330 elst)))))) )
(setq tag (cdr (assoc 2 elst)))
(setq i -1) )
(while (setq e (ssname ss (setq i (1+ i))))
(setq obj (vlax-Ename->Vla-Object e))
(foreach att (vlax-invoke obj 'GetAttributes)
(if (= (vla-get-TagString att) tag)
(vlax-put-property att 'Backward pro) ) ) )
(princ "\nInvalid input") )
(princ))

  • 1

#11 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 27 June 2012 - 07:29 AM

Thay vì pick từng block thì có thể chọn bằng cửa sổ hoặc Quick Select và Filter không bác ?Bác phát triển tiếp lisp trên được không ah ?Em hơi tham lam tí :)

Ừ thì nhanh gọn lẹ.

(defun c:BackAtt (/ e ss i obj)
(if (setq i -1 ss (ssget (list '(0 . "INSERT") (cons 66 1))) )
(while (setq e (ssname ss (setq i (1+ i))))
(foreach att (vlax-invoke (vlax-Ename->Vla-Object e) 'GetAttributes)
(if (= (vlax-get-property att'Backward) :vlax-false)
(vlax-put-property att 'Backward :vlax-true) ) ) ) )
(princ))

  • 1

#12 levanduy

levanduy

    biết lệnh offset

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

Đã gửi 27 June 2012 - 10:04 AM

Ừ thì nhanh gọn lẹ.

Quá tuyệt bác ah.Không biết trên thế giới mạng có diễn đàn nào cầu được ước thấy như cadviet.com không ?
Các bác tu ở đỉnh núi nào mà nội công thâm hậu vậy ?Cho em theo với !!!
  • 0
Only dead fish go with the stream!

#13 VThanhgtvt

VThanhgtvt

    biết vẽ circle

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

Đã gửi 27 June 2012 - 04:40 PM

Ừ thì nhanh gọn lẹ

Toàn cao thủ không ah!!!
  • 0