Đế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

#21 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:42 AM

Chào bạn anhbkhcm

Theo mình thì cái tiện lợi của việc đặt Layout là khi mọi thứ đã hoàn chỉnh hết thì người dùng khi muốn in một Layout nào đó thì chỉ cần chuột phải vào Layout đó và chọn Plot rồi OK là xong không cần phải thiết lập thêm thông số gì nữa. Ví dụ khi bạn muốn in Layout10 chẳng hạn, cho dù bạn đang ở Layout khác hoặc ở chế độ Model thì bạn vẫn làm được điều đó. Hay thậm chí bạn còn in được một lúc nhiều Layout bằng cách giữ phím Ctrl hoặc Shift rồi chọn các Layout cần in. Đó mới là cái hay của việc đặt Layout. Còn việc bạn muốn đặt nhiều Viewport trên một Layout cũng được thôi nhưng khi in thì bạn phải mất công chọn lại Window cho từng bản vẽ. Như thế sẽ mất nhiều thời gian cho việc in ấn nếu khối lượng lớn.
Mình cũng hay dùng Layout để in ấn nên cũng có đôi chút kinh nghiệm như vậy để chia sẻ. Tuy nhiên nếu bạn vẫn muốn đặt tất cả các Viewport trên một Layout thì dùng Lisp dưới đây nhé.

http://www.cadviet.c..._mtl_rev3_1.lsp


PS: Nếu thấy hay thì nhớ bấmLike thisnhé. Thanks
  • 0

#22 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 - 11:13 AM

Bạn sửa sắp đúng ý mình rồi. tuy nhiên ý mình muốn nó nằm trên một layout, như file mình gưi kèm theo.
http://www.mediafire...ck39bq60xsbrc9y
  • 0

#23 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 - 11:19 AM

Chào bạn anhbkhcm

Theo mình thì cái tiện lợi của việc đặt Layout là khi mọi thứ đã hoàn chỉnh hết thì người dùng khi muốn in một Layout nào đó thì chỉ cần chuột phải vào Layout đó và chọn Plot rồi OK là xong không cần phải thiết lập thêm thông số gì nữa. Ví dụ khi bạn muốn in Layout10 chẳng hạn, cho dù bạn đang ở Layout khác hoặc ở chế độ Model thì bạn vẫn làm được điều đó. Hay thậm chí bạn còn in được một lúc nhiều Layout bằng cách giữ phím Ctrl hoặc Shift rồi chọn các Layout cần in. Đó mới là cái hay của việc đặt Layout. Còn việc bạn muốn đặt nhiều Viewport trên một Layout cũng được thôi nhưng khi in thì bạn phải mất công chọn lại Window cho từng bản vẽ. Như thế sẽ mất nhiều thời gian cho việc in ấn nếu khối lượng lớn.
Mình cũng hay dùng Layout để in ấn nên cũng có đôi chút kinh nghiệm như vậy để chia sẻ. Tuy nhiên nếu bạn vẫn muốn đặt tất cả các Viewport trên một Layout thì dùng Lisp dưới đây nhé.

http://www.cadviet.c..._mtl_rev3_1.lsp


PS: Nếu thấy hay thì nhớ bấmLike thisnhé. Thanks

Cảm ơn bạn nhiều tuy nhiên lisp của bạn bị lỗi không chạy được , bạn kiểm tra lại xem.
  • 0

#24 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 - 11:30 AM

Bạn sửa sắp đúng ý mình rồi. tuy nhiên ý mình muốn nó nằm trên một layout, như file mình gưi kèm theo.
http://www.mediafire...ck39bq60xsbrc9y

Ơ nó nằm trên cùng một Layout rồi mà. Không hiểu bạn dùng Lisp nào. Lisp mình viết cho bạn là mtl_Rev3.lsp vẫn chạy ngon lành trên máy mình mà. Kết quả cũng giống y hệt như Layout bạn tạo ra.
  • 0

#25 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 - 11:37 AM



Ơ nó nằm trên cùng một Layout rồi mà. Không hiểu bạn dùng Lisp nào. Lisp mình viết cho bạn là mtl_Rev3.lsp vẫn chạy ngon lành trên máy mình mà. Kết quả cũng giống y hệt như Layout bạn tạo ra.

MÌNH CHẠY NÓ BÁO LỖI NÀY. BẠN THỬ LẠI XEM SAO?
; error: bad argument type: numberp: #<SUBR @10b98a28 TYLE>
  • 0

#26 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 - 11:38 AM

Cảm ơn bạn nhiều tuy nhiên lisp của bạn bị lỗi không chạy được , bạn kiểm tra lại xem.

Lisp phát sinh lỗi trong trường hợp bạn xoá mất Layout1. Vì vậy bạn nên tạo lại Layout1 hoặc paste dòng này
(command "LAYOUT" "N" "Layout1")
vào trước dòng
(command "LAYOUT" "S" "Layout1") trong Lisp
  • 0

#27 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 - 11:43 AM



Lisp phát sinh lỗi trong trường hợp bạn xoá mất Layout1. Vì vậy bạn nên tạo lại Layout1 hoặc paste dòng này
(command "LAYOUT" "N" "Layout1")
vào trước dòng
(command "LAYOUT" "S" "Layout1") trong Lisp

Mình đã làm theo như bạn chỉ dẫn nhưng nó vẫn báo như vậy.
bạn KangKung đâu rồi . help me!
  • 0

#28 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 26 January 2013 - 12:27 PM

Nhoc xí xọn tiếp sức trong lúc bạn KangKung đi vắng vậy, bảo đảm tải về chạy ok, bạn thích đặt tên layout là gì cũng đc ^^

;========LISP TAO VIEWPORT TREN LAYOUT BANG CACH CHON O MODEL========
;===============REV3=====================
(defun C:mtl()
(command "UNDO" "BE")
(setvar "OSMODE" 0)
(setq taphop(ssget))
(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 soluong (sslength taphop))
(setq index 0)
(setq i 0)
(setq ten (getstring "\n Nhap ten layout:"))
(command "layout" "N" ten)
(command "LAYOUT" "S" ten)
(command "ERASE" "ALL" "")
(command "MODEL")
(setq X 0)
(command "ZOOM" "E")
(while (< index soluong)
(setq i(1+ i))
(setq khung(ssname taphop index))
(setq lst(acet-geom-vertex-list khung))
(command "COPYCLIP" khung "")
(command "LAYOUT" "S" ten)
(command "PASTECLIP" (list X 0))
(command "SCALE" (entlast) "" (list X 0) (/ 1 tyle))
(command "MVIEW" "O" (entlast))
(command "MSPACE")
(command "ZOOM" (nth 0 lst) (nth 2 lst))
(command "PSPACE")
(setq X(+ X 50 (/ (abs(- (car (nth 2 lst)) (car (nth 0 lst)))) tyle)))
(command "ZOOM" "W" (list 0 0) (list (+ X 100) 0))
(setq index (+ index 1))
)
(command "MODEL")
(command "UNDO" "END")
(setvar "OSMODE" 15359)
(princ)
)

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

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








#29 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:40 PM

Nhoc xí xọn tiếp sức trong lúc bạn KangKung đi vắng vậy, bảo đảm tải về chạy ok, bạn thích đặt tên layout là gì cũng đc ^^

Sao mình chạy nó vẫn báo: ; error: bad argument type: numberp: #<SUBR @109cc4c4 TYLE>
  • 0

#30 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 26 January 2013 - 01:20 PM

sax lạ vậy bạn tải lại bản này xem ngắn gọn hơn xíu chắc ko lỗi ^^

;========LISP TAO VIEWPORT TREN LAYOUT BANG CACH CHON O MODEL========
;===============REV3=====================
(defun C:mtl(/ taphop soluong ten khung tyle oldos i lst X index)
(command "UNDO" "BE")
(setq oldos (getvar "osmode"))
(setvar "OSMODE" 0)
(setq taphop(ssget))
(setq Tyle (getreal (strcat "\n Ty le 1/ <1000>: ")))
(if (= Tyle nil) (setq Tyle 1000))
(setq soluong (sslength taphop))
(setq index 0)
(setq i 0)
(setq ten (getstring "\n Nhap ten layout:"))
(command "layout" "N" ten)
(command "LAYOUT" "S" ten)
(command "ERASE" "ALL" "")
(command "MODEL")
(setq X 0)
(command "ZOOM" "E")
(while (< index soluong)
(setq i(1+ i))
(setq khung(ssname taphop index))
(setq lst(acet-geom-vertex-list khung))
(command "COPYCLIP" khung "")
(command "LAYOUT" "S" ten)
(command "PASTECLIP" (list X 0))
(command "SCALE" (entlast) "" (list X 0) (/ 1000 tyle))
(command "MVIEW" "O" (entlast))
(command "MSPACE")
(command "ZOOM" (nth 0 lst) (nth 2 lst))
(command "PSPACE")
(command "Mview" "L" "on" (entlast) "")
(setq X(+ X 50 (/ (abs(- (car (nth 2 lst)) (car (nth 0 lst)))) (/ tyle 1000))))
(command "ZOOM" "W" (list 0 0) (list (+ X 100) 0))
(setq index (+ index 1))
)
(command "MODEL")
(command "UNDO" "END")
(setvar "OSMODE" oldos)
(princ)
)

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

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








#31 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 26 January 2013 - 01:25 PM

Ah nhoc đoán chắc là do dòng này, bạn xài cad version nào nhỉ ^^

<pre class="cadvietlispcode">(setq Tyle (getreal (strcat "\n Ty le: <" (rtos Tyle1 2 0) "> ")))</pre>

dòng trên cái bạn chạy lỗi cấu trúc nó khác dòng dưới xíu nhoc viết lại nhưng trên máy nhoc cả 2 cái đều chạy đc cũng ko hỉu sao máy bạn lại lỗi :D

(setq Tyle (getreal (strcat "\n Ty le 1/ <" (rtos Tyle1 2 0) ">: ")))


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

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








#32 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 - 02:09 PM

Ah nhoc đoán chắc là do dòng này, bạn xài cad version nào nhỉ ^^

dòng trên cái bạn chạy lỗi cấu trúc nó khác dòng dưới xíu nhoc viết lại nhưng trên máy nhoc cả 2 cái đều chạy đc cũng ko hỉu sao máy bạn lại lỗi :D

Mình Xài Cad2007
  • 0

#33 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 26 January 2013 - 02:10 PM

Nhoc mới bổ sung thêm 1 tí #30 bạn tải lại hen, sau khi tạo viewprot xong sẽ khóa lun các view port đó lỡ bạn có kích double vào khung view zoom, pan cũng ko sao ^^
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

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








#34 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 26 January 2013 - 02:11 PM

Bạn thử xem chạy tốt chưa hen
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

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








#35 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 - 02:17 PM

sax lạ vậy bạn tải lại bản này xem ngắn gọn hơn xíu chắc ko lỗi ^^


;========LISP TAO VIEWPORT TREN LAYOUT BANG CACH CHON O MODEL========
;===============REV3=====================
(defun C:mtl(/ taphop soluong ten khung tyle oldos i lst X index)
(command "UNDO" "BE")
(setq oldos (getvar "osmode"))
(setvar "OSMODE" 0)
(setq taphop(ssget))
(setq Tyle (getreal (strcat "\n Ty le 1/ <1000>: ")))
(if (= Tyle nil) (setq Tyle 1000))
(setq soluong (sslength taphop))
(setq index 0)
(setq i 0)
(setq ten (getstring "\n Nhap ten layout:"))
(command "layout" "N" ten)
(command "LAYOUT" "S" ten)
(command "ERASE" "ALL" "")
(command "MODEL")
(setq X 0)
(command "ZOOM" "E")
(while (< index soluong)
(setq i(1+ i))
(setq khung(ssname taphop index))
(setq lst(acet-geom-vertex-list khung))
(command "COPYCLIP" khung "")
(command "LAYOUT" "S" ten)
(command "PASTECLIP" (list X 0))
(command "SCALE" (entlast) "" (list X 0) (/ 1000 tyle))
(command "MVIEW" "O" (entlast))
(command "MSPACE")
(command "ZOOM" (nth 0 lst) (nth 2 lst))
(command "PSPACE")
(command "Mview" "L" "on" (entlast) "")
(setq X(+ X 50 (/ (abs(- (car (nth 2 lst)) (car (nth 0 lst)))) (/ tyle 1000))))
(command "ZOOM" "W" (list 0 0) (list (+ X 100) 0))
(setq index (+ index 1))
)
(command "MODEL")
(command "UNDO" "END")
(setvar "OSMODE" oldos)
(princ)
)

Hay quá Bạn ơi. Bạn Thật siêu sao. Cảm ơn Bạn Rất rất nhiều. trên forum mình vãn còn một yêu cầu viết lisp ghi chú điểm. bạn xem giúp mình với.
  • 1

#36 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 26 January 2013 - 02:26 PM

Cảm ơn bạn đã ủng hộ ^^. Thứ 1 nhoc ko dám nhận là siêu sao, cái lsp trên nhoc cũng chỉ dựa vào sườn của bạn KangKung chỉnh sữa xíu ^^,có thể do version 2007 khả năng nhận diện code ko tốt bằng cad đời sau nên lỗi thôi. Nếu từ đầu nhoc viết đc đã viết phụ bạn rùi ^^, bạn KangKung mới giỏi. thứ 2 yêu câu ghi chú điểm nhoc có xem qua, level nhoc chưa tới đó :D. Bạn ráng chờ các huynh khác có nhã hứng vậy :)
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

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








#37 tientracdia

tientracdia

    biết lệnh scale

  • Members
  • PipPipPip
  • 147 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 26 January 2013 - 10:36 PM

Nhoc xí xọn tiếp sức trong lúc bạn KangKung đi vắng vậy, bảo đảm tải về chạy ok, bạn thích đặt tên layout là gì cũng đc ^^


;========LISP TAO VIEWPORT TREN LAYOUT BANG CACH CHON O MODEL========
;===============REV3=====================
(defun C:mtl()
(command "UNDO" "BE")
(setvar "OSMODE" 0)
(setq taphop(ssget))
(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 soluong (sslength taphop))
(setq index 0)
(setq i 0)
(setq ten (getstring "\n Nhap ten layout:"))
(command "layout" "N" ten)
(command "LAYOUT" "S" ten)
(command "ERASE" "ALL" "")
(command "MODEL")
(setq X 0)
(command "ZOOM" "E")
(while (< index soluong)
(setq i(1+ i))
(setq khung(ssname taphop index))
(setq lst(acet-geom-vertex-list khung))
(command "COPYCLIP" khung "")
(command "LAYOUT" "S" ten)
(command "PASTECLIP" (list X 0))
(command "SCALE" (entlast) "" (list X 0) (/ 1 tyle))
(command "MVIEW" "O" (entlast))
(command "MSPACE")
(command "ZOOM" (nth 0 lst) (nth 2 lst))
(command "PSPACE")
(setq X(+ X 50 (/ (abs(- (car (nth 2 lst)) (car (nth 0 lst)))) tyle)))
(command "ZOOM" "W" (list 0 0) (list (+ X 100) 0))
(setq index (+ index 1))
)
(command "MODEL")
(command "UNDO" "END")
(setvar "OSMODE" 15359)
(princ)
)

Cám ơn Bạn, Bài viết rất hay.
NHờ Bạn giúp cho khi khung nhìn không nằm ngang, khi ta chọn thì xuất qua Layout và xoay khung nhìn đó nằm lại ngang có được không bạn ?
  • 0

#38 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 26 January 2013 - 11:06 PM

bạn tải lại lsp #30 hoàn chỉnh hơn còn vụ khung nhìn nằm ngang thì ko đc vì lsp này có rác dụng chọn khung bạn vẽ sẵn bên model xuất qua layout mà, việc chọn khung bên model có tác dụng bạn định sẵn khi xuất qua layout nó sẽ chọn đúng các đối tượg mà bạn định sẵn bên model , nếu sữa lại vd bạn vẽ khung chữ nhật đứng bên model mà xuất qua layout thi nằm ngang thì sẽ mất đi 1 phần đối tượng mà bạn mún thấy, vì thế mún nó nằm ngang thì bên model bạn vẽ cho nó nằm ngang đc rùi ^^
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

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








#39 tientracdia

tientracdia

    biết lệnh scale

  • Members
  • PipPipPip
  • 147 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 27 January 2013 - 08:01 AM

bạn tải lại lsp #30 hoàn chỉnh hơn còn vụ khung nhìn nằm ngang thì ko đc vì lsp này có rác dụng chọn khung bạn vẽ sẵn bên model xuất qua layout mà, việc chọn khung bên model có tác dụng bạn định sẵn khi xuất qua layout nó sẽ chọn đúng các đối tượg mà bạn định sẵn bên model , nếu sữa lại vd bạn vẽ khung chữ nhật đứng bên model mà xuất qua layout thi nằm ngang thì sẽ mất đi 1 phần đối tượng mà bạn mún thấy, vì thế mún nó nằm ngang thì bên model bạn vẽ cho nó nằm ngang đc rùi ^^

Lisp mlt đặt tỉ lệ in và nêm thêm thiết đặt khổ giấy đi bạn.
Cám ơn
  • 0

#40 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 27 January 2013 - 11:20 AM

nhoc nghĩ lsp làm đc tới đây là nhiều rùi, ko nên đặt thêm nhiều nó rối ^^, để dành cho plot của cad có đất mà xài chứ :D, để lâu coi chừng hư ah. Nếu số lượng bản vẽ bạn nhiều có thể kím lsp in đồng loạt đó trên 4rum nhiều lém.
Chúc bạn vui
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

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