Đến nội dung


Hình ảnh
* * * - - 8 Bình chọn

Viết lisp theo yêu cầu [phần 2]


  • Chủ đề bị khóa Chủ đề bị khóa
3783 replies to this topic

#421 dkkx3a

dkkx3a

    biết lệnh trim

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

Đã gửi 23 November 2009 - 04:40 PM

Chào dkkx3a, lâu lâu Thiep cũng tranh thủ lúc rảnh rỗi viết 1 cái lisp giúp anh em cho vui.
Lisp này không kén đường mặt cắt của bạn là gì, có thể là SPLINE, LWPOLYLINE, POLYLINE, ARC, thậm chí là các đường cong kín ... gọi chung CURVẸ. Lisp yêu cầu user pick CURVẸ đường mặt cắt thứ I, pick CURVẸ đường mặt cắt thứ II, đưa vào tỷ lệ vị trí mặt cắt cần nội suy: giả sử khoảng cách giữa 2 mặt cắt I và II là 200, khoảng cách giữa mặt cắt I và mặt cắt nội suy là 25, thì tỷ lệ vị trí mặt cắt cần nội suy là 25/200 = 12.5 Cái này bạn phải chia tỷ lệ trước bên ngoài.
Lisp này cũng có thể dùng để nội suy 1 đường contour phụ từ 2 đường contour chính, tuy nhiên 2 đường contour chính phải có 2 node đầu (STARTPOINT) phải gần nhau nhất.


Cảm ơn THIEP đã giúp đỡ vấn đề của mình, bây giờ thì vấn đề đường nét của BacThanhBinh được mở rộng thêm. Vấn đề cái LSP của Bác lại nảy sinh vấn đề sau khi sử dụng. Ý là khi nội suy xong thì phải hoàn thiện trắc ngang. Cái nầy em có làm vài cái LSP "cỏn con" để tạo đường gióng, viết cao độ, khoảng cách mia (tại các vị trí gấp khúc - nếu bác là dân giao thông thì dễ hiểu). Nhưng mà khi dùng xong thì đường nội suy có rất nhiều điểm phát sinh, em dùng LSP cũng như dùng "mắt" để phân biết những điểm nào thực sự thì quả là rất "đau mắt". Vì thế nếu bác vẫn còn "lâu lâu Thiep cũng tranh thủ lúc rảnh rỗi viết 1 cái lisp giúp anh em cho vui" thì càng vui thêm nếu bác chỉnh lại LSP sao cho số đỉnh lớn nhất là tổng hợp số đỉnh của hai mặt cắt cần nội suy (loại đi các điểm có khoảng cách tương đối so với các trục TN như em đã nêu trong câu hỏi.
Em cảm ơn Bác nhiều. Mong Bác có nhiều lúc "rãnh rỗi" ngồi viết các LSP tiện ích cho anh em còn yếu nhờ và học hỏi thêm (thế BÁc càng vui.....hihihi ).
  • 0
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#422 ut_cung

ut_cung

    biết vẽ line

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

Đã gửi 23 November 2009 - 07:21 PM

Chào các Bác!
Mình là thành viên mới của diễn đàn, mình thấy diễn đàn này thật là bổ ích, giúp đỡ anh e rất nhiều, Có rất nhiều cái để mót nhưng mà rác cũng không phải là ít do vậy quá trình mót của những người mới vào như mình không được triệt để lắm. Mình xin mạo mụi có ý kiến thế này mong các bác xem xét nếu được thì làm còn nếu sai thi bỏ qua cho.
Cách thứ nhất: Sau khi người yêu cầu đã nhận được cái lisp mong muốn thì mình xoá tấc cả các bài trước đi, chỉ để lại bài có chứa lisp cuối cùng.
Cách hai: Tạo ra một cái thư viện lisp rồi lấy tấc cả sản phẩm tạo được bỏ vào đó và đặt một cái tên sao cho dể hiểu nhất, cũng có thể tạo ra nhiều nhóm lisp khác nhau như: nhóm lisp liên quan đến block, nhóm lisp liên quan đến coppy, .......
Mình nghĩ như thế người đến sau và cả những người lâu năm muốn tìm lại một cái mình cần thì cũng dễ dàng hơn.
Chúc anh e diễn đàn sức khoẻ, một tuần làm việc hiệu quả.
Chúc diễn đàn ngày càng phát triển!
Thank!
  • 1

#423 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 24 November 2009 - 07:30 AM

Chào các Bác!
Mình là thành viên mới của diễn đàn, mình thấy diễn đàn này thật là bổ ích, giúp đỡ anh e rất nhiều, Có rất nhiều cái để mót nhưng mà rác cũng không phải là ít do vậy quá trình mót của những người mới vào như mình không được triệt để lắm. Mình xin mạo mụi có ý kiến thế này mong các bác xem xét nếu được thì làm còn nếu sai thi bỏ qua cho.
Cách thứ nhất: Sau khi người yêu cầu đã nhận được cái lisp mong muốn thì mình xoá tấc cả các bài trước đi, chỉ để lại bài có chứa lisp cuối cùng.
Cách hai: Tạo ra một cái thư viện lisp rồi lấy tấc cả sản phẩm tạo được bỏ vào đó và đặt một cái tên sao cho dể hiểu nhất, cũng có thể tạo ra nhiều nhóm lisp khác nhau như: nhóm lisp liên quan đến block, nhóm lisp liên quan đến coppy, .......
Mình nghĩ như thế người đến sau và cả những người lâu năm muốn tìm lại một cái mình cần thì cũng dễ dàng hơn.
Chúc anh e diễn đàn sức khoẻ, một tuần làm việc hiệu quả.
Chúc diễn đàn ngày càng phát triển!
Thank!

Một ý tuởng hay!
Nhưng việc phân lọai là công việc không đơn giản ?! Xóa cái nào, để cái nào cũng phải cân nhắc !
Và ai có thời gian xung phong làm việc này ?
  • 0

#424 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 24 November 2009 - 09:53 AM

Cảm ơn THIEP đã giúp đỡ vấn đề của mình, bây giờ thì vấn đề đường nét của BacThanhBinh được mở rộng thêm. Vấn đề cái LSP của Bác lại nảy sinh vấn đề sau khi sử dụng. Ý là khi nội suy xong thì phải hoàn thiện trắc ngang. Cái nầy em có làm vài cái LSP "cỏn con" để tạo đường gióng, viết cao độ, khoảng cách mia (tại các vị trí gấp khúc - nếu bác là dân giao thông thì dễ hiểu). Nhưng mà khi dùng xong thì đường nội suy có rất nhiều điểm phát sinh, em dùng LSP cũng như dùng "mắt" để phân biết những điểm nào thực sự thì quả là rất "đau mắt". Vì thế nếu bác vẫn còn "lâu lâu Thiep cũng tranh thủ lúc rảnh rỗi viết 1 cái lisp giúp anh em cho vui" thì càng vui thêm nếu bác chỉnh lại LSP sao cho số đỉnh lớn nhất là tổng hợp số đỉnh của hai mặt cắt cần nội suy (loại đi các điểm có khoảng cách tương đối so với các trục TN như em đã nêu trong câu hỏi.
Em cảm ơn Bác nhiều. Mong Bác có nhiều lúc "rãnh rỗi" ngồi viết các LSP tiện ích cho anh em còn yếu nhờ và học hỏi thêm (thế BÁc càng vui.....hihihi ).

Chào bạn dkkx3a,
Bác Thiep viết cái lisp nội suy này dựa trên nguyên tắc nội suy khác với cái nguyên tắc nội suy của bạn. Do mình không có chuyên môn này nên chưa hiểu rõ cái nào thì tốt hơn so với yêu cầu của bạn.
Mình xin giải thích một vài điều trong lisp này để bạn tiện việc chỉnh sửa nếu thấy cần thiết cho bạn bạn nhé. Nhân đây mình cũng xin phép bác Thiep làm cái việc này vì đây cũng là cái cách mà mình đi mót của các bác, cố gắng để hiểu từng cái các bác cho và vận dụng để có lợi cho công việc của mình. Nếu có gì sai mong các bác cứ thẳng thắn chỉ bảo thêm.
1/- Để có điểm nội suy, bác Thiep đã sử dụng hai điểm gốc trên curve và cách lấy các điểm gốc này là dựa vào hàm (vlax-curve-getpointatdist ......)
Còn bạn dkkx3a lại muốn lấy các điểm này theo một số điểm đặc biệt được xác định trước trên mỗi curve (các vertex chẳng hạn) rồi tìm điểm tương ứng trên curve còn lại.
2/- Số lượng các điểm nội suy của bác Thiep phụ thuộc vào giá trị của cái biến sc mà ở đây bác Thiep chọn sc bằng 100.
Do đó số điểm nội suy được của bác Thiep là 101 điểm. Vì thế nó làm bạn dkkx3a đau mắt. Tuy nhiên độ chính xác của phép nội suy sẽ tăng cao hơn.
Để giảm bớt số điểm nội suy này, bạn có thể đặt lại giá trị của biến sc theo mong muốn của bạn.
3/- Với phương pháp nội suy của bác Thiep, hoàn toàn không cần thiết phải có các trục định vị mắt cắt như của bạn dkkx3a và do đó rất có thể làm cho cái mặt cắt nội suy được không trùng với vị trí mà bạn dkkx3a mong muốn. (do không có chuyên môn nên thực sự mình không rõ điều này có nhất thiết phải đúng trong việc nội suy mặt cắt này hay không)
4/- Với phương pháp của bác Thiep sẽ không còn phải bận tâm tới việc sắp xếp lại tập hợp các điểm nội suy nữa do nó đã được sắp xếp sẵn theo trình tự lấy các điểm trên curve rồi.

Đó là một số điều mình muốn đề cập tới để bạn dkkx3a cân nhắc và lựa chọn cách chỉnh sửa lisp này sao cho phù hợp nhất với yêu cầu của bạn.
Chúc bạn vui và thành công.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#425 dkkx3a

dkkx3a

    biết lệnh trim

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

Đã gửi 24 November 2009 - 12:50 PM

Đó là một số điều mình muốn đề cập tới để bạn dkkx3a cân nhắc và lựa chọn cách chỉnh sửa lisp này sao cho phù hợp nhất với yêu cầu của bạn.
Chúc bạn vui và thành công.

Cảm ơn các Bác quan tâm, hai LSP này mình linh hoạt sử dụng và hiện đang hỗ trợ rất nhanh cho công việc của mình. Vấn đề của mình xin dừng ở đây. Cảm ơn các Bác. Chúc ngày mới tốt lành.

HELLO NGÀY MỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚ...........................IIIIIIIIIIIIIII

  • 1
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#426 hugo007

hugo007

    biết lệnh erase

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

Đã gửi 26 November 2009 - 10:04 PM

khi đã viết bài nếu muốn xoá thì làm cách nào đây?Thanks
  • 0

#427 minhthuantp

minhthuantp

    biết pan

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

Đã gửi 27 November 2009 - 08:24 AM

Các anh chị ơi có thể giúp em viết lisp này với! em cũng mới bước vào nghề nên không biết nhiều về lisp lắm! các anh giúp giùm nha! nội dung của nó như sau :" Tính tổng chiều dài của các đối tượng đường thẳng được chọn" thank các anh chị nhiều
  • 0

#428 minhthuantp

minhthuantp

    biết pan

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

Đã gửi 27 November 2009 - 11:06 AM

Các Pro chỉ giúp xem giùm em cái? "Đây là lisp tính diện tích của các miền bằng cách tích điểm?" Nhưng sau khi thực hiện xong lệnh thì bước cài đặt của "OSNAP SETTing quay về 0, tức là không truy bắt được điểm nữa"?
http://www.cadviet.c...s/2/dtsuaar.lsp
  • 0

#429 quynhnn

quynhnn

    biết zoom

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

Đã gửi 27 November 2009 - 02:42 PM

Xin giúp mình lisp như sau:
- chọn các đối tượng thuộc các layer khác nhau cho vào một layer mới, nhưng vẫn giữ nguyên màu của các đối tượng này (không phụ thuộc vào màu của layer mới tạo)
- cảm ơn các bác!
  • 0

#430 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 27 November 2009 - 03:15 PM

Xin giúp mình lisp như sau:
- chọn các đối tượng thuộc các layer khác nhau cho vào một layer mới, nhưng vẫn giữ nguyên màu của các đối tượng này (không phụ thuộc vào màu của layer mới tạo)
- cảm ơn các bác!

Layer mới chọn bằng cách nào bạn. Cố định hay hiển thị danh sách các layer hiện có rồi bạn chọn?
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#431 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 27 November 2009 - 03:48 PM

Xin giúp mình lisp như sau:
- chọn các đối tượng thuộc các layer khác nhau cho vào một layer mới, nhưng vẫn giữ nguyên màu của các đối tượng này (không phụ thuộc vào màu của layer mới tạo)
- cảm ơn các bác!

Yêu cầu của bạn đuợc diễn dịch như sau :
1/- trong tập hợp chọn : chuyển màu của các đối tuợng có màu ByLayer về màu Layer của đối tuợng đó.
2/- chuyển các đối tuợng thuộc tập hợp trên về 1 Layer nào đó (mới tạo ra)

buớc 1 thì Lisp trên diễn đàn đã có. (vui lòng tìm kiếm)
buớc 2 thì .......... chắc phải nhờ đến chuyên gia thui. :cheers:
  • 0

#432 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 28 November 2009 - 01:27 PM

Xin giúp mình lisp như sau:
- chọn các đối tượng thuộc các layer khác nhau cho vào một layer mới, nhưng vẫn giữ nguyên màu của các đối tượng này (không phụ thuộc vào màu của layer mới tạo)
- cảm ơn các bác!

Chào bạn quynhnn,
Bạn dùng thử lisp này coi sao. Dựa trên sự gợi ý của bác Gia bach mình viết lại. Nếu có gì chưa vừa ý, hãy post lên nhé.

(defun c:chla (/ nla ss n i lst ent la lsol m )
(setq nla (getstring "\n Nhap ten layer dich: "))
(if (not (tblsearch "layer" nla))
(command "layer" "n" nla "c" "red" nla "")
)
(setq ss (ssget)
n (sslength ss)
i 0 )
(while (< i n)
(setq ent (ssname ss i)
lst (entget ent))
(if (= (assoc 62 lst) nil)
(progn
(setq la (cdr (assoc 8 lst)))
(setq lsol (tblnext "layer" T))
(while (/= la (cdr (assoc 2 lsol)))
(setq lsol (tblnext "layer"))
)
(setq m (cdr(assoc 62 lsol)))
(setq lst (append lst (list (cons 62 m))))
(entmod lst)
)
)
(setq i (1+ i))
)
(command "change" ss "" "p" "la" nla "")
(princ)
)

Chúc bạn vui.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#433 chandatn

chandatn

    biết pan

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

Đã gửi 28 November 2009 - 03:42 PM

Chào bạn quynhnn,
Bạn dùng thử lisp này coi sao. Dựa trên sự gợi ý của bác Gia bach mình viết lại. Nếu có gì chưa vừa ý, hãy post lên nhé.


(defun c:chla (/ nla ss n i lst ent la lsol m )
(setq nla (getstring "\n Nhap ten layer dich: "))
(if (not (tblsearch "layer" nla))
(command "layer" "n" nla "c" "red" nla "")
)
(setq ss (ssget)
n (sslength ss)
i 0 )
(while (< i n)
(setq ent (ssname ss i)
lst (entget ent))
(if (= (assoc 62 lst) nil)
(progn
(setq la (cdr (assoc 8 lst)))
(setq lsol (tblnext "layer" T))
(while (/= la (cdr (assoc 2 lsol)))
(setq lsol (tblnext "layer"))
)
(setq m (cdr(assoc 62 lsol)))
(setq lst (append lst (list (cons 62 m))))
(entmod lst)
)
)
(setq i (1+ i))
)
(command "change" ss "" "p" "la" nla "")
(princ)
)

Chúc bạn vui.



Tôi thấy dùng rất hay tuy nhiên còn vấn đền là linetype bị thay đổi theo lớp mới nếu giữ được linetype cũ như màu thi tốt qua!
  • 0

#434 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 28 November 2009 - 04:08 PM

Tôi thấy dùng rất hay tuy nhiên còn vấn đền là linetype bị thay đổi theo lớp mới nếu giữ được linetype cũ như màu thi tốt qua!

Bạn thay dòng này :
(command "change" ss "" "p" "la" nla "")
Bằng dòng này :
(command "change" ss "" "p" "la" nla "LT" (cdr(assoc 6 lsol)) "")
là được
  • 0

#435 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 28 November 2009 - 05:14 PM

Bạn thay dòng này :
(command "change" ss "" "p" "la" nla "")
Bằng dòng này :
(command "change" ss "" "p" "la" nla "LT" (cdr(assoc 6 lsol)) "")
là được

Chào bác Tue_NV,
Bác xem lại xem vì dòng code (command "change" ss "" "p" "la" nla "LT" (cdr(assoc 6 lsol)) "") này nằm ngoài vòng lặp Whlie cho nên hàm (cdr(assoc 6 lsol)) sẽ nhận giá trị của linetype ở lớp cuối cùng chứa đối tượng có màu là bylayer.
Do vậy tất cả tập chọn ss đều bị đổi thành linetype này chứ không giữ nguyên được linetype của nó như cũ bác ạ.
Cái lisp của mình sẽ giữ nguyên linetype của đối tượng nếu như nó không phải là bylayer.
Để có thể thỏa mãn yêu cầu của bạn chandatn theo mình hiểu thì cũng phải làm y như đối với việc giữ màu của đối tượng vậy, nghĩa là trước hết phải đổi linetype của đối tượng từ bylayer thành linetype có tên tương ứng, tức là làm cho đối tượng có thêm mã DXF số 6 bác ạ.
Muốn vậy ta thêm một hàm điều kiện if nữa vào trong vòng lặp while.
(if (= (assoc 6 lst) nil)
(progn
(setq la (cdr (assoc 8 lst)))
(setq lsol (tblnext "layer" T))
(while (/= la (cdr (assoc 2 lsol)))
(setq lsol (tblnext "layer"))
)
(setq k (cdr(assoc 6 lsol)))
(setq lst (append lst (list (cons 6 k))))
(entmod lst)
)
)
Và như vậy cái lisp cũ trở thành:

(defun c:chla (/ nla ss n i lst ent la lsol m k)
(setq nla (getstring "\n Nhap ten layer dich: "))
(if (not (tblsearch "layer" nla))
(command "layer" "n" nla "c" "red" nla "")
)
(setq ss (ssget)
n (sslength ss)
i 0 )
(while (< i n)
(setq ent (ssname ss i)
lst (entget ent))
(setq la (cdr (assoc 8 lst)))
(setq lsol (tblsearch "layer" la))
(if (= (assoc 62 lst) nil)
(progn
(setq m (cdr(assoc 62 lsol)))
(setq lst (append lst (list (cons 62 m))))
(entmod lst)
)
)
(if (= (assoc 6 lst) nil)
(progn
(setq k (cdr(assoc 6 lsol)))
(setq lst (append lst (list (cons 6 k))))
(entmod lst)
)
)
(setq i (1+ i))
)
(command "change" ss "" "p" "la" nla "")
(princ)
)


@ ban chandatn: Bạn hãy thử lisp này xem còn phải chỉnh sửa gì nữa không nhé.

Bài được edit bởi Phạm Thanh Bình theo sự góp ý của bác Giabach
  • 2
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#436 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 28 November 2009 - 07:15 PM

Các anh chị ơi có thể giúp em viết lisp này với! em cũng mới bước vào nghề nên không biết nhiều về lisp lắm! các anh giúp giùm nha! nội dung của nó như sau :" Tính tổng chiều dài của các đối tượng đường thẳng được chọn" thank các anh chị nhiều

Chào bạn minhthuantp,
Hãy chịu khó tìm kiếm trên diễn đàn bạn nhé. Lisp này chắc chắn đã có, bây giờ ngồi viết lại e thành dở hơi mất bạn ạ. Hãy cố gắng tìm kiếm trước khi post yêu cầu của bạn.
Chúc bạn vui,
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#437 t031285

t031285

    biết vẽ rectang

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

Đã gửi 29 November 2009 - 10:15 AM

Đơn giản nhất thì bạn dùng lệnh của list lệnh CAD như sau: (thực hiện ngay sau khi vẽ đường thẳng)

(defun c:2()
(command "-layer" "S" "DUONGBAO" "")
(command ".change" "l" "" "p" "c" "bylayer" "la" "DUONGBAO" "")
(princ)
)

Cứ tương tự bạn triển khai với các đối tượng khác.
@@Chúc thành công. (Mình đang tập học LSP những lệnh này là đơn giản nhất của LSP, bạn nên học để dễ tùy biến cho công viêc.)

Lisp này chỉ chuyển thành layer của đối tượng vẽ sau cùng thôi,thí dụ ta vẽ 10 đường thẳng Layer hiện hành là thép chẳng hạn,khi cần chuyển 1 layer nào đó sang đường bao thì không được,chỉ chuyển được đường vẽ cuối cùng thôi.Mong các bác sửa giùm.Thanks.
  • 0

#438 dkkx3a

dkkx3a

    biết lệnh trim

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

Đã gửi 29 November 2009 - 01:15 PM

Lisp này chỉ chuyển thành layer của đối tượng vẽ sau cùng thôi,thí dụ ta vẽ 10 đường thẳng Layer hiện hành là thép chẳng hạn,khi cần chuyển 1 layer nào đó sang đường bao thì không được,chỉ chuyển được đường vẽ cuối cùng thôi.Mong các bác sửa giùm.Thanks.


Bạn giải thích rõ hơn. Nhưng nếu bạn muốn chuyển một tập hợp đường thẳng nào thành Layer "DUONGBAO" thì dùng cái này

(defun c:2()
(SSGET)
(command ".change" "P" "" "p" "c" "bylayer" "la" "DUONGBAO" "")
(princ)
)

@: Bạn có thể thay thế Layer "DUONGBAO" thành các Layer khác nhưng nhớ để trong dấu "".
  • 0
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#439 t031285

t031285

    biết vẽ rectang

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

Đã gửi 29 November 2009 - 01:30 PM

Bạn giải thích rõ hơn. Nhưng nếu bạn muốn chuyển một tập hợp đường thẳng nào thành Layer "DUONGBAO" thì dùng cái này

(defun c:2()
(SSGET)
(command ".change" "P" "" "p" "c" "bylayer" "la" "DUONGBAO" "")
(princ)
)

@: Bạn có thể thay thế Layer "DUONGBAO" thành các Layer khác nhưng nhớ để trong dấu "".

Lisp này được nhưng bạn thêm vào sao khi ta chọn đường thẳng bất kỳ rồi nhấn số 2 thì đường này chuyển thành màu DUONGBAO nhưng layer hiên hành sẽ chuyển về DUONGBAO luôn.Cảm ơn bạn rất nhiều.
  • 0

#440 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 29 November 2009 - 02:06 PM

Bạn giải thích rõ hơn. Nhưng nếu bạn muốn chuyển một tập hợp đường thẳng nào thành Layer "DUONGBAO" thì dùng cái này

(defun c:2()
(SSGET)
(command ".change" "P" "" "p" "c" "bylayer" "la" "DUONGBAO" "")
(princ)
)

@: Bạn có thể thay thế Layer "DUONGBAO" thành các Layer khác nhưng nhớ để trong dấu "".

Góp ý với bạn dkkx3a :
Trường hợp chạy Lisp mà mình không chọn đối tượng nào cả thì vô tình Lisp sẽ chọn đối tượng trước đó và thay đổi về Layer DUONGBAO mất. Đây là điều User không mong muốn. Bạn nên đưa hàm if vào để code hoàn thiện hơn
Chào bạn
  • 1