Đến nội dung


Hình ảnh
- - - - -

[Hỏi] Cách thức đo góc theo kiểu trái-giữa-phải trong autolisp


  • Please log in to reply
14 replies to this topic

#1 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 01 January 2015 - 04:25 PM

Chào các bác!

Em đang định viết chương trình tự động đo góc được thể hiện theo chiều trái – giữa – phải từ 3 điểm. Kiểu thể hiện đo góc sẽ được ghi mũi tên theo đúng chiều trái – giữa – phải đó với bán kính thể hiện nhất định do người nhập vào (khoảng cách từ tâm góc đến vị trí text thể hiện góc). Sau khi thể hiện được góc đó thì em muốn sửa nội dung của Dimension đó (entlast) và cho vào 1 giá trị mới (entmod) thì cách thức viết sẽ được viết như thế nào ạ?

Có được Module nhỏ này em sẽ áp dụng vào bài toán rộng hơn vào chuyên ngành của mình các bác ạ! Cảm ơn các bác nhiều!

36665_455.jpg


  • 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







#2 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 01 January 2015 - 05:37 PM

Vấn đề làm sao cho Lisp hiểu đầu nào là Trái, đầu nào là phải?

Cái này có thể sử dụng Dimension đo góc (DIMANGULAR) là được!


  • 0

#3 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 01 January 2015 - 05:55 PM

Vấn đề làm sao cho Lisp hiểu đầu nào là Trái, đầu nào là phải?

Cái này có thể sử dụng Dimension đo góc (DIMANGULAR) là được!

Em sẽ cấp cho Lisp 3 tọa độ theo thứ tự anh ạ!

Anh có thể viết 1 đoạn phương thức đượ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







#4 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 01 January 2015 - 07:47 PM

Em tham khảo ví dụ trong Help :

(vl-load-com)
(defun c:Example_AddDimAngular()
;; This example creates an angular dimension in model space.
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))

;; Define the dimension
(setq angVert (vlax-3d-point 0 5 0)
FirstPoint (vlax-3d-point 1 7 0)
SecondPoint (vlax-3d-point 1 3 0)
TextPoint (vlax-3d-point 3 5 0))

;; Create the angular dimension in model space
(setq modelSpace (vla-get-ModelSpace doc))
(setq dimObj (vla-AddDimAngular modelSpace angVert FirstPoint SecondPoint TextPoint))
(vla-ZoomAll acadObj)
)

Em nghiên cứu 3 tọa độ trong ví dụ trên:

FirstPoint (1 7 0)
SecondPoint (1 3 0)
TextPoint (3 5 0)

(vl-load-com)
(defun c:Example_AddDimAngular()
    ;; This example creates an angular dimension in model space.
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    
    ;; Define the dimension
    (setq angVert (vlax-3d-point 0 5 0)
          FirstPoint (vlax-3d-point 1 7 0)
          SecondPoint (vlax-3d-point 1 3 0)
          TextPoint (vlax-3d-point 3 5 0))
  
    ;; Create the angular dimension in model space
    (setq modelSpace (vla-get-ModelSpace doc))
    (setq dimObj (vla-AddDimAngular modelSpace angVert FirstPoint SecondPoint TextPoint))
    (vla-ZoomAll acadObj)
)

  • 1

#5 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 01 January 2015 - 09:53 PM

Em tham khảo ví dụ trong Help :

(vl-load-com)
(defun c:Example_AddDimAngular()
;; This example creates an angular dimension in model space.
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))

;; Define the dimension
(setq angVert (vlax-3d-point 0 5 0)
FirstPoint (vlax-3d-point 1 7 0)
SecondPoint (vlax-3d-point 1 3 0)
TextPoint (vlax-3d-point 3 5 0))

;; Create the angular dimension in model space
(setq modelSpace (vla-get-ModelSpace doc))
(setq dimObj (vla-AddDimAngular modelSpace angVert FirstPoint SecondPoint TextPoint))
(vla-ZoomAll acadObj)
)

Em nghiên cứu 3 tọa độ trong ví dụ trên:

FirstPoint (1 7 0)
SecondPoint (1 3 0)
TextPoint (3 5 0)

(vl-load-com)
(defun c:Example_AddDimAngular()
    ;; This example creates an angular dimension in model space.
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    
    ;; Define the dimension
    (setq angVert (vlax-3d-point 0 5 0)
          FirstPoint (vlax-3d-point 1 7 0)
          SecondPoint (vlax-3d-point 1 3 0)
          TextPoint (vlax-3d-point 3 5 0))
  
    ;; Create the angular dimension in model space
    (setq modelSpace (vla-get-ModelSpace doc))
    (setq dimObj (vla-AddDimAngular modelSpace angVert FirstPoint SecondPoint TextPoint))
    (vla-ZoomAll acadObj)
)

Dạ, em cảm ơn anh Tue_NV.
 


  • 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







#6 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 02 January 2015 - 06:53 AM

Cảm ơn anh Tue_NV nhé! Em đã làm được rồi. Nhưng lại theo kiểu khác anh ạ.

 

Code như anh thì em viết hàm con thế này

(vl-load-com)
(defun VD1G1 ( P_Cen P_Trai P_Phai BKR  / P_Text TextPoint  )

(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))
(setq   angVert     (vlax-3d-point P_Cen)
	FirstPoint  (vlax-3d-point P_Trai)
	SecondPoint (vlax-3d-point P_Phai)
	   TextPoint(vlax-3d-point (polar P_Cen (+ (angle P_Cen P_Phai) (/ Pi 4)) BKR))
 )

;; Create the angular dimension in model space
(setq modelSpace (vla-get-ModelSpace doc))
(setq dimObj (vla-AddDimAngular modelSpace angVert FirstPoint SecondPoint TextPoint))
)

Nhưng nó không đo được góc lớn hơn 180 độ

 

Thế nên em lại dùng theo cách thủ công

(defun DV1G (P_Cen  P_Trai  P_Phai  BKR  / P_Text )
(setvar "OSMODE" 0)
(setq P_Text (polar P_Cen (+ (angle P_Cen P_Phai) (/ pi 4)) BKR))
(command "dimangular" "" P_Cen P_Trai P_Phai P_Text)
)

Các bác góp ý cho em hàm trên cùng để nó đo được góc lớn hơn 180 được không ạ?

Cảm ơn các bác nhiều!


  • 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







#7 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 02 January 2015 - 09:01 AM

Sửa này xem:

vla-AddDimAngular

Thành:

vla-AddDim3PointAngular


  • 1

* 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.


#8 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 02 January 2015 - 09:23 AM

Sửa này xem:

vla-AddDimAngular

Thành:

vla-AddDim3PointAngular

Thật tuyệt vời bác Hạ à! Em cảm ơn bác nhiều!

:wub:


  • 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







#9 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 02 January 2015 - 09:27 AM

Bác cho em hỏi ké 1 chút là 

(Chr ?) thì mã Ascii là dấu nháy kép ( " ) ạ? Trong phần độ phút em tìm đc là (chr 176) = "    ° '',  (chr 39) = " ' ''


  • 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







#10 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 02 January 2015 - 09:31 AM

34


  • 1

* 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.


#11 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 02 January 2015 - 09:37 AM

Hic hic. Chắc tại lúc nãy em làm kiểu gì mà ko đc.

Dạ, em cảm ơn bác Hạ lần nữa ạ!


  • 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







#12 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 02 January 2015 - 09:38 AM

Bác cho em hỏi ké 1 chút là 

(Chr ?) thì mã Ascii là dấu nháy kép ( " ) ạ? Trong phần độ phút em tìm đc là (chr 176) = "    ° '',  (chr 39) = " ' ''

 

Em dùng (ascii "\"") là biết mã rồi


  • 1

#13 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 02 January 2015 - 09:49 AM

Em dùng (ascii "\"") là biết mã rồi

Ôi! Tuyệt vời anh ạ!

Tại vì dấu " đặc biệt quá nên em ko Test được. Thêm cái \ OK luôn. ^^

Cảm ơn anh Tue_NV


  • 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







#14 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 05 January 2015 - 09:48 AM

Search ascii table ra đủ cả

http://www.asciitable.com/


  • 0

#15 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 05 January 2015 - 10:05 AM

Search ascii table ra đủ cả

http://www.asciitable.com/

Em cũng tìm dc cái này rồi, nhưng loay hoay thế nào khi test lại ko ra. Với lại khi tra phải có internet. ^^

Dc anh Tue_NV chỉ cho cách là ok rồi ạ


  • 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