Đến nội dung


Hình ảnh
- - - - -

lisp chuyển region sang pline!!


  • Please log in to reply
32 replies to this topic

#1 xaydung

xaydung

    biết lệnh trim

  • Members
  • PipPipPip
  • 191 Bài viết
Điểm đánh giá: 12 (tàm tạm)

Đã gửi 29 January 2008 - 11:52 AM

Các bạn ơi mình đang cần lisp có thể chuyển đối tượng region sang pline
VD: trên màn hình là 1 region, chạy lisp hỏi chọn region ,chương trình sẽ tự động chuyển region này sang pline kín
(tất nhiên region chỉ gồm arc và line)
  • 0

#2 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 30 January 2008 - 02:42 PM

Các bạn ơi mình đang cần lisp có thể chuyển đối tượng region sang pline
VD: trên màn hình là 1 region, chạy lisp hỏi chọn region ,chương trình sẽ tự động chuyển region này sang pline kín
(tất nhiên region chỉ gồm arc và line)

Có cần dùng lisp không? Bạn dùng lệnh BO tự khắc có pline kín. Region gốc ban đầu nếu không cần nữa thì cho hide hoặc del chúng đi?
Nếu bạn vẫn thích dùng lisp thì đây:
;;;-----------------------------------
(defun 1re2pl(e)
(command "explode" e "")
(command "pedit" (entlast) "y" "j" "all" "" "")
)
;;;-----------------------------------
(defun C:R2P( / ss e)
(setq ss (ssget '((0 . "REGION"))))
(while (setq e (ssname ss 0))
(1re2pl e)
(ssdel e ss)
)
(princ)
)
;;;-----------------------------------

  • 4

#3 lon ton

lon ton

    biết zoom

  • Members
  • Pip
  • 19 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 06 January 2009 - 10:53 AM

Có cần dùng lisp không? Bạn dùng lệnh BO tự khắc có pline kín. Region gốc ban đầu nếu không cần nữa thì cho hide hoặc del chúng đi?
Nếu bạn vẫn thích dùng lisp thì đây:

;;;-----------------------------------
(defun 1re2pl(e)
(command "explode" e "")
(command "pedit" (entlast) "y" "j" "all" "" "")
)
;;;-----------------------------------
(defun C:R2P( / ss e)
(setq ss (ssget '((0 . "REGION"))))
(while (setq e (ssname ss 0))
(1re2pl e)
(ssdel e ss)
)
(princ)
)
;;;-----------------------------------

Cảm ơn bác nhé, đúng thứ em đang cần!
  • 0

#4 phamthe

phamthe

    biết vẽ polygon

  • Members
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 12 June 2014 - 10:15 AM

Em muốn gộp 2 lệnh là Region (thực hiện trước) và R2P như em làm dưới đấy mà sao nó không được anh nhỉ?
(defun C:Test()
(c:Region)
(c:R2p)
)
 
 

;;;----------------------------------- (defun 1re2pl(e) (command "explode" e "") (command "pedit" (entlast) "y" "j" "all" "" "") ) ;;;----------------------------------- (defun C:R2P( / ss e) (setq ss (ssget '((0 . "REGION")))) (while (setq e (ssname ss 0)) (1re2pl e) (ssdel e ss) ) (princ) ) ;;;-----------------------------------

  • 0

#5 phamthe

phamthe

    biết vẽ polygon

  • Members
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 12 June 2014 - 10:20 AM

Em muốn gộp 2 lệnh là Region (thực hiện trước) và R2P như em làm dưới đấy mà sao nó không được anh nhỉ?

(defun C:Test() (c:Region) (c:R2p))


  • 0

#6 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 12 June 2014 - 10:30 AM

Không có hàm (C:Region) đâu nhé! Phải là (command "region")


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


#7 phamthe

phamthe

    biết vẽ polygon

  • Members
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 13 June 2014 - 08:21 AM

- tại đoạn trên ý tưởng của em là em gộp lệnh khi gõ test thì nó sẽ gọi lệnh region sau đó xong nó sẽ gọi tiếp lệnh R2P (nhưng không thành!) - ý của em là khi thực hiện lệnh: test -> chọn các đối tượng cần region (sẽ tạo thành region) -> chọn lại các đối tượng đó để chuyển thành pline close như R2P làm được đó (nếu chọn 1 lần mà nó vừa tạo region vừa chuyển thành pline close thì tốt qúa)!
  • 0

#8 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 13 June 2014 - 09:55 AM

Dùng lệnh BO thì nó tạo thành Pline.


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


#9 phamthe

phamthe

    biết vẽ polygon

  • Members
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 13 June 2014 - 02:24 PM

lệnh BO tạo 1 vài đối tượng được, nhưng nếu nhiều thì dùng region và R2P tiện hơn.
  • 0

#10 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 14 June 2014 - 09:38 AM

Lisp chuyển các đối tượng thành Region, sau đó chuyển Region về Pline.

; Doan Van Ha - CadViet.com - Ngay 14/6/2014
; Lisp: chuyen cac doi tuong thanh Region, sao do chuyen qua Pline.
(defun C:HA( / ssnho sslon ss i ent objArr)
 (vl-load-com) (setq cmd (getvar 'cmdecho)) (setvar 'cmdecho 0) (command "undo" "be")
 (setq ssnho (ssget "_X" '((0 . "REGION"))))
 (princ "\nChon cac doi tuong muon chuyen thanh Region...")
 (command "region" (ssget '((0 . "ARC,*LINE"))) "")
 (setq sslon (ssget "_X" '((0 . "REGION"))))
 (repeat (setq i (sslength ssnho))
  (ssdel (ssname ssnho (setq i (1- i))) sslon))
 (while (setq ent (ssname sslon 0))
  (setq ss (ssadd)
        obj (vlax-ename->vla-object ent)
        objArr (vlax-safearray->list (vlax-variant-value (vla-Explode obj))))
  (foreach memb objArr
   (setq ss (ssadd (vlax-vla-object->ename memb) ss)))
  (command "_.PEDIT" (ssname ss 0) "_YES" "_JOIN" ss "" "")
  (ssdel ent sslon))
 (setvar 'cmdecho cmd) (command "undo" "e") 
 (princ))
 

P/S: edit 16h 14/6/2014


  • 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 phamthe

phamthe

    biết vẽ polygon

  • Members
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 14 June 2014 - 01:12 PM

cảm ơnh anh nhiều.

tạo region xong rồi và không chuyển được thành pline close mà nó báo lỗi này là sao anh nhi?

; error: bad argument type: lselsetp nil


  • 0

#12 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 14 June 2014 - 04:01 PM

Srr, đã edit ở trên, bạn down lại. Nếu còn sự cố thì gởi bản vẽ lên nhé.


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


#13 phamthe

phamthe

    biết vẽ polygon

  • Members
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 14 June 2014 - 09:56 PM

cảm ơn anh nhiều, nhưng có lẽ nó vẫn chưa ổn với bản vẽ này. anh test thử giúp em với nhé!


  • 0

#14 phamthe

phamthe

    biết vẽ polygon

  • Members
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 14 June 2014 - 10:07 PM

116810_untitled_6.jpghttp://www.cadviet.c...10_ban_ve_1.dwg


  • 0

#15 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 14 June 2014 - 10:40 PM

Ngộ nhỉ! Tôi test trên bản vẽ của bạn thì OK tuyệt đối. Các Pline tạo thành đều kín.

Sở dĩ có 2 cặp dấu nháy là vì:

- Cặp thứ 1 để kết thúc tập hợp chọn.

- Cặp thứ 2 để kết thúc lệnh.

Chẳng hiểu do đâu mà bạn chạy thì bị lỗi?


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


#16 phamthe

phamthe

    biết vẽ polygon

  • Members
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 14 June 2014 - 11:15 PM

em cũng chẳng hiểu nữa, bây giờ thì lại được tuyệt vời. đúng là... cảm ơn anh nhiều! chúc anh ngủ ngon.


  • 0

#17 phamthe

phamthe

    biết vẽ polygon

  • Members
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 14 June 2014 - 11:46 PM

oh, bản vẽ này lại không đuợc nữa chứ, lúc nào rảnh anh coi giúp em với nhé!

error:bad argument type: lselsetp nilUnknown command "HA".  Press F1 for help.

Unknown command "HA".  Press F1 for help.

http://www.filedropper.com/drawing

 

error:bad argument type: lselsetp nilUnknown command "HA".  Press F1 for help.
Unknown command "HA".  Press F1 for help.
error:bad argument type: lselsetp nilUnknown command "HA".  Press F1 for help.
Unknown command "HA".  Press F1 for help.
error:bad argument type: lselsetp nilUnknown command "HA".  Press F1 for help.
Unknown command "HA".  Press F1 for help.

  • 0

#18 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 14 June 2014 - 11:58 PM

Gởi như hồi nãy đi. Bên này không down được.


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


#19 phamthe

phamthe

    biết vẽ polygon

  • Members
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 15 June 2014 - 12:23 AM

http://www.cadviet.c...0_drawing_2.dwg


  • 0

#20 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 15 June 2014 - 01:12 AM

Woa! Thử lại cái này chắc ổn rồi.

; Doan Van Ha - CadViet.com - Ngay 14/6/2014
; Lisp: chuyen cac doi tuong thanh Region, sao do chuyen qua Pline.
(defun C:HA( / ssnho sslon ss i ent objArr)
 (vl-load-com) (setq cmd (getvar 'cmdecho)) (setvar 'cmdecho 0) (command "undo" "be")
 (setq ssnho (ssget "_X" '((0 . "REGION"))))
 (princ "\nChon cac doi tuong muon chuyen thanh Region...")
 (command "region" (ssget '((0 . "ARC,*LINE"))) "")
 (setq sslon (ssget "_X" '((0 . "REGION"))))
 (if ssnho
  (repeat (setq i (sslength ssnho))
   (ssdel (ssname ssnho (setq i (1- i))) sslon)))
 (while (setq ent (ssname sslon 0))
  (setq ss (ssadd)
        obj (vlax-ename->vla-object ent)
        objArr (vlax-safearray->list (vlax-variant-value (vla-Explode obj))))
  (foreach memb objArr
   (setq ss (ssadd (vlax-vla-object->ename memb) ss)))
  (command "_.PEDIT" (ssname ss 0) "_YES" "_JOIN" ss "" "")
  (ssdel ent sslon))
 (setvar 'cmdecho cmd) (command "undo" "e") 
 (princ))
 


  • 2

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