Chuyển đến nội dung
Diễn đàn CADViet

vanlam6408

Thành viên
  • Số lượng nội dung

    36
  • Đã tham gia

  • Lần ghé thăm cuối

Cộng đồng

-2 (hơi kém)

About vanlam6408

  • Cấp bậc
    biết vẽ circle

Khách truy cập Tiểu sử gần đây

Khối khách truy cập gần đây đã bị vô hiệu và không được hiển thị cho người dùng khác.

  1. vanlam6408

    Lisp Quick Filter: Lọc nhanh theo một số thuộc tính thông dụng

    hôm nay mới vào diễn đàn test thử hàng mới của bác ạ!Lisp chuẩn rồi bác ạ!cảm ơn bác đã cho em và diễn đàn một lisp mới thật là hay ạ!
  2. vanlam6408

    Lisp Quick Filter: Lọc nhanh theo một số thuộc tính thông dụng

    vâng,mong là qf sẽ sớm được hoàn thiện nhất.hi
  3. vanlam6408

    Lisp Quick Filter: Lọc nhanh theo một số thuộc tính thông dụng

    à vâng,ra thế,em tưởng nó có thể phân biệt được các màu khác nhau cả trong trường hợp by layer thì tốt quá
  4. vanlam6408

    Lisp Quick Filter: Lọc nhanh theo một số thuộc tính thông dụng

    lisp hay nhưng chọn màu còn bị lỗi rồi bác ơi,em test thử thấy cùng một màu 256 mà màu trắng với màu đỏ nó đều chọn hết,cùng một mã màu xanh mà cái thì nó chọn cái nó lại không chọn,những cái khác chưa test hết ạ
  5. vanlam6408

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

    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 ợ
  6. vanlam6408

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

    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?
  7. vanlam6408

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

    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 ạ!
  8. vanlam6408

    Hỏi cách chuyển layer đường trò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 ạ!
  9. vanlam6408

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

    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 ạ!
  10. vanlam6408

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

    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 ạ!
  11. vanlam6408

    Hỏi cách chuyển layer đường trò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ì
  12. vanlam6408

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

    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 ạ!
  13. vanlam6408

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

    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ị ạ!
×