Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
tranduyquang25111

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

Các bài được khuyến nghị

Bác nào có lisp chọn nhanh dim, layer, text về thành dim, layer, text hiện hành không, share em với. Em đã tìm với từ khóa chuyển dim bất kỳ về hiện hành nhưng không thấy. Mong các bác giúp hộ.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
ketxu    2.651

Bác nào có lisp chọn nhanh dim, layer, text về thành dim, layer, text hiện hành không, share em với. Em đã tìm với từ khóa chuyển dim bất kỳ về hiện hành nhưng không thấy. Mong các bác giúp hộ.

Không hiểu ý bạn. Chọn ... về thành ? Bạn nói rõ hơn ý tưởng đi :)

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Không hiểu ý bạn. Chọn ... về thành ? Bạn nói rõ hơn ý tưởng đi :)

Hì, lại gặp bạn Ket rồi. Ý mình là lisp chọn đối tượng dim hoặc layer, text bất kỳ. Và chuyển nó thành current. Ví dụ: lệnh doi, sẽ cho mình chọn 1 dim style, hoặc layer hoặc text style. Sau khi pick vào, thì nó lập tức chuyển thành dim style hoặc layer, text style hiện hành.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
ketxu    2.651

Hì, lại gặp bạn Ket rồi. Ý mình là lisp chọn đối tượng dim hoặc layer, text bất kỳ. Và chuyển nó thành current. Ví dụ: lệnh doi, sẽ cho mình chọn 1 dim style, hoặc layer hoặc text style. Sau khi pick vào, thì nó lập tức chuyển thành dim style hoặc layer, text style hiện hành.

Hoặc là bạn vẫn chưa trình bày rõ ý đồ, hoặc là mình kém quá, đọc n hok hiểu ^^

Bạn chọn đối tượng Dim,Text thì ok rồi, còn chọn layer là sao nhỉ ??

Mình nói lại ý tưởng của bạn thế này, bạn xem có phải không :

Chọn 1 đối tượng => Lấy Layer, Hoặc Dimstyle, Hoặc Text Style của đối tượng đó làm Layer/Dímtyle/Text Style hiện hành ?

 

 

P/S : mình ra công trường, bạn chịu khó chờ, các bác khác đọc được sẽ giúp bạn ngay đấy :wub:

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamngoctukts    708

Hì, lại gặp bạn Ket rồi. Ý mình là lisp chọn đối tượng dim hoặc layer, text bất kỳ. Và chuyển nó thành current. Ví dụ: lệnh doi, sẽ cho mình chọn 1 dim style, hoặc layer hoặc text style. Sau khi pick vào, thì nó lập tức chuyển thành dim style hoặc layer, text style hiện hành.

Bạn thử cái này xem

(defun c:CLA()(command "clayer" (cdr(assoc 8 (entget(car(entsel "\nChon doi tuong lay layer hien hanh:")))))))
(defun c:CDI()(command "-dimstyle" "r" ""))
(defun c:CTE()(command "textstyle" (cdr(assoc 7 (entget(car(entsel "\nChon doi tuong lay textstyle hien hanh:")))))))

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Hoặc là bạn vẫn chưa trình bày rõ ý đồ, hoặc là mình kém quá, đọc n hok hiểu ^^

Bạn chọn đối tượng Dim,Text thì ok rồi, còn chọn layer là sao nhỉ ??

Mình nói lại ý tưởng của bạn thế này, bạn xem có phải không :

Chọn 1 đối tượng => Lấy Layer, Hoặc Dimstyle, Hoặc Text Style của đối tượng đó làm Layer/Dímtyle/Text Style hiện hành ?

 

 

P/S : mình ra công trường, bạn chịu khó chờ, các bác khác đọc được sẽ giúp bạn ngay đấy :wub:

Đúng rồi, tại mình nói mơ hồ quá. Chính xác là như thế bạn Ket à. Bác hay pro nào viết giúp mình cái lisp đó được không. Thanks!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bạn thử cái này xem

(defun c:CLA()(command "clayer" (cdr(assoc 8 (entget(car(entsel "\nChon doi tuong lay layer hien hanh:")))))))

Bác viết để pick dim style hoặc text style được không? Ý tưởng như bài viết trên của mình. Thanks!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamngoctukts    708

Bác viết để pick dim style hoặc text style được không? Ý tưởng như bài viết trên của mình. Thanks!

Bạn down lại code ở trên

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamngoctukts    708

Cái text style hình như chưa được bác à. Em chọn mà nó không chuyển thành hiện hành. Hai cái dim và layer thì good rồi bác à.

Mình nhầm chút bạn down lại code trên mình đã sửa rồi.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
victor85    10

Các bạn có thể mở rộng thêm chọn nhanh đối tượng để lấy line type hiện hành nữa ko. Mình tìm trên diễn đàn mà ko thấy, hic!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Chiron    91

Hì, lại gặp bạn Ket rồi. Ý mình là lisp chọn đối tượng dim hoặc layer, text bất kỳ. Và chuyển nó thành current. Ví dụ: lệnh doi, sẽ cho mình chọn 1 dim style, hoặc layer hoặc text style. Sau khi pick vào, thì nó lập tức chuyển thành dim style hoặc layer, text style hiện hành.

Chiron không hiểu tại sao phải viết lisp mới? Nếu cần chuyển đối tượng qua layer hiện hành có thể dùng lệnh laycur, còn để chuyển qua layer của đối tượng được chọn thì có thể dùng lệnh laymcur hoặc dùng lệnh ma để copy thuộc tính của đối tượng mà?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
victor85    10

(setvar "celtype" (cdr (assoc 6 (entget (car (entsel))))))

 

(setvar "celtype" (cdr (assoc 6 (entget (car (entsel))))))

 

Cái này ketxu viết dùng ntn vậy?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tue_NV    3.841

Cái này ketxu viết dùng ntn vậy?

Bạn copy dòng này (setvar "celtype" (cdr (assoc 6 (entget (car (entsel))))))

và paste vào Command

Hoặc là viết thành code như vầy :

 

(defun c:Lty()

(setvar "celtype" (cdr (assoc 6 (entget (car (entsel))))))

)

 

Hề hề hề,bác Bình post bài nhanh hơn em mấy mili giây. :D

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Doan Van Ha    2.676

Để ý lỗi nếu Linetype là bylayer.

(setvar "celtype" (cdr (assoc 6 (entget (car (entsel))))))

Dùng cái này thì tránh được lỗi trên

(vlax-get-property (vlax-ename->vla-object (car (entsel))) 'Linetype)

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
ketxu    2.651

Cảm ơn bác ĐVH đã nhắc nhở ^^ :

=> (setvar "celtype" (cond ((cdr (assoc 6 (entget (car (entsel))))))("BYLAYER")))

hoặc

(setvar "celtype" (vlax-get-property (vlax-ename->vla-object (car (entsel))) 'Linetype) )

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
kloud7    0

Em copy lisp của bác vào thì một số lisp có sẵn của em (add cùng 1 lisp) bị lỗi, có bác nào biết tại sao ko. Hiện tượng này xảy ra với 1 số lisp khác nữa nhưng em vẫn chẳng biết khắc phục ntn :)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
kloud7    0

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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Doan Van Ha    2.676

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

  • Vote tăng 3

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
kloud7    0

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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
NTD    11

;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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
youme_215    0

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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay


×