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

#81 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 27 February 2013 - 11:07 AM

ah nhoc quên là bên model tất cả đều là tỉ lệ 1:1  nha anh, chỉ khi chọn khung đó rùi qua layout mới mang các tỉ lệ kia ^^

104473_22222222_2.jpg


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

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








#82 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 February 2013 - 11:36 AM

Bạn cho mình 1 file mẫu ứng dụng lisp mtll này ra một sản phẩm của bạn được chứ.

Cám ơn nhe.


  • 0

#83 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 February 2013 - 03:04 PM

 
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.c...62_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é.

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

----------------------------------------

Nhờ bạn sửa giúp :

3.1 Để tiện cho việc đánh số tờ, khi chọn các khung hình chử nhật, lisp tính tổng các khung, đánh số từng khung , ghi số 01/ tổng khung ( n) , 2/ n, ..vào giữa từng khung, xoay theo chiều khung .

3.2 Việc sắp xếp các  viewport theo vị trí tương đối của các hình chử nhật trên mặt bằng tổng thể, thể hiện chiều ngang và doc. Mục đích để xem xét thứ tự bản vẽ trách nhầm lẫn.

Mong được bạn giúp. Cám ơn


  • 0

#84 Truong_AAn

Truong_AAn

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 314 Bài viết
Điểm đánh giá: 68 (tàm tạm)

Đã gửi 27 February 2013 - 04:35 PM

Mình có 2 khung như hình bên dưới sao mình dùng các lisp trên đều không xuất được sang layuot mong các bạn giúp đỡ.

http://www.cadviet.c.../106444_mau.dwg

 

 

 


  • 0
Hình đã gửi
----------------------------------------------------------------------------------//-------------------------------------------------------------------------------------

#85 Truong_AAn

Truong_AAn

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 314 Bài viết
Điểm đánh giá: 68 (tàm tạm)

Đã gửi 28 February 2013 - 09:47 AM

Mình dùng lisp của nhoclangbat và của bạn KangKung o #19 cad đều báo lỗi là

 

Select objects: Specify opposite corner: 206 found
Select objects:
 Ten lay out: <Layout> a
 Ty le: <1>
 Kho giay in A0/A1/A2/A3/A4?: a4
; error: bad argument type: fixnump: nil

Nhoc với bác KngKung xem giúp mình nha. mình dung cad10


  • 0
Hình đã gửi
----------------------------------------------------------------------------------//-------------------------------------------------------------------------------------

#86 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 28 February 2013 - 10:32 AM

Mình dùng lisp của nhoclangbat và của bạn KangKung o #19 cad đều báo lỗi là

 

Select objects: Specify opposite corner: 206 found
Select objects:
 Ten lay out: <Layout> a
 Ty le: <1>
 Kho giay in A0/A1/A2/A3/A4?: a4
; error: bad argument type: fixnump: nil

Nhoc với bác KngKung xem giúp mình nha. mình dung cad10

-Lý do lỗi là bạn quét chọn tất cả khung lẫn chi tiết trong khung >>> nên nó hem tạo đc thui, chỉ chọn khung thôi bạn nha, cái ni nếu anh KangKung thêm vào đc cho nó lọc ra chỉ nhận mỗi rectang thì có thể quét hết ^^, nhưng cái ni nhoc nghĩ cũng hơi rối nhiều bạn tạo khung bằng pline ko phải rec nên nhoc nghĩ cũng khó để mà lọc nhỉ ^^ >>>> chịu khó kỹ 1 chút chọn đúng khung đừng quét all là đc ^^


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

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








#87 KangKung

KangKung

    biết lệnh array

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

Đã gửi 28 February 2013 - 10:36 AM

Bạn dùng Lisp #54, #67 hoặc #73 đều được. Mình down bản vẽ của bạn về chạy thử vẫn được mà.

Lisp #19 cũ rồi không có tính năng lọc riêng đối tượng Polyline nên phải chọn riêng từng khung một còn Lisp mới nhất đã lọc riêng đối tượng là Polyline và bạn có thể chọn khung bằng cách quét chọn tuy nhiên chỉ quét chọn những đối tượng polyline là khung hình chữ nhật muốn tạo viewport thôi nhé, đừng chọn các polyline khác.


  • 0

#88 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 28 February 2013 - 10:40 AM

anh KangKung xem hình minh họa nhoc đưa lên chưa anh ^^


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

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








#89 Truong_AAn

Truong_AAn

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 314 Bài viết
Điểm đánh giá: 68 (tàm tạm)

Đã gửi 28 February 2013 - 11:13 AM

MÌnh có ý tưởng thế này không biết có làm được không bạn nhỉ.

- Để tránh rắc rối ở phần chọn khung polyline hình chữ nhật và các polyline khác thì mình qui định nó bằng layer luôn. Tức là khi mình quét chọn thì nó chỉ nhận những khung hình chữ nhật có layer đã được chọn giống như lisp in nhiều bản vẽ của bác nguyentuyen86 ( tức là fit to paper)

- Trong một windown có 2 loại khung là khung đứng và khung ngang nên khi xuất phải tách ra 2 loại khổ giấy bên layuot vậy mình sẽ buộc cad phải phân biệt 2 loại khung này và xuất ra 2 layuot đứng và ngang (vd layuot 1 là đứng layuot 2 là ngang)

 Không biết có làm được không các bạn nhể.


  • 0
Hình đã gửi
----------------------------------------------------------------------------------//-------------------------------------------------------------------------------------

#90 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 28 February 2013 - 01:32 PM

-Ý thứ nhất nhoc nghĩ anh KangKung làm đc ^^ >>> chờ

-Ý thứ 2 trong topic này đã có lsp xuất riêng từng layout nhưng nhoc ko nhớ nỗi trang nào :D


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

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








#91 KangKung

KangKung

    biết lệnh array

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

Đã gửi 28 February 2013 - 01:45 PM

MÌnh có ý tưởng thế này không biết có làm được không bạn nhỉ.

- Để tránh rắc rối ở phần chọn khung polyline hình chữ nhật và các polyline khác thì mình qui định nó bằng layer luôn. Tức là khi mình quét chọn thì nó chỉ nhận những khung hình chữ nhật có layer đã được chọn giống như lisp in nhiều bản vẽ của bác nguyentuyen86 ( tức là fit to paper)

- Trong một windown có 2 loại khung là khung đứng và khung ngang nên khi xuất phải tách ra 2 loại khổ giấy bên layuot vậy mình sẽ buộc cad phải phân biệt 2 loại khung này và xuất ra 2 layuot đứng và ngang (vd layuot 1 là đứng layuot 2 là ngang)

 Không biết có làm được không các bạn nhể.

Bạn Truong_AAn thân mến. Xin trả lời câu hỏi của bạn như sau:

1. Việc chọn khung polyline hình chữ nhật có chi mà rắc rối. Bạn muốn chọn tất cả các khung ở một layer nào đó thì chỉ việc bật một mình layer đó lên thôi cần gì phải thêm code để lọc. Viết code để làm được điều này cũng không khó tuy nhiên không phải ai cũng muốn chọn kiểu như vậy nên tốt nhất bạn làm theo cách vừa nói là chỉ bật một layer chứa các khung hình chữ nhật là OK. Hơn nữa nếu chọn theo Layer thì lại phải thêm 1 bước nữa là nhập tên Layer chứa khung sẽ gây phiền phức thêm.

2. Cách đặt khung đứng hoặc khung nằm thì một trong số các lisp đã post trước đây đã làm được việc đó, bạn chịu khó tìm lại sẽ thấy. Mỗi người có một cách trình bày khác nhau, có người muốn giữ nguyên khung đứng lẫn khung ngang còn có người lại muốn khung đứng hay ngang thì đều xoay ngang hết. Có người muốn đặt tất cả viewport cùng một Layout, có người lại muốn đặt mỗi viewport một layout. Tất cả những việc đó đều đã có Lisp làm được rồi. 

Riêng tôi thì khi làm bản vẽ thì khung đứng, ngang, hay khung xiên tôi đều đưa về khung ngang bên layout và mỗi khung đặt riêng một layout. Vì thế Lisp tôi đang dùng có thêm chức năng tự tìm kiếm máy in và hỏi người dùng muốn chọn máy in nào, khổ giấy ra sao nữa. Nếu bạn muốn như vậy thì tôi sẽ gửi cho bạn Lisp đó.


  • 2

#92 KangKung

KangKung

    biết lệnh array

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

Đã gửi 28 February 2013 - 02:08 PM

anh KangKung xem hình minh họa nhoc đưa lên chưa anh ^^

Hi Nhoclangbat

Mình xem hình minh họa nhoc post lên rồi nhưng chưa hiểu ý đồ của nhoc lắm. Tuy nhiên mình nghĩ việc này nhoc tự làm được mà. Nhoc thử modify cái lisp mình gửi theo ý của nhoc xem sao. Nhoc muốn gì thì nhoc là người hiểu rõ nhất phải không? Mình nghĩ code Lisp trong file mình gửi cho nhoc đủ để làm việc đó, nhoc chỉ việc thay đổi thứ tự của nó đi thôi là được.


  • 0

#93 anhbkhcm

anhbkhcm

    biết vẽ circle

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

Đã gửi 02 March 2013 - 01:30 AM

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.
 

avi612 thân mến !

mình dùng lsp của bạn nhung nó không nhận khung khi chọn.

bạn có thể upload file dwg lên cho mình test xem được không?


  • 0

#94 khaosatheco

khaosatheco

    biết vẽ circle

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

Đã gửi 29 April 2013 - 06:55 PM

Chào cả nhà

Sau mấy công trình đã sử dụng lisp của bác KangKung mình thấy có 1 vài yêu cầu nhờ bác KangKung và các bác trên diễn đàn chỉnh sửa, bổ sung:

1. Sau khi chạy lisp mtll các VIEWPORT được tạo tự xoay sao cho Polyline định hướng nằm theo phương ngang.

2. Điền lý trình đầu và cuối đoạn giáp lai (như hình vẽ).

3. Điền lý trình đoạn tuyến vào khung tên.

;========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 xref(getstring "\n Ban co muon chen file khung ten hay khong? <Y/N>:"))
  (if (= (strcase xref) "Y")
    (progn
      (if (not Path)
	(setq Path(getvar "dwgprefix")))
      (setq xrefFile(getfiled "Chon File khung ten" Path "dwg" 2))
      (setq Path xrefFile)))
(setq xref1(getstring "\n Ban co muon chen bang ky hieu dia vat khong? <Y/N>:"))
  (if (= (strcase xref1) "Y")
    (progn
      (if (not Path)
	(setq Path1(getvar "dwgprefix")))
      (setq xrefFile1(getfiled "Chon File ky hieu" Path "dwg" 2))
      (setq Path1 xrefFile1
)))
  (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 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" ten)
    (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))
    (if (= (strcase xref) "Y")
      (command "xref" "A" xrefFile (list (- X 50) -50) "" "" ""))
    (command "SCALE" (entlast) "" (list (- X 50) -50) 1)
 (if (= (strcase xref1) "Y")
      (command "xref" "A" xrefFile1 (list (- X 40) 200) "" "" ""))
    (command "SCALE" (entlast) "" (list (- X 40) 200) 1)
    (command "MSPACE")
    (command "ZOOM" (list X_min Y_min) (list X_max Y_max))
    (command "PSPACE")
(if (= (strcase xref) "Y")    
    (command "TEXT" "J" "MR" (list (+ X 318) -43.85) 1.5 "0" "1/" ""))
(if (= (strcase xref) "Y")
    (command "TEXT" "J" "ML" (list (+ X 318.5) -43.85) 1.5 "0" (rtos tyle 2 0) ""))
    (command "MVIEW" "L" "on" (entlast) "")
    (setq X(+ X 380))
    (command "ZOOM" "W" (list 0 0) (list (+ X 100) 0))
    (setq index (+ index 1))
    )
  (command "MODEL")
  (command "UNDO" "END")
  (setvar "OSMODE" os)
  (princ)
  )

 

http://www.cadviet.c...file_bv_mau.dwg

http://www.cadviet.c...angkyhieu_1.dwg

http://www.cadviet.c...khung_ten_1.dwg


  • 0

#95 KangKung

KangKung

    biết lệnh array

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

Đã gửi 30 April 2013 - 08:56 PM

Lisp tạo Layout hàng loạt cho bản đồ dạng tuyến.

http://www.cadviet.c...3/71162_tlo.zip

File đính kèm là bản vẽ + khung tên + Lisp để cho bác nào có nhu cầu thì dùng thử rồi cho ý kiến để hoàn thiện Lisp nhé. Đang viết dở nên chưa post code lên. Khi nào hoàn thành bản cuối cùng sẽ chia sẻ cho các bác. Đây chỉ là bản Demo thôi. Bản vẽ dùng để Test là của bạn Khaosatheco. 

Sơ qua về Lisp tí:

1. Lệnh TLO để chạy. Hộp thoại hiện ra như sau:

71162_tlo.jpg

2. Sau đó chọn máy in, khổ giấy, Style

3. Chọn Khung View và tim tuyến bên Model

4. Có thể lựa chọn khung tên Xref hoặc Block

5. Có thể in ngay ra máy in nhưng chương trình sẽ dừng lại ở phần tạo ra các layout để người sử dụng kiểm soát lỗi trước khi in ấn.

6. Sau khi chạy Lisp sẽ điền Lý trình đầu cuối và Lý trình đoạn tuyến vào khung tên, đồng thời tự động đánh số bản vẽ. 

7. Khi chọn khung view bên Model cho dù có chọn xuôi hay ngược thì khi sắp xếp Layout, bản vẽ có lý trình nhỏ sẽ xếp trước sau đó tăng dần đến lý trình lớn nhất.

Vài dòng giới thiệu thế, các bác dùng thử rồi Test lỗi hộ nhé.


  • 1

#96 khaosatheco

khaosatheco

    biết vẽ circle

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

Đã gửi 01 May 2013 - 10:09 AM

Ngày nghỉ mà bác KangKung vẫn nhiệt tình giúp đỡ các thành viên. Xin chân thành cảm ơn Bác.

Về lisp TLO, Khaosatheco nhờ bác bổ sung 1 số ý kiến:

1. Tỷ lệ 2000 -> Ok. Nhưng 1/1000 thì tỷ lệ khung tên chưa khớp với khung MV.

2. Phần chọn khung View: khaosatheco có yêu cẩu hơi dị là bổ sung tùy chọn khung là polyline kín có hình bất kỳ không nhất thiết là chữ nhật. Khi ra kết quả bên layout thì hình polyline kín này được quay sao cho polyline định hướng nằm ngang theo chiều bản vẽ và điền lý trình đầu, cuối vào vị trí tương ứng giống như file BV mẫu mà khaosatheco đã gửi.

3. Phần chọn tuyến: Bổ sung thêm phần khai báo tuyến gồm: chọn tuyến, chọn điểm đầu tuyến, nhập lý trình điểm đầu tuyến

4. Kết quả: Text ghi lý trình đoạn tuyến trong khung tên đặt thấp hơn 1 cỡ chữ nữa để phần bên trên còn ghi thông tin khác.


  • 0

#97 NguyenNgocSon

NguyenNgocSon

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 368 Bài viết
Điểm đánh giá: 39 (tàm tạm)

Đã gửi 01 May 2013 - 11:26 AM

Theo mình chỉ cần tạo 1 Layout chứa toàn bộ các khung bao thôi !
Cái khung tên XR cần scale vừa với tỷ lệ của khung bao MV
  • 0

#98 KangKung

KangKung

    biết lệnh array

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

Đã gửi 01 May 2013 - 11:33 AM

@Khaosatheco:

1. Nói rõ hơn một chút về tỉ lệ nhé: 

Cái khung View bên Model đang để ở tỉ lệ 1/2000 nên bạn vẽ 1/1000 thì chưa khớp với khung tên là đúng. Bạn muốn vẽ 1/1000 thì phải Scale đi 0.5 lần khung view đó. Ở đây tôi lấy khung tên làm gốc rồi tính khung view bên model theo tỉ lệ bản vẽ chứ làm ngược lại là lấy khung view bên Model làm gốc rồi Scale khung tên theo là sai đó nhé.

2.  Khung view là polyline có hình bất kì thì đã có ở các lisp trước rồi, muốn bổ sung cũng được tuy nhiên sẽ quay hướng nào khi mà trong polyline đó tim tuyến thay đổi hướng liên tục?

3&4. Cái này làm được. Sắp tới sẽ bổ sung thêm các nút pick điểm lấy tọa độ đặt Text.

PS: Ngày nghỉ mà có được ở nhà đâu, đang lang thang khắp nơi, thế mới buồn. :unsure:


  • 0

#99 khaosatheco

khaosatheco

    biết vẽ circle

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

Đã gửi 01 May 2013 - 11:52 AM

@kangkung:
Khung view là hình bất kỳ thì phải có 1 polyline định hướng nối midpoint của block giáp lai. Block giáp lai này cũng chính là ranh giới của các khung view. Kangkung xem file bv-mau khaosat đã gửi.
  • 0

#100 KangKung

KangKung

    biết lệnh array

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

Đã gửi 01 May 2013 - 12:28 PM

1. Theo mình chỉ cần tạo 1 Layout chứa toàn bộ các khung bao thôi !
2. Cái khung tên XR cần scale vừa với tỷ lệ của khung bao MV

1. Tạo nhiều Layout nhằm mục đích thuận lợi cho việc in ấn. Sau khi tạo được các layout rồi người sử dụng có thể in hàng loạt bằng lựa chọn Publish hoặc giữ phím Shift (Ctrl) và chọn các layout bất kì rồi click chuột phải sau đó chọn plot là xong mà không cần phải bắt điểm để in từng bản vẽ một. Đó chính là lí do mà Lisp này hướng tới.

Bản chất Layout là dùng để in ấn và mỗi layout chỉ tương ứng với một khổ giấy thôi. Muốn in cái gì thì đặt lên khổ giấy rồi in. Các công ty nước ngoài không bao giờ họ để nhiều khung in trong 1 Layout như một số công ty ở Việt Nam đâu. Tôi quan niệm rằng Layout là một khổ giấy có giới hạn tuy nhiên có phần lề thì rộng vô cùng và một số bạn thì rất thích bố trí bản vẽ vào phần lề này thay vì bố trí sang Layout khác. Cách bố trí này cũng có thuận tiện tuy nhiên theo tôi là chưa tối ưu.

2. Bạn đang làm ngược rồi. Khung tên là gốc và khung bao bên Model phải scale theo tỉ lệ và kích thước của khung vport bên layout.

@Khaosatheco: OK đã hiểu. Các polyline định hướng này cũng chính là giao của khung bao và tim tuyến. Không cần phải thêm bước chọn đường định hướng nữa vì Lisp cũng đã biết vị trí các điểm này khi tính giao cắt.


  • 2