Đến nội dung


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

Hỏi về Lisp (thuật toán, ý tưởng, coding,...)


  • Please log in to reply
2848 replies to this topic

#1901 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 27 September 2014 - 09:19 PM

Bạn có thể đưa 1 file ví dụ dc ko?
  • 0

#1902 hiepttr

hiepttr

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1298 Bài viết
Điểm đánh giá: 518 (tốt)

Đã gửi 28 September 2014 - 12:06 PM

-       Cách lập diện tích căn cứ vào giao đường đen và đường thiết kế (tất nhiên). Nhưng làm sao để xác định được khối lượng đào và đắp (đường nào nằm trên và nằm dưới) thì  Không biết.
Mong các bạn có ý kiến và giải pháp giúp tiếp. 

Cái này thì có thể tại mỗi điểm giao, xác định 2cặp điểm lân cận về 2 phía trên 2 đường để so sánh
  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#1903 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 29 September 2014 - 08:47 AM

Các anh cho em hỏi?

Có cách nào để biết 1 điểm (P1) nằm bên trái hay bên phải Polyline

(Cho trước điều kiện là điểm gần nhất P1 phải thuộc Polyline)

(setq PVG1 (vlax-curve-getClosestPointTo VLA:ObjPline P1))

Not

(setq PVG1 (vlax-curve-getClosestPointTo VLA:ObjPline P1 T))

Em viết thì được, nhưng em hỏi để xem có hàm nào nhanh để giải quyết nó nhanh không?

Cảm ơn các anh em.


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1904 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 29 September 2014 - 08:59 AM

Các anh cho em hỏi?

Có cách nào để biết 1 điểm (P1) nằm bên trái hay bên phải Polyline

(Cho trước điều kiện là điểm gần nhất P1 phải thuộc Polyline)

(setq PVG1 (vlax-curve-getClosestPointTo VLA:ObjPline P1))

Not

(setq PVG1 (vlax-curve-getClosestPointTo VLA:ObjPline P1 T))

Em viết thì được, nhưng em hỏi để xem có hàm nào nhanh để giải quyết nó nhanh không?

Cảm ơn các anh em.

Không có hàm sẵn đâu. Xét góc P1 PVG1 thì được. Tuy nhiên, khái niệm "trái, phải" là khá mơ hồ.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1905 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 29 September 2014 - 09:18 AM

Không có hàm sẵn đâu. Xét góc P1 PVG1 thì được. Tuy nhiên, khái niệm "trái, phải" là khá mơ hồ.

Trái hay phải Polyline thì không mơ hồ ạ

Polyline bao giờ cũng có điểm đầu điểm cuối. Giống như chúng ta đi trên đê của 1 con sông đó ạ. Có thượng lưu và hạ lưu. Khi đó sẽ có Hữu và Tả


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1906 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 29 September 2014 - 09:22 AM

Vậy thì ta làm thế này vậy ạ. Cách này em cũng nghĩ rồi.

Như bác Hạ nói đấy ạ. Xét góc PVG1_P1.

Nếu góc PVG1_P1 lớn hơn góc phân đoạn vuông góc thì điểm P1 nằm bên phải, ngược lại là bên trái.

OK. Em làm được

(setq ang3 (angle '(0 0) (Vlax-curve-getfirstderiv VlaObjPL (vlax-curve-getParamAtPoint VlaObjPL PVG1))))


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1907 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 29 September 2014 - 09:25 AM

Chẳng hạn Pline là 1 hình vuông, còn P1 là giao 2 đường chéo thì P1 nằm ở bên Tây hay bên Tàu? Nói chung, để gọi là "trái,phải" thì em cần có những "khái niệm" rõ ràng.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1908 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 29 September 2014 - 09:33 AM

Dạ, vâng. Như vậy thì nó thuộc trường hợp đặc biệt rồi ạ.

Em giải quyết bài toán nó đơn giản thôi ạ.

Có gì tí em hỏi bác 1 chút.

Cảm ơn bác đã reply


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1909 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 29 September 2014 - 09:51 AM

Vậy thì ta làm thế này vậy ạ. Cách này em cũng nghĩ rồi.

Như bác Hạ nói đấy ạ. Xét góc PVG1_P1.

Nếu góc PVG1_P1 lớn hơn góc phân đoạn vuông góc thì điểm P1 nằm bên phải, ngược lại là bên trái.

OK. Em làm được

(setq ang3 (angle '(0 0) (Vlax-curve-getfirstderiv VlaObjPL (vlax-curve-getParamAtPoint VlaObjPL PVG1))))

Quá nguy hiểm nếu như em xét góc so với '(0 0) !


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1910 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 29 September 2014 - 09:55 AM

Dạ, em thấy sai rồi ạ

Là do em chưa hiểu bản chất.

Em vừa thử nhưng kết quả ko đúng là em biết mình sai rồi.

Em đang nghĩ cách khác.

Bác có thể tư vấn cho em được không ạ?


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1911 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 29 September 2014 - 10:34 AM

Gọi A1-A2 là  phân đoạn chứa  PVG1, nếu góc (A1-A2) + pi/2 = góc (P1-PVG1) thì P1 ở bên phải của hướng A1-A2.


  • 0

#1912 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 29 September 2014 - 10:37 AM

So sánh (cos (angle P1 PVG1)) và 0


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1913 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 29 September 2014 - 11:13 AM

Lsp test. Không dùng với pline kín.

(defun c:test()
  (setq a (car (entsel "\nChon pline:")))
  (while (setq b (getpoint "\nChon diem:"))
    (setq b1 (vlax-curve-getClosestPointTo a b)
 a1 (vlax-curve-getpointAtParam a (fix (vlax-curve-getparamatPoint a b1)))
 a2 (vlax-curve-getpointAtParam a (1+ (fix (vlax-curve-getparamatPoint a b1)))))
    (if (or (equal (cos (+ (* 0.5 pi) (angle a1 a2))) (cos (angle b b1)) 0.001)
   (equal (sin (+ (* 0.5 pi) (angle a1 a2))) (sin (angle b b1)) 0.001))
      (princ "Ben Phai") (princ "Ben Trai"))
  )
  (princ)
)

  • 0

#1914 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 29 September 2014 - 11:44 AM

Gọi A1-A2 là  phân đoạn chứa  PVG1, nếu góc (A1-A2) + pi/2 = góc (P1-PVG1) thì P1 ở bên phải của hướng A1-A2.

Đúng là cách này em làm ạ. Cảm ơn anh Tot77.

 

So sánh (cos (angle P1 PVG1)) và 0

Cách này em chưa hiểu lắm bác ạ


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1915 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 29 September 2014 - 11:53 AM

Cho em hỏi 1 chút

(vlax-curve-getClosestPointTo curve-obj givenPnt [extend])

Theo em tra help thì curve-obj: The VLA-object to be measured.

Vậy curve-obj là ename hay là Object? ( vlax-ename->vla-object)

Em dùng cả 2 đều được


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1916 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 29 September 2014 - 12:00 PM

1). Đối với các hàm vlax-curve... thì dùng cả 2 đều được.

2). Bạn thử so sánh (cos (angle P1 PVG1)) với 0, xem nếu (cos...) > 0 và (cos...) < 0 thì P1 ở bên nào thôi. 


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1917 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 29 September 2014 - 12:30 PM

1). Đối với các hàm vlax-curve... thì dùng cả 2 đều được.

2). Bạn thử so sánh (cos (angle P1 PVG1)) với 0, xem nếu (cos...) > 0 và (cos...) < 0 thì P1 ở bên nào thôi. 

Dạ. Em cảm ơn bác Doan Van Ha


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1918 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 29 September 2014 - 12:55 PM

Cho em thắc mắc 1 chút.

Hàm (vlax-curve-getParamAtPoint curve-obj point)

Hàm này trả về parameter tại điểm đó. Vậy parameter  đó là gì ạ? Nó được dùng trong trường hợp nào?

Cảm ơn các bác


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1919 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 29 September 2014 - 01:00 PM

Lại 1 lần nữa em hỏi lung tung rồi. Em tìm được rồi ạ. Nó trả về phân đoạn của Polyline


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1920 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 03 October 2014 - 03:23 PM

Ai sành về cách bố trí Image vào Dialog cho tui hỏi tí. Tui bố trí nó không cân xứng.

- Có 1 hình vẽ đặt gọn trong 1 rectang kích thước w1*h1.

- Trong Dialog có 1 Tile Image có kích thước w2*h2.

Hỏi:

Cách tạo Slide và cách dùng hàm Slide_image với các thông số như thế nào để Slide nằm vừa khít trong Image?

P/S: biết w1/w2=h1/h2.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.