Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
vanlam6408

Hỏi cách chuyển layer đường tròn

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

Em chào mọi người ạ!Em muốn chuyển layer của một đường tròn (ở layer1) đã chọn được trong 2 trường hợp:

-Th1: chuyển sang layer 2 với các thông (màu sắc,đường nét,chiều rộng...) đều về by layer của layer 2

-Th2: chuyển sang layer 2 với các thông (màu sắc,đường nét,chiều rộng...) đều về dạng hiện hành của layer 2 khi layer 2 đang ở hiện hành.

thì trong cả hai trường hợp em có đặt dòng lệnh (vla-put-layer circle (getvar "clayer")) (giả sử circle là đối tượng đường tròn đã chọ được trước đó) nhưng chỉ chuyển được layer 1 sang layer 2 còn các thông số về màu sắc ,đường nét,chiều rộng ...thì không chuyển được.

Mong Các anh chị có thể chỉ cho em trong mỗi trường hợp trên muốn chuyển được layer trong mỗi trường hợp thì dòng lệnh nên như thế nào  ạ.Cảm ơn các anh chị ạ!

truong hop 1.png

truong hop 2.png

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 chuyển layer thì nó chuyển layer là đúng rồi. Còn chuyển các thứ khác thì phải dùng lệnh tương ứng. Như vla-put-color/linetype/lineweight để set thêm.

Mình thường sài entmod để chuyển 1 lần tất cả thông số thì khoẻ hơn.

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

Dùng các hàm:

vla-get-Color , vla-put-Color
vla-get-Linetype , vla-put-Linetype
vla-get-LineWeight , vla-put-LineWeight

Biến hệ thống tương ứng:

CECOLOR , CELTYPE , CELWEIGHT

  • Like 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
1 giờ trước, ngokiet đã nói:

Bạn chuyển layer thì nó chuyển layer là đúng rồi. Còn chuyển các thứ khác thì phải dùng lệnh tương ứng. Như vla-put-color/linetype/lineweight để set thêm.

Mình thường sài entmod để chuyển 1 lần tất cả thông số thì khoẻ hơn.

 

1 giờ trước, ndtnv đã nói:

Dùng các hàm:

vla-get-Color , vla-put-Color
vla-get-Linetype , vla-put-Linetype
vla-get-LineWeight , vla-put-LineWeight

Biến hệ thống tương ứng:

CECOLOR , CELTYPE , CELWEIGHT

cảm ơn hai bác đã quan tâm ạ!sau khi có sự tư vấn của 2 bác,em tìm hiểu thêm về các hàm này nhưng em mới tập tành code nên vẫn không ra và chạy bị lỗi ạ.

em đã thử mò mẫm cho đoạn này vào

(mapcar '(lambda (x) (vla-put-layer x (getvar "clayer")) (vla-put-Color x (getvar "CECOLOR")) (vla-put-Linetype x (getvar "CELTYPE")) (vla-put-LineWeight x (getvar "CELWEIGHT")) ) entlst1);(mapcar '(lambda (x)  (vla-put-Color x (vla-get-Color (getvar "CECOLOR")))  ) entlst1) ..... nhưng nó sai hết.

trước em có thử cho câu lênh này vào : (command "change" "L" "" "p" "LA" (getvar "clayer") "c" "bylayer" "LT" "bylayer" "LW" "bylayer" "" "") nó chạy được nhưng nó chạy rất chậm ,sau đó nếu làm sai mà muốn undo lại thì nó lướt qua từng đường tròn một và phải rất lâu mới undo hết,hơn nữa chỉ viết được cho trường hợp 1 là đưa về by layer còn trường hợp 2 thì không viết được.Các bác có thể viết mẫu giup em cái code của lisp này được không ạ,chứ em cũng làm hết khả năng rồi nhưng hiểu biết còn quá ít nên khả năng là không viết nổi bằng các hàm này ạ.Em cảm ơn các bác trên diễn đàn ạ!

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 nên nghiên cứu các lệnh và biến 1 chút mới xử lý được. Xem khi biến CECOLOR , CELTYPE , CELWEIGHT khi ByLayer, ByBlock là có giá trị như thế nào?

So sánh với các hàm vla thì giá trị tương ứng là bao nhiêu vì có thể khác nhau. Mình ko trên máy nên ko test được. Mấy hàm vla mình ít sài nên ko nhớ rõ lắm.

không chừng bác dùng hàm vẽ lại circle đó rồi xoá cái cũ đi cũng dễ hơn. :-)

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
1 giờ} trướ}c, ngokiet đã nói:

Bạn nên nghiên cứu các lệnh và biến 1 chút mới xử lý được. Xem khi biến CECOLOR , CELTYPE , CELWEIGHT khi ByLayer, ByBlock là có giá trị như thế nào?

So sánh với các hàm vla thì giá trị tương ứng là bao nhiêu vì có thể khác nhau. Mình ko trên máy nên ko test được. Mấy hàm vla mình ít sài nên ko nhớ rõ lắm.

không chừng bác dùng hàm vẽ lại circle đó rồi xoá cái cũ đi cũng dễ hơn. :-)

dạ vâng,vì ngại làm phiền các bác nên em đã tìm hiểu kĩ lắm rồi bác ạ.Nhưng kiến thức về lisp của em còn quá ít nên không làm nổi nữa bác ạ.Với mấy cái hàm bình thường em cũng còn kém,sang đến mấy cái hàm vla- lại càng mù tịt,trên mạng em thấy ít nói đến,có nói đến lại thây chủ yếu bằng tiếng anh,em mò mẫm hết khả năng mình có thể  nghĩ ra nhưng cũng không ăn thua.Không nghĩ được ra cách gì mới ,em mới lại phải nhờ đến các bác viết giúp chứ trước đó em đã mất 2-3 ngày ngồi tự tìm cách rồi,sau có tư vấn của 2 bác lại thêm một buổi trưa nữa nhưng cũng chẳng ra,mà cũng hết khả năng em có thể thử rồi ạ.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
4 giờ trước, vanlam6408 đã nói:

cảm ơn hai bác đã quan tâm ạ!sau khi có sự tư vấn của 2 bác,em tìm hiểu thêm về các hàm này nhưng em mới tập tành code nên vẫn không ra và chạy bị lỗi ạ.

em đã thử mò mẫm cho đoạn này vào

(mapcar '(lambda (x) (vla-put-layer x (getvar "clayer")) (vla-put-Color x (getvar "CECOLOR")) (vla-put-Linetype x (getvar "CELTYPE")) (vla-put-LineWeight x (getvar "CELWEIGHT")) ) entlst1)

;(mapcar '(lambda (x)  (vla-put-Color x (vla-get-Color (getvar "CECOLOR")))  ) entlst1) ..... nhưng nó sai hết.

trước em có thử cho câu lênh này vào : (command "change" "L" "" "p" "LA" (getvar "clayer") "c" "bylayer" "LT" "bylayer" "LW" "bylayer" "" "") nó chạy được nhưng nó chạy rất chậm ,sau đó nếu làm sai mà muốn undo lại thì nó lướt qua từng đường tròn một và phải rất lâu mới undo hết,hơn nữa chỉ viết được cho trường hợp 1 là đưa về by layer còn trường hợp 2 thì không viết được.Các bác có thể viết mẫu giup em cái code của lisp này được không ạ,chứ em cũng làm hết khả năng rồi nhưng hiểu biết còn quá ít nên khả năng là không viết nổi bằng các hàm này ạ.Em cảm ơn các bác trên diễn đàn ạ!

Trong đoạn màu đỏ viết đúng, nhưng bạn cần cho mọi người xem lý lịch của đồng chí này: entlst1

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
51 phút trước, NTHAHT đã nói:

Trong đoạn màu đỏ viết đúng, nhưng bạn cần cho mọi người xem lý lịch của đồng chí này: entlst1

Mình nghĩ nó sai ở đây (vla-put-Color x (getvar "CECOLOR")) vì khi Cecolor = Bylayer hay byblock sẽ bị lỗi.

Vì vậy cần làm thêm biên cc (thêm dòng này trước lệnh mapcar)

(setq cc (if (eq (setq cc (getvar "cecolor")) "BYLAYER") 256 (if (eq cc "BYBLOCK" ) 0 (atoi cc))))

và sửa thành (vla-put-Color x cc)

 

Còn làm thử theo entmod

(setq ll (list (cons 8 (getvar 'clayer))
		 (cons 6 (getvar 'celtype))
		 (cons 62 (if (eq (setq ll (getvar "cecolor")) "BYLAYER") 256 (if (eq ll "BYBLOCK" ) 0 (atoi ll))))
		 (cons 370 (getvar 'celweight))))
  (mapcar '(lambda(x) (entmod (cons (cons -1 x) ll))) (acet-ss-to-list (ssget '((0 . "CIRCLE")))))

 

 

 

 

 

 

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
1 giờ} trướ}c, ngokiet đã nói:

Mình nghĩ nó sai ở đây (vla-put-Color x (getvar "CECOLOR")) vì khi Cecolor = Bylayer hay byblock sẽ bị lỗi.

Vì vậy cần làm thêm biên cc (thêm dòng này trước lệnh mapcar)

(setq cc (if (eq (setq cc (getvar "cecolor")) "BYLAYER") 256 (if (eq cc "BYBLOCK" ) 0 (atoi cc))))

và sửa thành (vla-put-Color x cc)

 

Còn làm thử theo entmod

  • cadvietlisp.lsp
    lisp help
  •  

(setq ll (list (cons 8 (getvar 'clayer))
		 (cons 6 (getvar 'celtype))
		 (cons 62 (if (eq (setq ll (getvar "cecolor")) "BYLAYER") 256 (if (eq ll "BYBLOCK" ) 0 (atoi ll))))
		 (cons 370 (getvar 'celweight))))
  (mapcar '(lambda(x) (entmod (cons (cons -1 x) ll))) (acet-ss-to-list (ssget '((0 . "CIRCLE")))))

 

 

 

 

 

 

 

1 giờ trước, NTHAHT đã nói:

Trong đoạn màu đỏ viết đúng, nhưng bạn cần cho mọi người xem lý lịch của đồng chí này: entlst1

hìhì,cái đồng chí entlst1 nói nôm na là từng đông chí đường tròn trong tập hợp quét chọn các đồng chí ấy bác ngokiet và bác NTHAHT ạ.Em lấy nó bằng cách như thế này:

(setq ss (ssget '((0 . "CIRCLE"))))

(setq objlst (mapcar 'vlax-ename->vla-object(vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))

(foreach entlst1 objlst

 

(setq cc (if (eq (setq cc (getvar "cecolor")) "BYLAYER") 256 (if (eq cc "BYBLOCK" ) 0 (atoi cc))))

 

(mapcar '(lambda (x) (vla-put-layer x cc)) entlst1)

)

bác ngokiet đã bắt đúng bệnh là máy báo lỗi "by layer" tuy nhiên em cho dòng lênh (setq cc (if (eq (setq cc (getvar "cecolor")) "BYLAYER") 256 (if (eq cc "BYBLOCK" ) 0 (atoi cc)))) vào trước vẫn không khắc phục được bác ạ,máy báo lỗi " error: Automation Error. Key not found".sau đó lại bám theo dòng lệnh dùng entmod bác cho phía dưới cũng vẫn không được ạ,lần này máy lại báo lỗi  "error: bad DXF group: (-1 . #<VLA-OBJECT IAcadLWPolyline 2342be54>)"

Vơi lại,dùng hàm entmode như bác em thấy chắc là nhanh và gọn,tuy nhiên có 2 vấn đề có thể xảy ra:

thứ nhất:nếu sau này mình muốn mở rộng thêm đối tượng không phải là đường tròn mà đường khác vào trong tập hợp chọn đó nữa thì có được không?

thứ hai:phía trên em dùng hàm kiểu vla,phía dưoi lại dùng entmode với các hàm khác để tác động vào mấy cái entlst1 được lấy bằng hàm vla thì có tương thích được không?có cách nào vẫn có thể tương thích không?

nếu mà không có cách nào cho nó tương thich và đơn giản hơn thì em vẫn mong các bác có thể sửa cho em code theo hướng dùng mấy cái hàm 

vla-get-Color , vla-put-Color
vla-get-Linetype , vla-put-Linetype
vla-get-LineWeight , vla-put-LineWeight

Biến hệ thống tương ứng:

CECOLOR , CELTYPE , CELWEIGHT

như bác ndtnv đã gợi ý ,vì như thế cho nó đồng bộ ạ.

về ngôn ngữ lisp em chưa thạo lắm chỉ cảm thấy thế nào,hình dung thế nào  thì viết thế,sai chỗ nào trong diễn đạt mong các bác bỏ qua và chỉ bảo thêm cho em ạ.Em chân thành cảm ơn các bác ạ!

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ác @ngokiet, nói đúng rồi, mình không để ý cái color...

Làm cho bạn cái VL...

(mapcar '(lambda (x)
             (mapcar '(lambda (p v) (vlax-put x p v))
                     '(layer Color Linetype LineWeight)
                     (list (getvar "clayer")
                           (cond ((eq (setq cc (getvar "CECOLOR")) "BYLAYER") 256)
                                 ((eq cc "BYBLOCK") 0)
                                 (cc))
                           (getvar "CELTYPE")
                           (getvar "CELWEIGHT"))))
          (mapcar 'vlax-ename->vla-object
                  (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget))))))

  • Like 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
4 phút trước, NTHAHT đã nói:

Bác @ngokiet, nói đúng rồi, mình không để ý cái color...

Làm cho bạn cái VL...

(mapcar '(lambda (x)
             (mapcar '(lambda (p v) (vlax-put x p v))
                     '(layer Color Linetype LineWeight)
                     (list (getvar "clayer")
                           (cond ((eq (setq cc (getvar "CECOLOR")) "BYLAYER") 256)
                                 ((eq cc "BYBLOCK") 0)
                                 (cc))
                           (getvar "CELTYPE")
                           (getvar "CELWEIGHT"))))
          (mapcar 'vlax-ename->vla-object
                  (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget))))))

(getvar "CECOLOR") của mình nó cho ra kết quả string nên cái (cc) sau đổi thành (atoi cc)

 

 

 @vanlam6408 

Cái cc chỉ cho vla-put-color thôi.

Bác sửa đoạn (vla-put-Color x (getvar "CECOLOR")) thành (vla-put-Color x cc) các thứ khác giữ nguyên.

 

Còn lỗi  "error: bad DXF group: (-1 . #<VLA-OBJECT IAcadLWPolyline 2342be54>)" là do bác dùng list là object chứ không phải là ename.

Còn không có acet thì lisp trên của mình sửa lại vậy.

(setq ll (list (cons 8 (getvar 'clayer)) (cons 6 (getvar 'celtype)) (cons 62 (if (eq (setq ll (getvar "cecolor")) "BYLAYER") 256 (if (eq ll "BYBLOCK" ) 0 (atoi ll)))) (cons 370 (getvar 'celweight)))) (mapcar '(lambda(x) (entmod (cons (cons -1 x) ll))) (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget)))))

 

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

Bác @ngokiet, của mình cũng ra string, dùng vẫn thấy bình thường...

Viết lại cho đầy đủ hơn:

(defun c:cpv  (/ cc ss)
  (if (setq ss (ssget))
    (mapcar '(lambda (x)
               (mapcar '(lambda (p v) (vlax-put x p v))
                       '(Color layer Linetype LineWeight)
                       (cons (cond ((eq (setq cc (getvar 'CECOLOR)) "BYLAYER") 256)
                                   ((eq cc "BYBLOCK") 0)
                                   (cc))
                             (mapcar 'getvar '(CLAYER CELTYPE CELWEIGHT)))))
            (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))))
  (princ))

Bác test thử xem sao!

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

À mình mới thử. Thấy đúng. string hay int đều được.

 

@vanlam6408 Hình như bác ít test bằng Console trong vlide.

Bác vào vlide nhấn F6. Cửa sổ dòng lệnh hiện ra thì bác có thể test thoải mái mà.

Ví dụ như đánh 

(vla-put-color (vlax-ename->vla-object(car(entsel))) "2")

Thì nó sẽ cho chọn object và set color là 2.

Hay nhấn (getvar "CECOLOR") là nó trả lới giá trị của cecolor.

Vì vậy bạn có thể test nhanh lệnh nào sai để sửa lại cho đúng. Lệnh gộp cũng có thể tách ra test thử.

Hy vọng bác có thể nhanh viết lisp được riêng cho mình.

Mình không thích vla nhiều mà thích lisp thường hơn. Nó nhanh hơn dùng vla vì khi sài vla nó sửa từng lần 1 trong bản vẽ. Còn entmod thì nó sửa 1 lần nên nhanh hơn. Nhất là khi vẽ mấy bãng table. Vla thích hợp khi đọc dữ liệu từ các app khác nhiều hơn.

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
1 giờ trước, NTHAHT đã nói:

Bác @ngokiet, của mình cũng ra string, dùng vẫn thấy bình thường...

Viết lại cho đầy đủ hơn:

(defun c:cpv  (/ cc ss)
  (if (setq ss (ssget))
    (mapcar '(lambda (x)
               (mapcar '(lambda (p v) (vlax-put x p v))
                       '(Color layer Linetype LineWeight)
                       (cons (cond ((eq (setq cc (getvar 'CECOLOR)) "BYLAYER") 256)
                                   ((eq cc "BYBLOCK") 0)
                                   (cc))
                             (mapcar 'getvar '(CLAYER CELTYPE CELWEIGHT)))))
            (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))))
  (princ))

Bác test thử xem sao!

cảm ơn bác nhiều ạ!về các thuộc tính color,linetype,lineweight thì tuyệt vời rồi bác ạ.Tuy thế,bác có thể giúp em thêm một tí cho luôn cái linetype scale cho nó cùng bằng linetype hiện hành như trong bảng property nữa không hả bác.Cái này em không lường được từ đầu,tưởng đưa nó về cùng một linetype thì khoảng cách giữa các nét đứt cũng giống nhau,nhưng khi test file của bác nó thấy mới thấy rõ mỗi đồng chí đường tròn có một khoảng cách nét đứt khác nhau và cũng không bằng linetype hiện hành đang dùng để vẽ,như thế ,về sau lại phải đi tìm loc lại các đường này để điều chỉnh lại lintype scale,như là đi matchop lại từ đầu.Thì bác có thể điều chỉnh giúp em thêm chỗ này một tí không ạ?em cảm ơn bác nhiều ạ!

cai thien.png

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
1 giờ} trướ}c, ngokiet đã nói:

À mình mới thử. Thấy đúng. string hay int đều được.

 

@vanlam6408 Hình như bác ít test bằng Console trong vlide.

Bác vào vlide nhấn F6. Cửa sổ dòng lệnh hiện ra thì bác có thể test thoải mái mà.

Ví dụ như đánh 

(vla-put-color (vlax-ename->vla-object(car(entsel))) "2")

Thì nó sẽ cho chọn object và set color là 2.

Hay nhấn (getvar "CECOLOR") là nó trả lới giá trị của cecolor.

Vì vậy bạn có thể test nhanh lệnh nào sai để sửa lại cho đúng. Lệnh gộp cũng có thể tách ra test thử.

Hy vọng bác có thể nhanh viết lisp được riêng cho mình.

Mình không thích vla nhiều mà thích lisp thường hơn. Nó nhanh hơn dùng vla vì khi sài vla nó sửa từng lần 1 trong bản vẽ. Còn entmod thì nó sửa 1 lần nên nhanh hơn. Nhất là khi vẽ mấy bãng table. Vla thích hợp khi đọc dữ liệu từ các app khác nhiều hơn.

dạ em cảm ơn bác đã chỉ cho em cách test thử lisp ạ!em mới tập tành lisp nên mấy cái này quả thật em không biết ạ,em thường xem trên file text,rồi add thẳng lisp vào cad để thử cho chạy luôn.

em cũng thích lisp thường,nhưng trong trường hợp này,theo cách viết của bác NTHAHT,cá nhân em thấy bác ấy dùng hàm vla như bác ấy viết làm lisp chạy nhanh và tổng quát hơn cả yêu cầu từ đầu của em,và nhanh hơn cách dùng hàm comman của em rất là nhiều.Hàm entmode làm một lần nên nhanh,gọn nhưng  theo em được biết cần mã dxf,mà mỗi lạo đỗi tượng thì thứ tự các mã này  em nghĩ có lẽ chúng khác nhau,như thế,nếu đây không là đường tròn,mà là đường khác muốn gộp vào trong một lisp thì lại phải chia trường hợp nhiều,nếu như em mà viết chắc code sẽ càng dài lắm.Một lần nữa em cảm ơn các bác nhiều ạ! 

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
8 giờ trước, vanlam6408 đã nói:

cảm ơn bác nhiều ạ!về các thuộc tính color,linetype,lineweight thì tuyệt vời rồi bác ạ.Tuy thế,bác có thể giúp em thêm một tí cho luôn cái linetype scale cho nó cùng bằng linetype hiện hành như trong bảng property nữa không hả bác.Cái này em không lường được từ đầu,tưởng đưa nó về cùng một linetype thì khoảng cách giữa các nét đứt cũng giống nhau,nhưng khi test file của bác nó thấy mới thấy rõ mỗi đồng chí đường tròn có một khoảng cách nét đứt khác nhau và cũng không bằng linetype hiện hành đang dùng để vẽ,như thế ,về sau lại phải đi tìm loc lại các đường này để điều chỉnh lại lintype scale,như là đi matchop lại từ đầu.Thì bác có thể điều chỉnh giúp em thêm chỗ này một tí không ạ?em cảm ơn bác nhiều ạ!

Mình thêm LinetypeScale:

(defun c:cpv  (/ cc ss)
  (if (setq ss (ssget))
    (mapcar '(lambda (x)
               (mapcar '(lambda (p v) (vlax-put x p v))
                       '(Color Layer Linetype LineWeight LinetypeScale)
                       (cons (cond ((eq (setq cc (getvar 'CECOLOR)) "BYLAYER") 256)
                                   ((eq cc "BYBLOCK") 0)
                                   (cc))
                             (mapcar 'getvar '(CLAYER CELTYPE CELWEIGHT CELTSCALE)))))
            (mapcar 'vlax-ename->vla-object
                    (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))))
  (princ))

  • Like 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
2 giờ trước, NTHAHT đã nói:

Mình thêm LinetypeScale:

(defun c:cpv  (/ cc ss)
  (if (setq ss (ssget))
    (mapcar '(lambda (x)
               (mapcar '(lambda (p v) (vlax-put x p v))
                       '(Color Layer Linetype LineWeight LinetypeScale)
                       (cons (cond ((eq (setq cc (getvar 'CECOLOR)) "BYLAYER") 256)
                                   ((eq cc "BYBLOCK") 0)
                                   (cc))
                             (mapcar 'getvar '(CLAYER CELTYPE CELWEIGHT CELTSCALE)))))
            (mapcar 'vlax-ename->vla-object
                    (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))))
  (princ))

Lần này thì tuyệt vời 100% rồi bác ạ!Em cảm ơn bác nhiều ạ!Chúc bác mọi điều tốt là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
4 giờ trước, Doan Van Ha đã nói:

Ngoài color còn vài thứ bylayer và byblock nữa mà?

em không hiểu ý bác lắm ạ.Em thấy bylayer với byblock cũng được giải quyết rùi mà bác?

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
4 phút trước, vanlam6408 đã nói:

em không hiểu ý bác lắm ạ.Em thấy bylayer với byblock cũng được giải quyết rùi mà bác?

Đó mới chỉ giải quyết color. Còn Linetype và Lineweight cũng có bylayer và byblock.

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
11 phút trước, Doan Van Ha đã nói:

Đó mới chỉ giải quyết color. Còn Linetype và Lineweight cũng có bylayer và byblock.

hi,chắc là em chưa hiểu rõ ý bác thật rùi.Em test lại vẫn thấy đúng bác ợ

 

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
Đăng nhập để thực hiện theo  

×