Chuyển đến nội dung
Diễn đàn CADViet
khanhkasu

Lisp Chỉnh sửa Xref

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

Chào Anh (Chị) diễn đàn.

Em đang làm bản vẽ autocad, em có vấn đề như sau. Mong anh (Chị) có kinh nghiệm sửa giúp em ạ.

Em vẽ cái đường thẳng, bằng cách chọn điểm 1 và điểm 2. sau đó từ điểm số 2 em sẽ xref cái hình tròn có đường kính 10mm vào (điểm số 2 cũng là tâm của đường tròn luôn). Nội dung như hình đính kèm ạ.

image.png.a40173920ae6e48114d42b64a85ec173.png

Bây giờ em muốn trim phần đường thẳng bên trong đường tròn để đường thẳng và đường tròn giao nhau tại một điểm trên đường tròn. Nội dung như hình ạ.

image.png.a5a0ab50b122a2d51f62cd7981abb739.png

Vậy em nhờ anh chị có cách nào chỉ em chỉ cần chọn điểm số 1 và số 2 là nó sẽ hiện ra hình như ở trên thì giúp em với ạ.

Em xin đính kèm cá lisp của em ạ.

;;-------------------HAM CON VE DUONG THANG TAI SITE--------------------;;
(defun CK:LineWeldF (dd)
   (if (not (tblsearch "layer" "WELDF"))
      (command "._layer" "n" "WELDF" "c" "Magenta" "WELDF" "l" "continuous" "WELDF" "")
      (command "._layer" "c" "Magenta" "WELDF" "")
   )
   (setvar "clayer" "WELDF")
   (setq d1    (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m \U+0111\U+1EA7u: ")
         d2    (getpoint d1 "\nCh\U+1ECDn \U+0111i\U+1EC3m cu\U+1ED1i: ")
   )
   (command "LINE" d1 d2 d2 \e)
)

====================================================

(defun c:HF (/ *error* d1 d2 dd)
   (setvar "Modemacro" "Cao Thanh Kh\U+00E1nh - Steel Structure - Design Division.")
   (defun *error* (msg)
      (and lst_var (mapcar 'setvar lst_var old_var))
      (TS:EndUndo (TS:acdoc))
      (if (not (wcmatch (strcase msg) "*BREAK,*EXIT*,*CANCEL*"))
         (princ (strcat "\n** @Tran Son-Error: " msg " **"))
      )
      (princ)
   )
   (TS:StartUndo (TS:acdoc))
   (setq lst_var '(CMDECHO OSMODE CLAYER)
         old_var (mapcar 'getvar lst_var)
   )
   (mapcar 'setvar '(CMDECHO OSMODE)  '(0 513))
   (CK:LineWeldF dd)
   (if (> (car d1) (car d2))
      (progn
         (vl-cmdf "_insert" "HanF.dwg" d2 (getvar "dimscale") (getvar "dimscale") 0)
         (vl-cmdf "_explode" (entlast))
      )
      (progn
         (vl-cmdf "_insert" "HanF.dwg" d2 (getvar "dimscale") (getvar "dimscale") 0)
         (vl-cmdf "_explode" (entlast))
      )
   )
   (mapcar 'setvar lst_var old_var)
   (TS:EndUndo (TS:acdoc))
   (princ)
)

==============================

Em xin cảm ơn Anh (Chị) nhiều.

Thân mế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

Bạn thay đổi bán kính theo thực tế nhé.

 

(defun CK:LineWeldF (dd)
   (if (not (tblsearch "layer" "WELDF"))
      (command "._layer" "n" "WELDF" "c" "Magenta" "WELDF" "l" "continuous" "WELDF" "")
      (command "._layer" "c" "Magenta" "WELDF" "")
   )
   (setvar "clayer" "WELDF")
   (setq d1    (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m \U+0111\U+1EA7u: ")
         d2    (getpoint d1 "\nCh\U+1ECDn \U+0111i\U+1EC3m cu\U+1ED1i: ")
   )
  (setq rad 100) ; ban kinh duong tron
  (setq ang (angle d1 d2)
    d3 (polar d1 ang (- (distance d1 d2) rad)))
   ;(command "LINE" d1 d2 d2 \e)
  (command "LINE" d1 d3 "")
)

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

Hi @gia_bach

 

Nó vẫn không ra anh ạ.

Theo mặc định em sẽ vẽ đường thẳng trước, rồi mới xref vòng tròn có đường kính 10mm vào. Chứ không phải đã có hình tròn trước anh ạ.

Anh giúp em sửa lại tí với ạ.

Em xin cảm ơn anh nhiều.

 

Thân mế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

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

×