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.
Đăng nhập để thực hiện theo  
khongbietthihoi

[yêu cầu] Lisp chia đoạn thẳng!

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

bạn KangKung  có thể nâng cấp chương trình dùm mình với :

 

Nếu chọn đối tượng là arc thì sẽ tự động convert đối tượng đó sang pline rùi mới thực hiện lệnh chia đoạn thẳng

 

việc này có thể thưc hiện thủ công bằng dùng pedit trước khi dùng lisp của bạn nhưng vậy thì hơi tốn công quá

 

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

Hi, mình tự mài mò sửa nhưng bị vướng chổ điều kiện cho hàm if

 

mọi người gúp mình thực hiện thêm  logicExpr của hàm if với, mình mới tìm hiểu autolisp nên ko rành lăm, ko biết điều kiện để xác định đối tượng là arc phải viết thế nào

 

 

(setq taphop(ssget '((0 . "ARC,LINE,POLYLINE,LWPOLYLINE"))))
;=======================
;start if
;if taphop is arc

(if ..........................

; moi người giúp mình logicExpr chổ này để xác định đối tượng taphop là arc

 

  (command ".pedit" "M" taphop "" "" "")

  (princ "\n Object Arc converted to Polyline, Please select this object again")

  (setq taphop(ssget '((0 . "ARC,LINE,POLYLINE,LWPOLYLINE"))))

;if taphop is not arc => don't do anything

) ;end if

;=======================

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
phamthanhbinh    3.123

Hi, mình tự mài mò sửa nhưng bị vướng chổ điều kiện cho hàm if

 

mọi người gúp mình thực hiện thêm  logicExpr của hàm if với, mình mới tìm hiểu autolisp nên ko rành lăm, ko biết điều kiện để xác định đối tượng là arc phải viết thế nào

 

 

(setq taphop(ssget '((0 . "ARC,LINE,POLYLINE,LWPOLYLINE"))))

;=======================

;start if

;if taphop is arc

 

(if ..........................

; moi người giúp mình logicExpr chổ này để xác định đối tượng taphop là arc

 

  (command ".pedit" "M" taphop "" "" "")

 

  (princ "\n Object Arc converted to Polyline, Please select this object again")

 

  (setq taphop(ssget '((0 . "ARC,LINE,POLYLINE,LWPOLYLINE"))))

 

;if taphop is not arc => don't do anything

 

) ;end if

 

;=======================

Hề hề hề,

Cứ theo cái logic của bạn là : ;if taphop is not arc => don't do anything

thì sao phải khổ vậy?????

Chỉ dơn giản là hãy chọn tập hợp chỉ bao gồm các arc là xong. Vậy thì chỉ cần  (setq taphop(ssget '((0 . "ARC"))))

  • 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

hi tại cái lisp của bạn kangkung ko dung đuoc cho arc nên mình mới dùng thủ thuật này tức ,mà bạn biêt thì chỉ mình vơi,cái này mình cung muốn biết thêm cách xác đinh đuoc đối tượng mình chon là arc như thế nào

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
quocmanh04tt    385

Bạn tham khảo:

(defun c:tt  (/ els ent ety lst sodem soptu taphop)
 (if (setq taphop (ssget '((0 . "*LINE,ARC"))))
  (progn (setq soptu (sslength taphop)
               sodem    0)
         (repeat soptu
          (setq ent (ssname taphop sodem)
                lst (assoc 0 (entget ent))
                ety (cdr lst))
          (cond ((eq ety "LWPOLYLINE") (princ (strcat "\nEm la:" ety)) (Thuc_hien_gi_do))
                ((eq ety "POLYLINE") (princ (strcat "\nEm la:" ety)) (Thuc_hien_gi_do))
                ((eq ety "LINE") (princ (strcat "\nEm la:" ety)) (Thuc_hien_gi_do))
                ((eq ety "ARC") (princ (strcat "\nEm la:" ety)) (Thuc_hien_gi_do)))
          (setq sodem (1+ sodem)))))
 (princ))
(defun Thuc_hien_gi_do () (princ ". Anh muon lam gi em?"))

+ Trong lsp của KangKung bạn có thể thay dòng này: (setq vlaobj (vlax-ename->vla-object obj)) bằng cụm này:

(if (wcmatch (cdr (assoc 0 (entget obj))) "ARC,LINE")
   (progn (command "_.PEDIT" obj "Y" "")
          (setq obj    (entlast)
                vlaobj (vlax-ename->vla-object obj)))
   (setq vlaobj (vlax-ename->vla-object obj)))

+ Sử dụng theo hướng này thì ARC sau khi chia nó không cong nữa mà thành Pline gấp khúc.

  • 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
Đỗ Hà    0

tớ mới học cad. vẽ hình đơn giản thôi bạn nào chỉ giúp tớ chia một đoạn thẳng thành nhiều đoạn nhỏ hơn????

(kích thước các đoạn không bằng nhau)

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

Xin mọi người trên diễn đàn giúp đỡ viết lisp:

Mình gặp một trường hợp trong file Cad có các đoạn thẳng có chiều dài =0. ((line (x1=x2, y1=y2) và polyline cũng có  (polyline (x1=x2, y1=y2))

mong các cao thủ trên diễn đàn viết giùm một file lisp tìm và lọc ra các đoạn thẳng đó

Đây là file Cad của mình, các lines và polylines mình đã đánh dấu trong vòng tròn màu tím, Xin cảm ơn diễn đà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

Đăng nhập để thực hiện theo  

×