Đến nội dung


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

[Yêu cầu] Lisp tạo viewport từ khung chọn bên model.


  • Please log in to reply
131 replies to this topic

#1 bachngoctung

bachngoctung

    biết lệnh copy

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

Đã gửi 18 January 2013 - 11:41 PM

Xin chào cả nhà
Hôm nay có vấn đề này mong cả nhà giúp đỡ.
Mình muốn tạo các viewport từ khung chọn bên model ( mỗi một khung chọn bên model sẽ tạo ra 1 khung viewport bên layout, mỗi layout chỉ có 1 viewport)
Số thứ tự viewport và layout được tạo ra sẽ theo số thứ tự pick chọn khung bên model.
Nội dung quá trình thực hiện cụ thể như sau:
Bên Model
Đánh lệnh: mtl
Chọn khung bên model ( đối tượng là rectang, ví dụ chọn 3 khung, các khung này kích cỡ khác nhau)
Kết quá: tạo ra 3 layout và mỗi layout có chứa 1 viewport( kích thước viewport bằng đúng kích thước khung rectang chọn bên model và view trọn khung rectang bên model đó)

Vui lòng tải file đính kèm tại đây: https://www.dropbox....6tl/cadviet.dwg

Xin chân thành cám ơn!!!
  • 0

#2 bachngoctung

bachngoctung

    biết lệnh copy

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

Đã gửi 19 January 2013 - 11:59 AM

Xin chào cả nhà
Hôm nay có vấn đề này mong cả nhà giúp đỡ.
Mình muốn tạo các viewport từ khung chọn bên model ( mỗi một khung chọn bên model sẽ tạo ra 1 khung viewport bên layout, mỗi layout chỉ có 1 viewport)
Số thứ tự viewport và layout được tạo ra sẽ theo số thứ tự pick chọn khung bên model.
Nội dung quá trình thực hiện cụ thể như sau:
Bên Model
Đánh lệnh: mtl
Chọn khung bên model ( đối tượng là rectang, ví dụ chọn 3 khung, các khung này kích cỡ khác nhau)
Kết quá: tạo ra 3 layout và mỗi layout có chứa 1 viewport( kích thước viewport bằng đúng kích thước khung rectang chọn bên model và view trọn khung rectang bên model đó)

Vui lòng tải file đính kèm tại đây: https://www.dropbox....6tl/cadviet.dwg

Xin chân thành cám ơn!!!

Nhờ anh em giúp đỡ vấn đề này.
  • -1

#3 bachngoctung

bachngoctung

    biết lệnh copy

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

Đã gửi 20 January 2013 - 10:35 PM

Hy vọng sang đầu tuần anh em giúp đỡ... :blink: :wacko:
  • 0

#4 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 21 January 2013 - 04:03 PM

Xin chào cả nhà Hôm nay có vấn đề này mong cả nhà giúp đỡ. Mình muốn tạo các viewport từ khung chọn bên model ( mỗi một khung chọn bên model sẽ tạo ra 1 khung viewport bên layout, mỗi layout chỉ có 1 viewport) Số thứ tự viewport và layout được tạo ra sẽ theo số thứ tự pick chọn khung bên model. Nội dung quá trình thực hiện cụ thể như sau: Bên Model Đánh lệnh: mtl Chọn khung bên model ( đối tượng là rectang, ví dụ chọn 3 khung, các khung này kích cỡ khác nhau) Kết quá: tạo ra 3 layout và mỗi layout có chứa 1 viewport( kích thước viewport bằng đúng kích thước khung rectang chọn bên model và view trọn khung rectang bên model đó) Vui lòng tải file đính kèm tại đây: https://www.dropbox....6tl/cadviet.dwg Xin chân thành cám ơn!!!

Hề hề hề,

Không biết cái của đi chôm này có ưng ý bạn hay không, nếu nó dùng được thì chịu khó cám ơn ông chủ lisp thanhduan2407 nghen.
Lưu ý rằng lisp này xuất ra các viewports dạng file *.xps lưu tại đường dẫn do bạn chọn khi lisp hỏi địa chỉ lưu file chứ không phải tạo thêm các layout mới như bạn mong muốn. Điều này có lẽ thuận lợi hơn cho bạn khi xuất để in ấn. nếu muốn xuất thành các layout riêng có nhẽ không khó lắm nữa nhưng mình chưa rành về layout nên không thể hứa hẹn gì với bạn cả. Trước mắt theo ngu ý của mình thì dùng cái này còn ngon hơn layout nhiều vì vừa nặng bản vẽ lại vừa rất dễ toi khi người dùng không rành về layout.

Nếu nó chưa như ý thì cũng đừng phiền lòng và hãy post lên để có thể có người khác giúp bạn được.
Lisp đây hè:

(defun c:mla (/ d1 d2 p1 p2 p3 plst ssl)
(vl-load-com)
(command "undo" "be")
(setvar "tilemode" 0)
(command "PSPACE")
(setq
D1 (getpoint "\nChon diem thu nhat goc tren ben trai khung ban ve: ")
D2 (getpoint "\nChon diem thu hai goc tren ben phai khung ban ve: ")
)
(command "MSPACE")
(alert "\n Chon cac khung nhin theo thu tu layout")
(setq ssl (acet-ss-to-list (ssget (list (cons 0 "lwpolyline")))))
(foreach pl ssl
(setq plst (acet-geom-vertex-list pl)
p1 (nth 0 plst)
p2 (nth 1 plst)
p3 (nth 2 plst)
)
(command "layout" "n" (setq a (getstring "\n Nhap ten layout moi: ")))
(command "layout" "s" a)
(command "PSPACE")
(if (> (distance p1 p2) (distance p2 p3))
(alignspace P1 P2 D1 D2)
(alignspace P2 P3 D1 D2)
)

(command "_plot" "" "" "" "" "" "" "")
(command "MSPACE")
)
(setvar "tilemode" 1)
(command "undo" "e")
(princ)
)
Chúc bạn vui.

PS: Bạn lưu ý thêm rằng trong lisp có sử dụng hàm (alignspace ....) là một hàm có trong bộ Express tools. Vì thế có thể khi chạy lisp lần đầu tiên nó sẽ báo lỗi không có hàm này. Lý do là một số hàm của express tools không tự động load vào bản vẽ. Do vậy để an toàn trước khi sử dụng lisp này bạn cần phải gọi lệnh align space này ít nhất là một lần trong phiên làm việc với bản vẽ cần chạy lisp để CAD có thể nhận dạng hàm (alignspace .....) này. Để tìm hiểu kỹ hơn về hàm alignspace bạn cần mở thư mục express tools của CAD và tìm tới lisp này để hiểu nó.
cách chạy lisp bổ sung này y như cũ, chỉ có lưu ý thêm phải nhập tên của các layout mới được tạo ra.
Để tiết kiệm đất nên mình bổ sung luôn vào lisp cũ. nếu bạn đã down về rồi thì hãy down lại một lần nữa. Nên download, tránh copy - paste code vì rất có thể bị lỗi lisp do code box của diễn đàn có vấn đề mà mình không biết cách khắc phục.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#5 bachngoctung

bachngoctung

    biết lệnh copy

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

Đã gửi 22 January 2013 - 11:16 PM

-Rất cám ơn bạn phamthanhbinh đã giúp đỡ. Lisp của bạn gửi lên đây chưa đúng ý của mình cụ thể khi gõ lệnh nó đã nhảy sang layout và nó hỏi góc khung bên trái và góc khung bên phải sau đó nhảy vào model và chọn các khung muốn view, khi mình chọn nhiều khung để view thì nó cũng chỉ tạo ra được 1 layout mới và view không theo khung bên model.
- Xin nhắc lai là mình muốn tạo viewport bằng cách chọn khung bên model, mỗi khung chọn sẽ cho ra 1 khung nhìn trong 1 layout.
- Mong bạn phamthanhbinh nghiên cứu giúp mình. thanks
PS: Cho mình hỏi thêm cái lisp bạn giới thiệu bên trên thì ý đồ của tác giả làm ra nó để làm gì vậy???
Thanks!!
  • 0

#6 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 23 January 2013 - 11:38 AM

-Rất cám ơn bạn phamthanhbinh đã giúp đỡ. Lisp của bạn gửi lên đây chưa đúng ý của mình cụ thể khi gõ lệnh nó đã nhảy sang layout và nó hỏi góc khung bên trái và góc khung bên phải sau đó nhảy vào model và chọn các khung muốn view, khi mình chọn nhiều khung để view thì nó cũng chỉ tạo ra được 1 layout mới và view không theo khung bên model.
- Xin nhắc lai là mình muốn tạo viewport bằng cách chọn khung bên model, mỗi khung chọn sẽ cho ra 1 khung nhìn trong 1 layout.
- Mong bạn phamthanhbinh nghiên cứu giúp mình. thanks
PS: Cho mình hỏi thêm cái lisp bạn giới thiệu bên trên thì ý đồ của tác giả làm ra nó để làm gì vậy???
Thanks!!

Hề hề hề,
Hãy gửi bản vẽ của bạn lên để mình test thử.
Mình test trên các bản vẽ của mình thì thấy hoàn toàn đạt theo cái sự hiểu của mình (Mình dùng CAD2004)
Người lập lisp này có ý đồ có vẻ giống bạn nhưng để tạo ra các bản in khác nhau của cùng một bản vẽ và lưu lại dưới dạng file xps để khi cần thì lôi ra in, không cần phải mở bản vẽ nữa. Mình đã bổ sung thêm việc tạo các layout mới và lưu lại các layout này, bạn đã test chưa mà không thấy có phản hồi về điều này???
Việc chọn khung nhìn bên model và bên layout thì có chi khác nhau nhỉ?? Cái cần là kết quả chứ đâu có phải cách làm. Cách chi là do cái sự hiểu của người viết lisp, nếu bạn yêu cầu người viết phải hiểu theo cách của bạn thì e rằng sẽ hơi vất vả vì cái sự hiểu của họ không thể bằng của bạn, nhất là về cái chuyên môn sâu của bạn bạn ạ. Mình cũng chỉ đoán mò cái yêu cầu của bạn và cảm thấy cái của Thanhduan2407 giông giống thì sửa chữa một chút rồi post lên chứ không phải hiểu hoàn toàn đúng ý của bạn. Vậy nên nó chưa phù hợp cũng là điều dễ hiểu mà.
Nếu bạn gửi bản vẽ lên thì mình mới có thể hiểu đúng ý của bạn để test lisp được.
Rất mong bạn thông cảm.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#7 KangKung

KangKung

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 227 (khá)

Đã gửi 23 January 2013 - 12:44 PM

Xin chào cả nhà
Hôm nay có vấn đề này mong cả nhà giúp đỡ.
Mình muốn tạo các viewport từ khung chọn bên model ( mỗi một khung chọn bên model sẽ tạo ra 1 khung viewport bên layout, mỗi layout chỉ có 1 viewport)
Số thứ tự viewport và layout được tạo ra sẽ theo số thứ tự pick chọn khung bên model.
Nội dung quá trình thực hiện cụ thể như sau:
Bên Model
Đánh lệnh: mtl
Chọn khung bên model ( đối tượng là rectang, ví dụ chọn 3 khung, các khung này kích cỡ khác nhau)
Kết quá: tạo ra 3 layout và mỗi layout có chứa 1 viewport( kích thước viewport bằng đúng kích thước khung rectang chọn bên model và view trọn khung rectang bên model đó)

Vui lòng tải file đính kèm tại đây: https://www.dropbox....6tl/cadviet.dwg

Xin chân thành cám ơn!!!

Bác Tùng dùng thử lisp này xem đã đúng ý chưa.
Hướng dẫn:
Load File lisp
Đánh lệnh mtl
Chọn các khung bên model theo thứ tự từng khung một hoặc quét chọn hàng loạt
Chuột phảihttp://www.cadviet.c...3/71162_mtl.lsp
  • 2

#8 KangKung

KangKung

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 227 (khá)

Đã gửi 23 January 2013 - 12:45 PM

Xin chào cả nhà
Hôm nay có vấn đề này mong cả nhà giúp đỡ.
Mình muốn tạo các viewport từ khung chọn bên model ( mỗi một khung chọn bên model sẽ tạo ra 1 khung viewport bên layout, mỗi layout chỉ có 1 viewport)
Số thứ tự viewport và layout được tạo ra sẽ theo số thứ tự pick chọn khung bên model.
Nội dung quá trình thực hiện cụ thể như sau:
Bên Model
Đánh lệnh: mtl
Chọn khung bên model ( đối tượng là rectang, ví dụ chọn 3 khung, các khung này kích cỡ khác nhau)
Kết quá: tạo ra 3 layout và mỗi layout có chứa 1 viewport( kích thước viewport bằng đúng kích thước khung rectang chọn bên model và view trọn khung rectang bên model đó)

Vui lòng tải file đính kèm tại đây: https://www.dropbox....6tl/cadviet.dwg

Xin chân thành cám ơn!!!

Bác Tùng dùng thử lisp này xem đã đúng ý chưa.
http://www.cadviet.c...3/71162_mtl.lsp
Hướng dẫn:
Load File lisp
Đánh lệnh mtl
Chọn các khung bên model theo thứ tự từng khung một hoặc quét chọn hàng loạt
Chuột phải
  • 1

#9 bachngoctung

bachngoctung

    biết lệnh copy

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

Đã gửi 23 January 2013 - 04:29 PM

Cám ơn bạn phamthanhbinh.
Mình cũng xin giải thích rõ hơn 1 chút như sau:
[Hãy gửi bản vẽ của bạn lên để mình test thử.]
Bình vui lòng down bản vẽ ở đây: https://www.dropbox....6tl/cadviet.dwg
[Mình test trên các bản vẽ của mình thì thấy hoàn toàn đạt theo cái sự hiểu của mình (Mình dùng CAD2004)]
Mình dùng cad 13 Bình à
[Người lập lisp này có ý đồ có vẻ giống bạn nhưng để tạo ra các bản in khác nhau của cùng một bản vẽ và lưu lại dưới dạng file xps để khi cần thì lôi ra in, không cần phải mở bản vẽ nữa. Mình đã bổ sung thêm việc tạo các layout mới và lưu lại các layout này, bạn đã test chưa mà không thấy có phản hồi về điều này???]
Mình đã test và khi đánh lệnh nó tạo layout mới và nhảy sang bên layout luôn.
[Việc chọn khung nhìn bên model và bên layout thì có chi khác nhau nhỉ??]
Nó khác nhau Bình à, vì bản vẽ ở model và được đóng khung, hoặc được tạo đường bao, vì thế mình muốn từ model chọn các khung và nó sẽ cho ra mỗi khung chọn 1 viewport trong 1 layout.
[Cái cần là kết quả chứ đâu có phải cách làm. Cách chi là do cái sự hiểu của người viết lisp, nếu bạn yêu cầu người viết phải hiểu theo cách của bạn thì e rằng sẽ hơi vất vả vì cái sự hiểu của họ không thể bằng của bạn, nhất là về cái chuyên môn sâu của bạn bạn ạ. Mình cũng chỉ đoán mò cái yêu cầu của bạn và cảm thấy cái của Thanhduan2407 giông giống thì sửa chữa một chút rồi post lên chứ không phải hiểu hoàn toàn đúng ý của bạn. Vậy nên nó chưa phù hợp cũng là điều dễ hiểu mà.
Nếu bạn gửi bản vẽ lên thì mình mới có thể hiểu đúng ý của bạn để test lisp được.]
Đồng ý kết quả là quan trọng. Mình ko viết được lisp vì thế mình nói ý đồ và kết quả. Những người biết viết lisp sẽ có thể thay đổi các bước làm để cho phù hợp với code lập trình trong lisp để cho lisp hoạt động tốt hơn ( điều này người ko biết sẽ ko nắm được) miễn sao kết quả ok là được.
Cuối cùng rất cám ơn phamthanhbinh đã giúp đỡ.
PS: Lisp của bạn KangKung mới gửi phù hợp mới ý đồ của mình, tuy nhiên mình có nhờ bổ sung thêm. Bình có thể xem thêm bài dưới giúp mình nhé.
Thanks!
  • 0

#10 bachngoctung

bachngoctung

    biết lệnh copy

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

Đã gửi 23 January 2013 - 04:32 PM



Bác Tùng dùng thử lisp này xem đã đúng ý chưa.
http://www.cadviet.c...3/71162_mtl.lsp
Hướng dẫn:
Load File lisp
Đánh lệnh mtl
Chọn các khung bên model theo thứ tự từng khung một hoặc quét chọn hàng loạt
Chuột phải

Cám ơn bạn KangKung. Lisp chuẩn, tuy nhiên nhờ KangKung và các bạn bổ sung thêm Plot area cho mỗi viewport được tạo ra để khi in không phải set windown cho từng viewport đó nữa.
Rất cám ơn bạn.
  • 0

#11 KangKung

KangKung

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 227 (khá)

Đã gửi 24 January 2013 - 01:46 PM

Hi Bác Tùng
Lisp mới của bác Tùng đây:
http://www.cadviet.c...62_mtl_rev1.lsp
Tuy nhiên trước khi chạy Lisp bác nên đặt máy in và khổ giấy ở Layout1 của bản vẽ và xoá Layout2, Layout3, Layout4,… thì Lisp này chạy mới Smooth.
  • 1

#12 bachngoctung

bachngoctung

    biết lệnh copy

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

Đã gửi 25 January 2013 - 09:35 PM

Hi Bác Tùng
Lisp mới của bác Tùng đây:
http://www.cadviet.c...62_mtl_rev1.lsp
Tuy nhiên trước khi chạy Lisp bác nên đặt máy in và khổ giấy ở Layout1 của bản vẽ và xoá Layout2, Layout3, Layout4,… thì Lisp này chạy mới Smooth.

Tuyệt với, xin cám ơn bạn. Sau khi dùng lisp thì đúng ý đồ khi mình đề ra. Tuy nhiên mình mong được bổ sung cho hoàn thiện hơn ( do phát sinh vấn đề trong khi sử dụng) cụ thể như sau:
- Bổ sung thêm dòng nhắc hỏi tên ký tự đầu của layout ( các các khác sẽ tự động gắn 1, 2, 3... vào sau tên khái báo)
- Bổ sung thêm tỷ lệ khung viewport cho layout tạo ra ( mặc định là 1/1)
- Cái phần cuối nó hỏi khổ giấy thì mình thấy ko cần thiết ( ko hiểu KangKung cho dòng nhắc đó vào là có ý đồ gì?). Khi mình đã tạo được các layout và viewport rồi thì muốn in ấn thì mình publish chọn máy và khổ in tổng thể luôn.
Cám ơn kangkung, mong được bổ sung hoàn thiện ( :mellow: cái này gọi là; được voi đòi hai bà trưng... hehehe)
Thanks!
  • 1

#13 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 25 January 2013 - 10:14 PM

Nhoc ham vui xíu:
-Bổ sung đầu là seo nhỉ đặt tên cho từng layout hả bạn vd: vuiqua sau đó sẽ gắn đối với từng khung đc chọn sẽ là vuiqua-1, vuiqua-2,....
-Bổ sung thêm tỉ lệ nghĩa là mình có thể chọn thay đổi tỉ lệ cho các layout đó ah,nếu ko nhập gì mặc định nó sẽ tạo ra là 1/1 chăng, có thể nhoc chưa hỉu nhưng thấy yêu cầu của bạn là zoom khung viewport bằng khung bên model >>>> tỉ lệ viewport = 1/1 rùi sữa làm gì nhỉ :D
-Cái cuối nhoc đoán là bạn ấy cho bạn chọn set sẵn khổ giấy, rùi dùng chế độ win down quét vừa khung viewport lun oỳ, như bạn ấy có nói bạn nên chọn máy in sẵn ở layout 1 trước nên ý đồ là thế ^^, ko pit nhoc có đoán sai không :D
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#14 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 25 January 2013 - 10:50 PM

Mạn phép bạn KangKung cho nhoc sữa lại tí :D, nhoc cũng mới tập tềnh học lsp, nên thấy lsp nào nhoc có khả năng thử chỉnh sữa nhằm rèn luyện ^^
-Yêu cầu bổ sung đầu tiên của bạn nhoc hỉu sao sữa vậy bạn xem thử hen
-yêu cầu thứ 2 chưa hỉu ko pit sữa sao ^^
-thắc mắc thứ 3 của bạn, vậy thể theo nguyện vọng bỏ lun phần đó cho nó đỡ rùm rà hen :D

;========LISP TAO VIEWPORT TREN LAYOUT BANG CACH CHON O MODEL========
(defun C:mtl(/ taphop soluong ten size i index oldos)
(command "UNDO" "BE")
(setq oldos (getvar "osmode"))
(setvar "OSMODE" 0)
(setq taphop(ssget))
(setq soluong (sslength taphop))
(setq ten (getstring 1 "\n Nhap ten layout:"))
(setq index 0)
(setq i 0)
(while (< index soluong)
(setq i(1+ i))
(setq khung(ssname taphop index))
(setq lst(acet-geom-vertex-list khung))
(command "COPYCLIP" khung "")
(command "LAYOUT" "N" (strcat ten (rtos i 2 0)))
(command "LAYOUT" "S" (strcat ten (rtos i 2 0)))
(command "layout" "d" "layout1" "")
(command "layout" "d" "layout2" "")
(command "layout" "d" "layout3" "")
(command "ERASE" "ALL" "")
(command "PASTECLIP" "0,0")
(command "MVIEW" "O" (entlast))
(command "MSPACE")
(command "ZOOM" (nth 0 lst) (nth 2 lst))
(command "PSPACE")
(command "ZOOM" "E")
(command "PLOT" "Y" "" "" size "M" "L" "N" "W" "0,0" (list (abs(- (car (nth 2 lst)) (car (nth 0 lst)))) (abs(- (cadr (nth 2 lst)) (cadr (nth 0 lst))))) "F" "" "Y" "" "Y" "N" "N" "N" "N" "Y" "N")
(command "MODEL")
(setq index (+ index 1))
)
(command "UNDO" "END")
(setvar "OSMODE" oldos)
(princ)
)

  • 2
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#15 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 25 January 2013 - 11:23 PM

oh giờ đọc lại mới pit bạn ấy viết hỏi chọn khổ giáy nhằm mục đich gì rùi, để lây thông số đó set vùng in , vậy nhoc sữa chưa hết rùi ^^, mẹ bắt đi ngủ, nếu mai chưa ai sữa hộ bạn thì nhoc sẽ nghiên cứu sữa lại hen :D
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#16 anhbkhcm

anhbkhcm

    biết vẽ circle

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

Đã gửi 26 January 2013 - 12:33 AM

Mạn phép bạn KangKung cho nhoc sữa lại tí :D, nhoc cũng mới tập tềnh học lsp, nên thấy lsp nào nhoc có khả năng thử chỉnh sữa nhằm rèn luyện ^^
-Yêu cầu bổ sung đầu tiên của bạn nhoc hỉu sao sữa vậy bạn xem thử hen

Bạn Có thể sửa lại cho tất cả nằm trong một layout. thì tuyệt vời. mỗi khung cách nhau la 50m
  • 0

#17 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 26 January 2013 - 05:51 AM

Bạn anhbkhcm spam ghê thế, như nói trên nhoc mới tập tềnh về lsp thui, việc xuất ra trong 1 layout nhoc có thể sữa đc nhưng cách nhau 50m thì nhoc chịu ^^, mà bạn có để ý ko, layout là cách nói hiển thị trên trang giấy mà mỗi khung cách nhau 50m thì tờ giấy phải dài bao nhiu mới đủ đây :D
- Nếu cách nhau 50mm = 5cm thì có thể đc or 500mm = 50 cm cũng có thể đc nhưng in ra cũng tốn giấy ah ^^
-thôi thì thế này nhoc chỉ giúp bạn sữa đc ra trong 1 layout thui còn lại bạn tự xử hen :D, thông cảm khả năng giới hạn

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=68723&pid=225475&st=0&#entry225475
;========LISP TAO VIEWPORT TREN LAYOUT BANG CACH CHON O MODEL========
(defun C:mtl(/ taphop soluong ten size i index oldos)
(command "UNDO" "BE")
(setq oldos (getvar "osmode"))
(setvar "OSMODE" 0)
(setq taphop(ssget))
(setq soluong (sslength taphop))
(setq ten (getstring 1 "\n Nhap ten layout:"))
(setq index 0)
(setq i 0)
(while (< index soluong)
(setq i 1)
(setq khung(ssname taphop index))
(setq lst(acet-geom-vertex-list khung))
(command "COPYCLIP" khung "")
(command "LAYOUT" "N" (strcat ten (rtos i 2 0)))
(command "LAYOUT" "S" (strcat ten (rtos i 2 0)))
(command "layout" "d" "layout1" "")
(command "layout" "d" "layout2" "")
(command "layout" "d" "layout3" "")
(command "ERASE" "ALL" "")
(command "PASTECLIP" "0,0")
(command "MVIEW" "O" (entlast))
(command "MSPACE")
(command "ZOOM" (nth 0 lst) (nth 2 lst))
(command "PSPACE")
(command "ZOOM" "E")
(command "PLOT" "Y" "" "" size "M" "L" "N" "W" "0,0" (list (abs(- (car (nth 2 lst)) (car (nth 0 lst)))) (abs(- (cadr (nth 2 lst)) (cadr (nth 0 lst))))) "F" "" "Y" "" "Y" "N" "N" "N" "N" "Y" "N")
(command "MODEL")
(setq index (+ index 1))
)
(command "UNDO" "END")
(setvar "OSMODE" oldos)
(princ)
)


  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#18 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 26 January 2013 - 06:29 AM

Bạn Tùng ơi theo ý kiến của nhoc thì thế này vì việc chọn khổ giấy liên quan đến việc chọn vùng nên nhoc nghĩ mình cứ để vậy thui, nhoc cũng ko pit sữa ^^, chờ pac KangKung giúp vậy :D, nhoc để nguyên phần chọn khổ nhé

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=68723&pid=226065&st=0&#entry226065
;========LISP TAO VIEWPORT TREN LAYOUT BANG CACH CHON O MODEL========
(defun C:mtl(/ taphop soluong ten size i index oldos)
(command "UNDO" "BE")
(setq oldos (getvar "osmode"))
(setvar "OSMODE" 0)
(setq taphop(ssget))
(setq soluong (sslength taphop))
(setq size(getstring "\n Kho giay in A0/A1/A2/A3/A4? < A3 >: "))
(if (= size nil) (setq size A3))
(setq ten (getstring 1 "\n Nhap ten layout:"))
(setq index 0)
(setq i 0)
(while (< index soluong)
(setq i(1+ i))
(setq khung(ssname taphop index))
(setq lst(acet-geom-vertex-list khung))
(command "COPYCLIP" khung "")
(command "layout" "n" (strcat "layout" (rtos i 2 0)))
(command "LAYOUT" "N" (strcat ten (rtos i 2 0)))
(command "LAYOUT" "S" (strcat ten (rtos i 2 0)))
(command "layout" "d" "layout1" "")
(command "layout" "d" "layout2" "")
(command "layout" "d" "layout3" "")
(command "ERASE" "ALL" "")
(command "PASTECLIP" "0,0")
(command "MVIEW" "O" (entlast))
(command "MSPACE")
(command "ZOOM" (nth 0 lst) (nth 2 lst))
(command "PSPACE")
(command "ZOOM" "E")
(command "PLOT" "Y" "" "" size "M" "L" "N" "W" "0,0" (list (abs(- (car (nth 2 lst)) (car (nth 0 lst)))) (abs(- (cadr (nth 2 lst)) (cadr (nth 0 lst))))) "F" "" "Y" "" "Y" "N" "N" "N" "N" "Y" "N")
(command "MODEL")
(setq index (+ index 1))
)
(command "UNDO" "END")
(setvar "OSMODE" oldos)
(princ)
)


  • 1
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#19 KangKung

KangKung

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 227 (khá)

Đã gửi 26 January 2013 - 10:04 AM

Tuyệt với, xin cám ơn bạn. Sau khi dùng lisp thì đúng ý đồ khi mình đề ra. Tuy nhiên mình mong được bổ sung cho hoàn thiện hơn ( do phát sinh vấn đề trong khi sử dụng) cụ thể như sau:
- Bổ sung thêm dòng nhắc hỏi tên ký tự đầu của layout ( các các khác sẽ tự động gắn 1, 2, 3... vào sau tên khái báo)
- Bổ sung thêm tỷ lệ khung viewport cho layout tạo ra ( mặc định là 1/1)
- Cái phần cuối nó hỏi khổ giấy thì mình thấy ko cần thiết ( ko hiểu KangKung cho dòng nhắc đó vào là có ý đồ gì?). Khi mình đã tạo được các layout và viewport rồi thì muốn in ấn thì mình publish chọn máy và khổ in tổng thể luôn.
Cám ơn kangkung, mong được bổ sung hoàn thiện ( :mellow: cái này gọi là; được voi đòi hai bà trưng... hehehe)
Thanks!

Lần này hi vọng mọi thứ đã đúng hết ý của bác.
1. Đã bổ sung thêm dòng nhắc hỏi kí tự đầu của Layout. Nếu không nhập gì thì mặc định tên là Layout1, Layout2, …
2. Đã bổ sung thêm tỷ lệ khung Viewport cho layout tạo ra. Ví dụ tỉ lệ bản vẽ là 1/1000 thì nhập số 1 ở dòng nhắc lệnh, 1/500 thì nhập số 0.5, nếu tỷ lệ 1/2000 thì nhập số 2
3. Mình vẫn để dòng nhắc chọn khổ giấy vì khi in ấn thì chắc chắn phải chọn khổ giấy rồi, vậy nên thay vì chọn thủ công khổ giấy cho từng Layout một thì ở đây lisp nó chọn hàng loạt cho mình luôn. Giả dụ bác có 1000 Layout, sau này in ấn mà phải chọn khổ giấy cho từng Layout thì chắc… hết muốn in luôn.
Chúc bác vui.
http://www.cadviet.c...62_mtl_rev2.lsp
  • 2

#20 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 26 January 2013 - 10:32 AM

Bạn KangKung ơi cách bạn thêm vào hay hơn nhoc :D, nhưng nhoc xài thử thì thấy nó ko đc như lsp thứ 1 của bạn, tạo xong thì mỗi layout nó lại tạo khung view chung cho khung 2 và 3, mình làm thử trên file vd của bạn tùng, và nó hơi dư layout 1, 2 ,3. Nên nhoc có sữa tí trong lsp bạn Tùng xem cái nào hợp thì xài hen ^^

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=68723&pid=226065&st=0&#entry226065
;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=68723&pid=226065&st=0&#entry226065
;========LISP TAO VIEWPORT TREN LAYOUT BANG CACH CHON O MODEL========
(defun C:mtl(/ taphop soluong ten size i index oldos Tyle)
(command "UNDO" "BE")
(setq oldos (getvar "osmode"))
(setvar "OSMODE" 0)
(setq taphop(ssget))
(setq soluong (sslength taphop))
(setq size(getstring "\n Kho giay in A0/A1/A2/A3/A4? < A3 >: "))
(if (= size nil) (setq size A3))
(setq ten (getstring 1 "\n Nhap ten layout:"))
(if (= Tyle nil)
(setq Tyle1 1)
(setq Tyle1 Tyle))
(setq Tyle (getreal (strcat "\n Ty le: <" (rtos Tyle1 2 0) "> ")))
(if (= Tyle nil)
(setq Tyle Tyle1))
(setq index 0)
(setq i 0)
(while (< index soluong)
(setq i(1+ i))
(setq khung(ssname taphop index))
(setq lst(acet-geom-vertex-list khung))
(command "COPYCLIP" khung "")
(command "layout" "n" (strcat "layout" (rtos i 2 0)))
(command "LAYOUT" "N" (strcat ten (rtos i 2 0)))
(command "LAYOUT" "S" (strcat ten (rtos i 2 0)))
(command "layout" "d" "layout1" "")
(command "layout" "d" "layout2" "")
(command "layout" "d" "layout3" "")
(command "ERASE" "ALL" "")
(command "PASTECLIP" "0,0")
(command "SCALE" (entlast) "" "0,0" (/ 1000 tyle))
(command "MVIEW" "O" (entlast))
(command "MSPACE")
(command "ZOOM" (nth 0 lst) (nth 2 lst))
(command "PSPACE")
(command "ZOOM" "E")
(command "PLOT" "Y" "" "" size "M" "L" "N" "W" "0,0" (list (abs(- (car (nth 2 lst)) (car (nth 0 lst)))) (abs(- (cadr (nth 2 lst)) (cadr (nth 0 lst))))) "F" "" "Y" "" "Y" "N" "N" "N" "N" "Y" "N")
(command "MODEL")
(setq index (+ index 1))
)
(command "UNDO" "END")
(setvar "OSMODE" oldos)
(princ)
)

PS: vụ tỉ lệ nhoc có sữa lại tí, vd bạn nhập 1/500 >>> khung view sẽ scale lên 2 lần, tương tự cho các tỉ lệ khác bạn nhập ^^
  • 1
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^