Đến nội dung


Hình ảnh
- - - - -

[yêu cầu] sửa lisp nối line thành pline


  • Please log in to reply
4 replies to this topic

#1 proconeng86

proconeng86

    biết lệnh break

  • Members
  • PipPipPipPip
  • 221 Bài viết
Điểm đánh giá: -9 (bình thường)

Đã gửi 24 May 2014 - 11:09 AM

Mình có 1 lisp nối nhiều line,pline thành 1 pline duy nhất khá hay tuy nhiên nó có nhược điểm là cứ line nào dính với nhau thì nó nối hết nên nhiều khi đối tượng nối gồm nhiều đối tượng không mong muốn

Mình nhờ các bạn sửa giúp mình là cho thêm 1 lựa chọn vào lisp như sau:

   - chọn một số line,pline cần nối

   - đưa ra lựa chọn: chỉ nối những line, pline đã lựa chọn hoặc nối cả những line, pline dính với line, pline đã lựa chọn

   - kết thúc lệnh

   - mình cám ơn nhiều

 

http://www.mediafire...31/noi_line.lsp


  • 0

#2 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 24 May 2014 - 01:54 PM

Tôi thấy chọn caí nào nối cái đó cho tiện.

(defun c:nn (/ tdt ssdt)
  (defun ObjName (ssdt /)  (cdr (assoc '0 (entget ssdt))))
  (defun MoPL (ssdt /) (= (cdr (assoc '70 (entget ssdt))) 0))
  
  (defun NoiPL (ssdt tdt /)
    (if (MoPL ssdt)
      (command ".PEDIT" ssdt "J" tdt "" "")
    )
  )
  (defun NoiLC (ssdt tdt /)  (command ".PEDIT" ssdt "Y" "J" tdt "" ""))
  
  (setq tdt  (ssget)
ssdt  (ssname tdt 0))
  (if (or (= (Objname ssdt) "LWPOLYLINE")
 (= (Objname ssdt) "POLYLINE"))
    (NoiPL ssdt tdt)
    (if (or (= (Objname ssdt) "LINE") (= (Objname ssdt) "ARC"))
      (NoiLC ssdt tdt)
    )
  )
  (princ)
)

  • 1

#3 proconeng86

proconeng86

    biết lệnh break

  • Members
  • PipPipPipPip
  • 221 Bài viết
Điểm đánh giá: -9 (bình thường)

Đã gửi 24 May 2014 - 03:28 PM

Tôi thấy chọn caí nào nối cái đó cho tiện.

 

(defun c:nn (/ tdt ssdt)
  (defun ObjName (ssdt /)  (cdr (assoc '0 (entget ssdt))))
  (defun MoPL (ssdt /) (= (cdr (assoc '70 (entget ssdt))) 0))
  
  (defun NoiPL (ssdt tdt /)
    (if (MoPL ssdt)
      (command ".PEDIT" ssdt "J" tdt "" "")
    )
  )
  (defun NoiLC (ssdt tdt /)  (command ".PEDIT" ssdt "Y" "J" tdt "" ""))
  
  (setq tdt  (ssget)
ssdt  (ssname tdt 0))
  (if (or (= (Objname ssdt) "LWPOLYLINE")
 (= (Objname ssdt) "POLYLINE"))
    (NoiPL ssdt tdt)
    (if (or (= (Objname ssdt) "LINE") (= (Objname ssdt) "ARC"))
      (NoiLC ssdt tdt)
    )
  )
  (princ)
)

 

Cám ơn bạn Tot77 đã giúp đỡ nhưng mỗi cái có cái hay riêng chứ, khi có quá nhiều đối tượng cần nối hết với nhau nhưng với lisp của mình thì cần chọn 1 line cũng đã nối được rồi vẫn nhanh hơn

Bạn sửa lại lisp kia chọn cái nào nối cái đó cũng được nhưng mình phải nhớ cả 2 lệnh hơi vất vả. nên bạn có thể sửa lại như ý trên của mình được không?


  • 0

#4 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 24 May 2014 - 04:05 PM

Tôi thấy để 2 lệnh vẫn hay hơn, chứ mỗi lúc lại hỏi thì không tiện cho lắm.


  • 0

#5 proconeng86

proconeng86

    biết lệnh break

  • Members
  • PipPipPipPip
  • 221 Bài viết
Điểm đánh giá: -9 (bình thường)

Đã gửi 24 May 2014 - 04:37 PM

Tôi thấy để 2 lệnh vẫn hay hơn, chứ mỗi lúc lại hỏi thì không tiện cho lắm.

 

Uhm, nghe theo lời khuyên của bạn vậy, mình làm nhiều thì cũng sẽ nhớ lệnh thôi mà :D


  • 0