Đến nội dung


Hình ảnh
- - - - -

[Đã xong] Lisp chọn đối tượng thì các style của nó hiện hành


  • Please log in to reply
26 replies to this topic

#21 kloud7

kloud7

    biết zoom

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

Đã gửi 02 April 2012 - 06:11 PM

Có bác nào có ý tưởng thế này chưa, chon một đối tượng thì setting mọi thuộc tính của nó về current, bao gồm: Layer, Linetype, Color, Text style (nếu là text) và Dim style (nếu là DIM). Các cao thủ autolisp chỉ giáo :D
  • 0

#22 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 03 April 2012 - 11:08 AM

Có bác nào có ý tưởng thế này chưa, chon một đối tượng thì setting mọi thuộc tính của nó về current, bao gồm: Layer, Linetype, Color, Text style (nếu là text) và Dim style (nếu là DIM). Các cao thủ autolisp chỉ giáo :D


;Doan Van Ha - CADViet.com - Ngay 03/4/2012
;Muc dich: Set Curent theo doi tuong chon: Layer, Linetype, Colour, Textstyle (*text) or Dimstyle (dimension).
(defun C:HA()
(setq lst (entget (car (entsel "\nChon 1 doi tuong Text/Mtext/Dimension de Set Current: "))))
(setvar "CLAYER" (cdr (assoc 8 lst))) ;Layer
(setvar "CELTYPE" (cond ((cdr (assoc 6 lst))) ("BYLAYER"))) ;Linetype
(setvar "CECOLOR" (_GetColour lst)) ;Colour
(cond ;TextStyle or DimStyle
((wcmatch (cdr (assoc 0 lst)) "*TEXT") (setvar "TEXTSTYLE" (cdr (assoc 7 lst))))
((wcmatch (cdr (assoc 0 lst)) "DIMENSION") (command "DIMSTYLE" "r" (cdr (assoc 3 lst)))))
(princ))
;-----
(defun _GetColour ( e / c )
(if (setq c (cdr (assoc 62 e)))
(cond
((cdr (assoc c '((0 . "ByBlock") (1 . "Red") (2 . "Yellow") (3 . "Green") (4 . "Cyan") (5 . "Blue") (6 . "Magenta") (7 . "White")))))
((itoa c)))
"ByLayer"))

  • 3

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


#23 kloud7

kloud7

    biết zoom

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

Đã gửi 03 April 2012 - 11:46 AM


;Doan Van Ha - CADViet.com - Ngay 03/4/2012
;Muc dich: Set Curent theo doi tuong chon: Layer, Linetype, Colour, Textstyle (*text) or Dimstyle (dimension).
(defun C:HA()
(setq lst (entget (car (entsel "\nChon 1 doi tuong Text/Mtext/Dimension de Set Current: "))))
(setvar "CLAYER" (cdr (assoc 8 lst))) ;Layer
(setvar "CELTYPE" (cond ((cdr (assoc 6 lst))) ("BYLAYER"))) ;Linetype
(setvar "CECOLOR" (_GetColour lst)) ;Colour
(cond ;TextStyle or DimStyle
((wcmatch (cdr (assoc 0 lst)) "*TEXT") (setvar "TEXTSTYLE" (cdr (assoc 7 lst))))
((wcmatch (cdr (assoc 0 lst)) "DIMENSION") (command "DIMSTYLE" "r" (cdr (assoc 3 lst)))))
(princ))
;-----
(defun _GetColour ( e / c )
(if (setq c (cdr (assoc 62 e)))
(cond
((cdr (assoc c '((0 . "ByBlock") (1 . "Red") (2 . "Yellow") (3 . "Green") (4 . "Cyan") (5 . "Blue") (6 . "Magenta") (7 . "White")))))
((itoa c)))
"ByLayer"))


Thks bác, cái này mà bản vẽ nhiều dim nhiều linetype thì tiện phải biết cheer !!
  • 0

#24 NTD

NTD

    biết lệnh rotate

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

Đã gửi 01 August 2012 - 06:11 PM


;Doan Van Ha - CADViet.com - Ngay 03/4/2012
;Muc dich: Set Curent theo doi tuong chon: Layer, Linetype, Colour, Textstyle (*text) or Dimstyle (dimension).
(defun C:HA()
(setq lst (entget (car (entsel "\nChon 1 doi tuong Text/Mtext/Dimension de Set Current: "))))
(setvar "CLAYER" (cdr (assoc 8 lst))) ;Layer
(setvar "CELTYPE" (cond ((cdr (assoc 6 lst))) ("BYLAYER"))) ;Linetype
(setvar "CECOLOR" (_GetColour lst)) ;Colour
(cond ;TextStyle or DimStyle
((wcmatch (cdr (assoc 0 lst)) "*TEXT") (setvar "TEXTSTYLE" (cdr (assoc 7 lst))))
((wcmatch (cdr (assoc 0 lst)) "DIMENSION") (command "DIMSTYLE" "r" (cdr (assoc 3 lst)))))
(princ))
;-----
(defun _GetColour ( e / c )
(if (setq c (cdr (assoc 62 e)))
(cond
((cdr (assoc c '((0 . "ByBlock") (1 . "Red") (2 . "Yellow") (3 . "Green") (4 . "Cyan") (5 . "Blue") (6 . "Magenta") (7 . "White")))))
((itoa c)))
"ByLayer"))

Thanks bác , Lisp hay quá , bác thêm cho trường hợp Linetype Scale đc ko ? . Tức là Global scale factor trong Linetype Manager vẫn ko thay đổi nhưng những đối tượng vẽ ra sau khi dùng Lisp của bác sẽ có Linetype Scale theo đối tượng đc chọn . Cảm ơn bác lần nữa
  • 0

#25 youme_215

youme_215

    Chưa sử dụng CAD

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

Đã gửi 09 November 2015 - 09:24 AM

Thanks bác , Lisp hay quá , bác thêm cho trường hợp Linetype Scale đc ko ? . Tức là Global scale factor trong Linetype Manager vẫn ko thay đổi nhưng những đối tượng vẽ ra sau khi dùng Lisp của bác sẽ có Linetype Scale theo đối tượng đc chọn . Cảm ơn bác lần nữa

thật quá tuyệt vời ông mặt trời


  • 0

#26 dung_cf

dung_cf

    Chưa sử dụng CAD

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

Đã gửi 17 May 2016 - 01:40 PM

Nhờ anh sửa thêm lisp. Khi setcurent Dim thì set thêm cả các thông số của Dim được chọn nữa. Vì trong 1 số trường hợp chỉ cần dùng loại Dim. Khi đo tùy đối tượng có tỉ lệ khác nhau thì tùy chỉnh thông số DIM SCALE OVERALL theo tỉ lệ bản vẽ:

Ví dụ, Như hình vẽ : cùng 1 loại Dim nhưng Kiểu 2 được sửa thông số trong thanh Properties của Dim: DIM SCALE OVERALL :45 về 22.5, thì được như kiểu 2.

Nhưng khi dùng lisp set Dim, (cần set curent D100,kiểu 2). Thì Lisp chỉ set D100 (kiểu 1- gốc) làm Dim hiện hành không chọn được kiểu 2.

 

Nhờ anh bổ sung giúp tính năng trên.152245_1_3.png


  • 0

#27 jangboko

jangboko

    biết vẽ arc

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

Đã gửi 17 July 2016 - 08:44 AM

Nhờ anh sửa thêm lisp. Khi setcurent Dim thì set thêm cả các thông số của Dim được chọn nữa. Vì trong 1 số trường hợp chỉ cần dùng loại Dim. Khi đo tùy đối tượng có tỉ lệ khác nhau thì tùy chỉnh thông số DIM SCALE OVERALL theo tỉ lệ bản vẽ:

Ví dụ, Như hình vẽ : cùng 1 loại Dim nhưng Kiểu 2 được sửa thông số trong thanh Properties của Dim: DIM SCALE OVERALL :45 về 22.5, thì được như kiểu 2.

Nhưng khi dùng lisp set Dim, (cần set curent D100,kiểu 2). Thì Lisp chỉ set D100 (kiểu 1- gốc) làm Dim hiện hành không chọn được kiểu 2.

 

Nhờ anh bổ sung giúp tính năng trên.152245_1_3.png

 

mình cũng đang cần tìm 1 cái lips như bạn mô tả. Hôm nào trời đẹp anh Hà sửa hộ em cái lips như vậy nhé. Cảm ơn anh nhiều. Chúc anh và cộng đồng cadviet luôn mạnh khỏe.


  • 0