Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
bachngoctung

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

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

anhbkhcm    5

Ah bạn KangKung cho nhoc hỏi tí, tác dụng của lsp thì ko có gì phải bàn :D, nhưng nhoc thắc mắc nếu đã sử dụng layout tức là các viewport có tác dụng hiển thị đúng các phần chi tiết, v...v bên model cái nào ra cái đó theo tỉ lệ mong mún cho từng khung >>>> vậy khung bản vẽ mình nên vẽ bên layout phải ko, khung bản bản vẽ sẽ bao các khung viewport đã tạo, nếu như lsp thì chỉ in đúng khung view tạo ra thì nhìn nó trơ trụi wá ^^ phải ko ta, mà nếu đã vẽ khung tên bên model rùi thì in lun bên model cần gì xuất qua layout nhỉ :D, nếu đã vẽ khung bên layout mà mún lsp chọn đúg khung tên ấy để set plot area nhoc chưa nghĩ ra lsp có thể làm đc không cái này nhờ bạn KangKung nghiên cứu ^^. >>>> các yêu cầu thêm khổ giấy và set vùng in hay tỉ lệ in nhoc thấy ko cần lắm ^^.

Ps: trong trường hợp này nhoc thấy nên sử dụng lsp theo đúng yêu cầu chủ đề các bạn tạo "lsp tạo viewport từ khung chọn bên model" , các cải tiến như tùy số lượng khung xuất mỗi khung là các layout khác nhau hay chung 1 layout và chọn tỉ lệ zoom của khung view là đủ xài (khóa lun khung view sau khi tạo xong) ^^. Nếu những nhoc nói có làm phật lòng mấy bạn cũng đừng giận nhoc lâu hen, dislike là đc rùi :D

Bạn Nhoclangbat thân mến.

- lsp #30 của bạn thì ok. tuy nhiên nếu bản vẽ có 1 khung ngang nằm kề 1 khung đứng (giáp mảnh) thì nó qua layout bị chồng lên nhau.

có cách nào sửa lại cho nó qua layout dù ngang hay đứng đều cách nhau 1 khoảng là 50m không?

- còn đưa qua layout ví dụ 1 bình đồ tuyến dài. ví dụ file antay1 mà mình post lên. thì in khổ A3. nếu vẫn dùng model để in thì phải coppy từng mảnh ra rồi ráp khung ngoài vào. thì dĩ nhiên file sẽ nặng gấp 2 lần. mà qui trình làm lâu hơn. thiếu chuyên nghiệp.

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
nhoclangbat    382

Bạn Nhoclangbat thân mến.

- lsp #30 của bạn thì ok. tuy nhiên nếu bản vẽ có 1 khung ngang nằm kề 1 khung đứng (giáp mảnh) thì nó qua layout bị chồng lên nhau.

có cách nào sửa lại cho nó qua layout dù ngang hay đứng đều cách nhau 1 khoảng là 50m không?

- còn đưa qua layout ví dụ 1 bình đồ tuyến dài. ví dụ file antay1 mà mình post lên. thì in khổ A3. nếu vẫn dùng model để in thì phải coppy từng mảnh ra rồi ráp khung ngoài vào. thì dĩ nhiên file sẽ nặng gấp 2 lần. mà qui trình làm lâu hơn. thiếu chuyên nghiệp.

Cái nì nhoc chưa đủ level để xử liên hệ bạn KangKung để đc giúp đỡ ^^, nhoc mò lại thì thấy nếu có nhiều khung chọn bên model thì hình dáng khung đầu tiên mình chọn sẽ quyết định tất cả các khung còn lại cùng kích thước và hình dáng ^^ khung đầu tiên, nếu bạn KangKung có thể sữa chọn khung nào copy đúng khung đó qua layout, nhoc nghĩ cũng ko cần thiết cách nhau 50 mà thêm tùy chọn điểm chèn cho từng khung thì hay hơn. Nói vậy thui chứ nhoc ko có yêu cầu thêm đâu ^^, tạm thời vậy là đủ xài rùi ^^, khi nào đủ level tự sữa đc mới sướng :D, mà với layout nhoc cũng quen tùy chỉnh kiủ thổ rân hơn :)

Ps: nhoc cũng là dân đo đạc mà chỉ chơi địa chính hè ^^, địa hình ko chơi do bẩm sinh yếu người leo núi hem nổi @_@.

@anh Ket: làm lại phát ra tay nghĩa hiệp đi anh Ket xem như ôn luyệ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
KangKung    229

Cái nì nhoc chưa đủ level để xử liên hệ bạn KangKung để đc giúp đỡ ^^, nhoc mò lại thì thấy nếu có nhiều khung chọn bên model thì hình dáng khung đầu tiên mình chọn sẽ quyết định tất cả các khung còn lại cùng kích thước và hình dáng ^^ khung đầu tiên, nếu bạn KangKung có thể sữa chọn khung nào copy đúng khung đó qua layout, nhoc nghĩ cũng ko cần thiết cách nhau 50 mà thêm tùy chọn điểm chèn cho từng khung thì hay hơn. Nói vậy thui chứ nhoc ko có yêu cầu thêm đâu ^^, tạm thời vậy là đủ xài rùi ^^, khi nào đủ level tự sữa đc mới sướng :D, mà với layout nhoc cũng quen tùy chỉnh kiủ thổ rân hơn :)

Ps: nhoc cũng là dân đo đạc mà chỉ chơi địa chính hè ^^, địa hình ko chơi do bẩm sinh yếu người leo núi hem nổi @_@.

@anh Ket: làm lại phát ra tay nghĩa hiệp đi anh Ket xem như ôn luyện ^^

Hi anhbkhcm và Nhoclangbat

Do code viết từ đầu không để ý đến nhu cầu quái dị :D của người sử dụng là chọn cả khung đứng lẫn khung nằm nên chưa tính đến hết các trường hợp xảy ra. Lisp dưới đây đã khắc phục lỗi đó.

http://www.cadviet.c...62_mtl_rev4.lsp

  • Vote tăng 2

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
bachngoctung    11

Cám ơn cả nhà, lâu nay mình bận đi công tác. Làm hết hôm nay là được nghỉ tết rồi, tối về sẽ đọc lại hết các bài viết trong chủ đề này, xem nó được các cao thủ chỉnh sửa và hoàn thiện tuyệt hảo đến đâu :mellow:

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
nhoclangbat    382

sướng vậy nhoc phải làm hết tuần này mới đc nghỉ tết :D, lsp bạn yêu cầu giờ nó tè le rùi :D, bạn ráng chắt lọc cái nèo đúng nhu cầu 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
KangKung    229

sướng vậy nhoc phải làm hết tuần này mới đc nghỉ tết :D, lsp bạn yêu cầu giờ nó tè le rùi :D, bạn ráng chắt lọc cái nèo đúng nhu cầu nhé ^^

Cái mới nhất có bổ sung thêm phần chọn file khung tên để xref cho tất cả các Layout nhưng chưa post. Cái này chắc nhiều bác cần :D

  • Vote tăng 4

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
khaosatheco    2

Chào các bác KangKung và Nhoclangbat

Lsp #30 và #54 của các bác chạy rất tốt nếu khung chọn bên model là hình chữ nhật. Nhưng nếu khung chọn bên model là hình polyline kín thì lsp không chạy được.

Nhờ các bác bổ sung thêm.

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
avi612    15

cây nhà lá vườn!!!!
Cái này viết lâu rồi chỉ để dành sài...lâu ngày lên CADviet thấy bà con bàn tới nên post tham khảo.
 
 

 ;>>> SUB FUNTION <<< ;======================================================================================================================================================================= ; >>> HAM SAP XEP CAC DOI TUONG <<< (defun Soft-Value (ss / ss_t kq luu j tam) (setq ss_t (ssadd)) (repeat (sslength ss) (setq tam (ssname ss 0)) (setq j 1) (repeat (- (sslength ss) 1) (if (> (atof (cdr (assoc 1 (entget tam)))) (atof (cdr (assoc 1 (entget (ssname ss j)))))) (setq tam (ssname ss j)) ) (setq j (+ j 1)) ) (setq ss (ssdel tam ss)) (setq ss_t (ssadd tam ss_t)) ) (setq ss ss_t) ) ;======================================================================================================================================================================= ; >>> HAM XAC DINH KHUNG BAN VE <<< (defun c:kt (/ path) (setq path (getvar "dwgprefix")) (setq Drawings-Frame (getfiled ">> Select Frame Objects" path "dwg" 0)) (princ) (princ) ) ;======================================================================================================================================================================= ; >>> HAM CHEN KHUNG TEN VAO BAN VE BANG XREF <<< (defun Insert-New-Frame (pt / th thl i thi list_thi loai default old new tmode) (setq tmode (getvar "TILEMODE")) (If (= tmode 1) (Setvar "TILEMODE" 0)) (setvar "INSUNITS" 4) (command "xref" "a" Drawings-Frame pt 1 1 0) (command ".zoom" "e") ) ;======================================================================================================================================================================= ; >>> HAM THAY DOI GIA TRI Customscale CUA HANG LOAT Viewport <<< (defun Custom-View (Obj New-customscale / SSlen i Ename) (vl-load-com) ;(Prompt "\n>> Nhap gia tri ti le: ") ;(setq New-customscale (getreal "\n>> Nhap gia tri ti le: ")) ;(setq Obj (ssget ":N" '((0 . "VIEWPORT")))) (setq SSlen (sslength Obj)) (setq i 0) (while (< i SSlen) (setq Ename (vlax-ename->vla-object (ssname Obj i))) (vla-put-customscale Ename New-customscale) (setq i (1+ i)) ) ) ;======================================================================================================================================================================= (defun VT-AddLayer(Lname Ltype Color Desc / *kpblc-activedoc* layer) (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object))) (setq layer (vla-add (vla-get-layers *kpblc-activedoc*) Lname)) (vla-put-Linetype layer Ltype) (vla-put-color layer Color) (vla-put-Description layer Desc) ;(vla-put-Lineweight layer Lweight) (princ) (princ) ) ;======================================================================================================================================================================= ;>>> MAIN FUNTION <<< (defun c:dlo (/ cl #Tilemode ss Insert-point X-Point Y-Point i OSluu entkhung entp Insert-point P1-frame P2-frame vieww tle new-scale) (command "undo" "be") (setq cl (getvar "CLAYER")) (setvar "cmdecho" 0) (setvar "blipmode" 0) (setq #Tilemode (getvar "TILEMODE")) (setvar "TILEMODE" 1) ;(Prompt "\nCh\U+1ECDn b\U+1EA3n v\U+1EBD khung tên") ;(setq path (getvar "dwgprefix")) ;(setq Drawings-Frame (getfiled "Ch\U+1ECDn b\U+1EA3n v\U+1EBD khung tên" path "dwg" 0)) (if (= Scale-Draw nil) (setq Scale-Draw2 5) (setq Scale-Draw2 Scale-Draw)) (setq Scale-Draw (getreal (strcat "\n - Nh\U+1EADp t\U+1EF7 l\U+1EC7 b\U+1EA3n v\U+1EBD: 1/<" (rtos Scale-Draw2 2 1) ">"))) (if (= Scale-Draw nil) (setq Scale-Draw Scale-Draw2)) (setq ss (ssget (list (cons 0 "TEXT") (cons 8 "sttchonkhung")))) (setq ss (Soft-Value ss)) (setvar "TILEMODE" 0) (setq Insert-point (getpoint "\n - Ch\U+1ECDn \U+0111i\U+1EC3m b\U+1EAFt \U+0111\U+1EA7u r\U+1EA3i: ")) (setq X-Point (car Insert-point)) (setq Y-Point (cadr Insert-point)) (setq Num-Frame (sslength ss)) (setq i 0) (if (= Drawings-Frame nil) (c:kt)) (setq OSluu (getvar "OSMODE")) (setvar "OSMODE" 0) (while (< i Num-Frame) (setq entkhung (ssname ss i)) (setq entp (cdr (assoc 11 (setq entam (entget entkhung)))));Diem chen cua Text (setq Insert-point (list (+ X-Point (* i 420)) Y-Point)) ;===== Chen khung ten bang lenh Xref ===== (Insert-New-Frame Insert-point) ;===== Ve khung viewport ===== (setq P1-frame (list (+ (car Insert-point) 27) (+ (cadr Insert-point) 41))) (setq P2-frame (list (+ (car Insert-point) 407) (+ (cadr Insert-point) 286))) (if (= (tblsearch "layer" "Defpoints") nil) ;(command ".-layer" "M" "Defpoints" "C" 250 "" "") (VT-ADDLAYER "Defpoints" "Continuous" 250 "Hide Frame") ) (setvar "CLAYER" "Defpoints") (command ".mview" P1-frame P2-frame) (setq vieww (entlast)) (command ".mspace") (command ".zoom" "c" entp 245);ZOOM 1:1 (setq tle (/ 1 Scale-Draw)) (setq new-scale (strcat (rtos tle 2 5) "XP"));ZOOM CUSTOME (command ".zoom" new-scale) (command ".pspace") (command ".zoom" "o" vieww "") (setq i (1+ i)) ) (setvar "CLAYER" cl) (setvar "OSMODE" OSluu) ;(alert "Lisp chay xong") (command ".zoom" "e") (command ".undo" "e") (Prompt (strcat "Chay xong " (rtos Num-Frame 2 0) " khung")) (princ) )

 
 
 Lisp này cũng có cái bất tiện là phải tạo 1 layer có tên là "sttchonkhung" để tạo trước các khung hình chữ nhật bên model sau đó mới tiến hành lệnh DLO.
Đang làm cái video cho bà con...khi nào xong sẽ post lên.
@Video hướng dẫn: http://www.youtube.com/watch?v=2A0JVh1GeYc
---------------------------------
Lâu ngày không ghé.. giờ forum nâng cấp khác quá nên post lisp ko quen...ai sửa lại giúp nhá. Chỉnh sửa theo avi612
  • Vote tăng 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
KangKung    229

Bạn khaosatheco thân mến.

Lisp #54 vẫn chạy được nếu polyline kín của bạn chỉ có 5 điểm hoặc có 4 điểm đầu tiên trùng với 4 góc của khung hình chữ nhật. Tuy nhiên tôi đã sửa lại theo ý của bạn là chọn polyline kín thì lisp vẫn chạy được. Thậm chí nếu polyline có hình loằng ngoằng thì lisp vẫn tạo cho bạn viewport bao kín hình polyline đó đúng với tỷ lệ bạn nhập vào.

http://www.cadviet.com/upfiles/3/71162_mtl_rev4i.lsp

;========LISP TAO VIEWPORT TREN LAYOUT BANG CACH CHON O MODEL========;===============REV4i=====================(defun C:mtl( / lst khung X_min Y_min X_max Y_max X index taphop)  (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)  (command "LAYOUT" "N" "Layout1")  (command "LAYOUT" "S" "Layout1")  (command "ERASE" "ALL" "")  (command "MODEL")  (setq X 0)  (command "ZOOM" "E")  (while (< index soluong)    (setq khung(ssname taphop index))    (setq lst(acet-geom-vertex-list khung))    (setq X_min 1000000000      Y_min 1000000000      X_max -1000000000      Y_max -1000000000)    (foreach a lst      (if (< (car a) X_min) (setq X_min (car a)))      (if (< (cadr a) Y_min) (setq Y_min (cadr a)))      (if (> (car a) X_max) (setq X_max (car a)))      (if (> (cadr a) Y_max) (setq Y_max (cadr a)))      )    (command "LAYOUT" "S" "Layout1")    (command "RECTANG" (list X_min Y_min) (list X_max Y_max))    (command "MOVE" (entlast) "" (list X_min Y_min) (list X 0))    (command "SCALE" (entlast) "" (list X 0) (/ 1 tyle))    (command "MVIEW" "O" (entlast))    (command "MSPACE")    (command "ZOOM" (list X_min Y_min) (list X_max Y_max))    (command "PSPACE")    (setq X(+ X 50 (/ (abs(- X_max X_min)) tyle)))    (command "ZOOM" "W" (list 0 0) (list (+ X 100) 0))    (setq index (+ index 1))    )  (command "MODEL")  (command "UNDO" "END")  (setvar "OSMODE" 15359)  (princ)  )
  • Vote tăng 2

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
khaosatheco    2

Cảm ơn KangKung!

Lsp của #60 của bác chạy rất tốt theo yêu cầu của Khaosatheco. Tuy nhiên do Khaosatheco yêu cầu chưa đầy đủ (sorry bác) nên kết quả chưa được như ý.

Mong KangKung sửa lại để kết quả đạt được bên layout là các viewport có hình dạng giống như các polyline kín đã vẽ bên model.

File đính kèm:

http://www.cadviet.com/upfiles/3/25684_file_mau.dwg

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
nhoclangbat    382

Nhoc cũng tính sữa thử nhưng level chưa tới ^^, nhoc chỉ có thể suy luận ra hướng thui chắc anh KangKung cũng có thể hình dung ra rùi ^^, nhưng có 1 điểm cần lưu ý ở đây là nếu anh KangKung sữa xong mún lsp chạy đc thì pl khép kín mà bạn chọn phải đc khép bằng "c" vì nếu bạn vẽ khép bằng bắt điểm thì cad sẽ ko tạo đc viewport với pl bạn đã vẽ.

Ps: chờ anh KangKung ra tay vậy ^^

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
khaosatheco    2

Cảm ơn nhoclangbat. Rất nhiều bản vẽ tổng thể có nhiều chi tiết chưa cần in nên buộc phải dùng các hình Pl kín được khép bằng "c" để khoanh những khu vực cần in và tạo viewport cho chúng.

Chờ anh KangKung ra tay giúp vậy.

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
girl    5

Lisp MTL hay nhưng khi khung chọn bên model là hình chữ nhật có cạnh không song song với trục X thì không chạy được ?

Đó là trường hợp tổng quát. Mong tác giả bổ sung thêm ! thanks !

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
nhoclangbat    382

bạn cần gấp ko nhoc thử mò nãy giờ nhưng có 1 chỗ chưa làm đc ^^, bước
cuối phải thủ công tí xíu ^^ đó là điều chỉnh tỉ lệ lại cho khung view,
ví dụ tỉ lệ 1/100 nghĩa là khung view sẽ scale lên 10 lần nhưng khi bấm
vào khung view chỉ đc 9.7 mấy thui nhoc chưa tìm ra cách khắc phục,
nhưng chỉ cần chỉnh thủ công xíu đổi thành 10 thì sẽ vừa khít ngay, nhoc
cũng chỉ làm đc tới đó thui, bạn thích thì dùng thử hen ^^, hoàn hảo
thì chờ anh KangKung biggrin.png

 

;========LISP TAO VIEWPORT TREN LAYOUT BANG CACH CHON O MODEL========(defun C:mtl(/ taphop soluong size i index oldos p1)  (command "UNDO" "BE")  (setq oldos (getvar "osmode"))  (setvar "OSMODE" 1)  (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)  (while (< index soluong)(setq i 1)(setq khung(ssname taphop index))(setq lst(acet-geom-vertex-list khung))(command "COPYCLIP" khung "")(command "LAYOUT" "N" "Layout1")(command "LAYOUT" "S" "Layout1")(command "ERASE" "ALL" "")(setq p1 (getpoint "\nchon diem dat:"))(command "PASTECLIP" p1)(command "SCALE" (entlast) "" p1 (/ 1000 tyle))(command "MVIEW" "O" (entlast));;;(command "MVIEW" "L" "on" (entlast) "")(command "MSPACE")(command "ZOOM" "e")(command "PSPACE")(command "ZOOM" "E")(setq index (+ index 1)))  (command "UNDO" "END")  (setvar "OSMODE" oldos)  (princ)  )
  • Vote tăng 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
khaosatheco    2

Cái này mình ko cần gấp. Từ trước tới giờ vẫn làm thủ công. Nay tham gia diễn đàn thấy các cao thủ viết nhiều lsp hay quá nên mạnh dạn nhờ các bác giúp để bớt thủ công.

lsp của nhoc đã xử lý được khung mv là hình polyline kín đã vẽ bên model nhưng chọn nhiều khung bên model thì bên layout chỉ được 1 khung và tỷ lệ chưa đúng như Nhoc đã nói trên.

Mong các cao thủ trợ giúp tiếp. 

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
KangKung    229

Từ trước đến nay chưa thấy ai tạo viewport dị như vậy, tuy nhiên tôi vẫn sửa theo yêu cầu của bạn. Pline của bạn có kín hay không thì vẫn tạo được viewport. Lisp mới của bạn đây:

http://www.cadviet.com/upfiles/3/71162_mtl_rev4i_1.lsp

;========LISP TAO VIEWPORT TREN LAYOUT BANG CACH CHON O MODEL========;=========================REV4ii=====================================(defun C:mtl( / os lst khung X_min Y_min X_max Y_max X index taphop)  (command "UNDO" "BE")  (setq os(getvar "OSMODE"))  (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)  (command "LAYOUT" "N" "Layout1")  (command "LAYOUT" "S" "Layout1")  (command "ERASE" "ALL" "")  (command "MODEL")  (setq X 0)  (command "ZOOM" "E")  (while (< index soluong)    (setq khung(ssname taphop index))    (setq lst(acet-geom-vertex-list khung))    (setq X_min 1000000000      Y_min 1000000000      X_max -1000000000      Y_max -1000000000)    (foreach a lst      (if (< (car a) X_min) (setq X_min (car a)))      (if (< (cadr a) Y_min) (setq Y_min (cadr a)))      (if (> (car a) X_max) (setq X_max (car a)))      (if (> (cadr a) Y_max) (setq Y_max (cadr a)))      )    (command "LAYOUT" "S" "Layout1")    (command "ZOOM" "W" (list X_min Y_min) (list X_max Y_max))    (command "PLINE")    (foreach a lst      (command a))    (command "C")    (command "MOVE" (entlast) "" (list X_min Y_min) (list X 0))    (command "ZOOM" "W" (list 0 0) (list (+ X 100) 0))    (command "SCALE" (entlast) "" (list X 0) (/ 1 tyle))    (command "MVIEW" "O" (entlast))    (command "MSPACE")    (command "ZOOM" (list X_min Y_min) (list X_max Y_max))    (command "PSPACE")    (setq X(+ X 50 (/ (- X_max X_min) tyle)))    (command "ZOOM" "W" (list 0 0) (list (+ X 100) 0))    (setq index (+ index 1))    )  (command "MODEL")  (command "UNDO" "END")  (setvar "OSMODE" os)  (princ)  )

 

 

@Nhoclangbat: sử dụng lệnh copyclip và pasteclip nên tất cả các viewport đều có hình dạng giống với viewport đầu tiên.

@girl: về yêu cầu chọn hình chữ nhật không song song trục X thì phải thêm lệnh để xoay khung HCN trong model về hướng nằm ngang. Yêu cầu này không khó, mình sẽ bổ sung sau.

  • Vote tăng 4

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
nhoclangbat    382

nhoc chỉ biết thêm màu mè thui ^^, set layer cho khung view đó, khóa khung view sau khi tạo, thay đổi cách nhập tỉ lệ cho đở phải tính tóan nếu tỉ lệ lẻ ^^, như anh KangKung viết thì ví dụ tỉ lệ 1/500 thì chạy lsp sẽ hỏi khi đó bạn nhập là 0.5 tương đương 1/500 hay 0.1 = 1/100, nhoc sửa xíu bạn cứ nhập đúng tỉ lệ mún thể hiện nhập vào thẳng  200, 100 , 75 , 20  v...v. Bạn thử xem ^^

;========LISP TAO VIEWPORT TREN LAYOUT BANG CACH CHON O MODEL========;=========================REV4ii=====================================(defun C:mtll( / os lst khung X_min Y_min X_max Y_max X index taphop tyle)(command "-layer" "m" "khung" "c" 3 "khung" "")  (command "UNDO" "BE")  (setq os(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)  (command "LAYOUT" "N" "Layout1")  (command "LAYOUT" "S" "Layout1")  (command "ERASE" "ALL" "")  (command "MODEL")  (setq X 0)  (command "ZOOM" "E")  (while (< index soluong)    (setq khung(ssname taphop index))    (setq lst(acet-geom-vertex-list khung))    (setq X_min 1000000000      Y_min 1000000000      X_max -1000000000      Y_max -1000000000)    (foreach a lst      (if (< (car a) X_min) (setq X_min (car a)))      (if (< (cadr a) Y_min) (setq Y_min (cadr a)))      (if (> (car a) X_max) (setq X_max (car a)))      (if (> (cadr a) Y_max) (setq Y_max (cadr a)))      )    (command "LAYOUT" "S" "Layout1")    (command "ZOOM" "W" (list X_min Y_min) (list X_max Y_max))    (command "PLINE")    (foreach a lst      (command a))    (command "C")    (command "MOVE" (entlast) "" (list X_min Y_min) (list X 0))    (command "ZOOM" "W" (list 0 0) (list (+ X 100) 0))    (command "SCALE" (entlast) "" (list X 0) (/ 1000 tyle))    (command "MVIEW" "O" (entlast))    (command "MSPACE")    (command "ZOOM" (list X_min Y_min) (list X_max Y_max))    (command "PSPACE")	(command "MVIEW" "L" "on" (entlast) "")    (setq X(+ X 50 (/ (- X_max X_min) (/ tyle 1000))))    (command "ZOOM" "W" (list 0 0) (list (+ X 100) 0))    (setq index (+ index 1))    )  (command "MODEL")  (command "UNDO" "END")  (setvar "OSMODE" os)  (princ)  )
  • Vote tăng 3

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
KangKung    229

Đọc code chưa hiểu dùng xmin ymin xmax ymax làm gì ^^

1. Dùng điểm (Xmin Ymin) và (Xmax Ymax) để zoom khung nhìn cho viewport bằng đúng tỉ lệ nhập vào.

2. Dùng để tính điểm đặt cho viewport.

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
KangKung    229

Lisp MTL hay nhưng khi khung chọn bên model là hình chữ nhật có cạnh không song song với trục X thì không chạy được ?

Đó là trường hợp tổng quát. Mong tác giả bổ sung thêm ! thanks !

 

Lisp mới tạo viewport cho tất cả hình chữ nhật có cạnh nằm ngang, đứng, ... ngồi biggrin.png hoặc nghiêng. Sơ qua về các đặc điểm của Lisp này:

1. Tạo viewport cho tất cả các khung hình chữ nhật

2. Thêm lựa chọn Xref khung tên bản vẽ

3. Các viewport được sắp xếp theo phương đứng thay vì phương ngang như các Lisp trước

Bác nào có nhu cầu thì down về rồi test thử và cho ý kiến nhé.

http://www.cadviet.com/upfiles/3/71162_mtl_rev5.lsp

P/S: Lisp này sẽ giảm rất nhiều thao tác và thời gian cho những ai biên tập bản đồ khu vực rộng đặc biệt là bản đồ dạng tuyến. 

@Nhoclangbat: Sẽ post Lisp theo yêu cầu của nhoc sau nhé.

  • Vote tăng 4

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
tientracdia    11

Cám ơn Bạn, rất hay kể cả khi chọn một lượt tất cả khung.

Mình có một yêu cầu là bạn cho tạo lưới khung tọa độ mắt lưới khung cho các hình vừa chọn trên cho đúng yêu cầu xuất bản đồ,.. được chứ bạ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
nhoclangbat    382

:D topic nì đã vượt quá ngoài yêu cầu đơn thuần của chủ top phát triển ko ngừng ^^, có khả năng chắc sẽ đụng nóc "warnings" ^^

- Thế bạn mún tạo lưới bên model hay layout nhỉ, nhoc nghĩ có lẽ ko nên trên 4rum cũng có nhiều lsp chạy mắt lưới tọa độ rùi, bạn kím 1 cái về dùng kết hợp lsp anh KangKung chứ chạy 1 lúc hết mệt ah nha, có lần nhoc thử 1 lsp cũng nhiều chức năng máy nhoc đơ như cây cơ lun ^^. Có thể do máy nhoc già rùi ko chịu nổi cường độ cao nữa :D

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


×