Đến nội dung


Hình ảnh
- - - - -

[yêu cầu] Lisp tạo Boundary ra Polyline với Layer tùy chọn


  • Please log in to reply
10 replies to this topic

#1 vetgo

vetgo

    biết vẽ polygon

  • Members
  • PipPip
  • 76 Bài viết
Điểm đánh giá: 17 (tàm tạm)

Đã gửi 27 August 2011 - 09:42 AM

Hiện e đang phải Boundary rất nhiều đối tượng với nhiều Layer khác nhau, việc chuyển qua lại việc setcurent các layer làm em rất mất thời gian, vì vậy em nhờ các bác viết hộ e 1 cái Lisp với ý tưởng như sau:
+ Gõ lệnh "B" (tương ứng như việc Boundary)
+ Chọn 1 đối tượng có Layer mong muốn
+ Kết quả: ra Polyline có Layer vừa chọn
Thank' các bác truớc!
  • 0
Nếu nội dung post là có ích, xin tick + để thăng hàm lên lương...

#2 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 27 August 2011 - 11:00 AM

Hiện e đang phải Boundary rất nhiều đối tượng với nhiều Layer khác nhau, việc chuyển qua lại việc setcurent các layer làm em rất mất thời gian, vì vậy em nhờ các bác viết hộ e 1 cái Lisp với ý tưởng như sau:
+ Gõ lệnh "B" (tương ứng như việc Boundary)
+ Chọn 1 đối tượng có Layer mong muốn
+ Kết quả: ra Polyline có Layer vừa chọn
Thank' các bác truớc!

Phải thế này không?

(defun C:B1()
(acet-sysvar-set (list "Clayer" (cdr (assoc 8 (entget (car (entsel "\nChon doi tuong de lay layer mau: ")))))))
(command "boundary" (getpoint "\nPick diem nam trong vung: ") "")
(acet-sysvar-restore))

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


#3 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 28 August 2011 - 12:17 PM

Bác ĐVH ép Boundary chỉ thực hiện 1 lần pick ? :unsure:
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#4 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 28 August 2011 - 12:31 PM

Có thể nên làm như thế này :
(defun c:b2 (/ elast lay) (setq elast (entlast) lay (cdr (assoc 8 (entget (car (entsel "\nPick an entity to gap Layer :"))))))
(command ".boundary")
(while (= (logand (getvar "CMDACTIVE") 1) 1) (command pause))
(while (setq elast (entnext elast))(vla-put-Layer (vlax-ename->vla-object elast) lay)))

  • 2

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#5 quan08

quan08

    biết vẽ pline

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

Đã gửi 28 August 2011 - 04:29 PM

Có thể nên làm như thế này :

(defun c:b2 (/ elast lay) (setq elast (entlast) lay (cdr (assoc 8 (entget (car (entsel "\nPick an entity to gap Layer :"))))))
(command ".boundary")
(while (= (logand (getvar "CMDACTIVE") 1) 1) (command pause))
(while (setq elast (entnext elast))(vla-put-Layer (vlax-ename->vla-object elast) lay)))

Thí dụ hình chữ nhật được tạo bởi 4 đoạn thẳng,3 đoạn liền nhau cùng là NETBAO còn 1 đoạn là NETTHEP thì lisp của bác sẽ đưa về cùng 1 layer,Bác có thể sửa lại giùm e nếu nhiều đoạn thẳng cùng 1 layer liền nhau thì nối lại thành BOUNDARY nét khác layer thì không?Thanks.
  • 0

#6 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 28 August 2011 - 04:42 PM

Hự, cái lisp nó tạo ra đối tượng Boundary hoàn toàn mới, là 1 PLine KHÉP KÍN, nên vấn đề bạn yêu cầu mình không thể hiểu được :unsure: Bạn đã sử dụng lệnh Boundary chưa ??
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#7 quan08

quan08

    biết vẽ pline

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

Đã gửi 28 August 2011 - 06:01 PM

Hự, cái lisp nó tạo ra đối tượng Boundary hoàn toàn mới, là 1 PLine KHÉP KÍN, nên vấn đề bạn yêu cầu mình không thể hiểu được :unsure: Bạn đã sử dụng lệnh Boundary chưa ??

Ý mình là:
1.Nếu cùng 1 layer thì nối thành 1 polyline,không cùng layer thì không nối bạn ah.
2.Nếu có thể không cùng layer vẫn nối thành 1 polyline nhưng vẫn giữ nguyên thuộc tính của layer,ví dụ có 2 layer nét liền và nét đứt khi dùng lisp nó nối thành polyline nhưng nét liền vẫn là nét liền,nét đứt vẫn là nét đứt.
Nếu 2 không được thì 1 cũng được bạn ah.Cảm ơn bạn nhiều.
  • 0

#8 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 28 August 2011 - 06:15 PM

Ý mình là:
1.Nếu cùng 1 layer thì nối thành 1 polyline,không cùng layer thì không nối bạn ah.
2.Nếu có thể không cùng layer vẫn nối thành 1 polyline nhưng vẫn giữ nguyên thuộc tính của layer,ví dụ có 2 layer nét liền và nét đứt khi dùng lisp nó nối thành polyline nhưng nét liền vẫn là nét liền,nét đứt vẫn là nét đứt.
Nếu 2 không được thì 1 cũng được bạn ah.Cảm ơn bạn nhiều.

1. Công việc của lệnh Boundary là bạn click vào 1 điểm, nó sẽ tạo vùng bằng các Pline kín hoặc Region là khoảng trống bao quanh điểm pick đó. Mình không thể biết nguyên bản xung quanh điểm bạn pick thì có những đối tượng nào, nói chi đến việc xét Layer của nó ? => Mình bó tay với yêu cầu tạo Boundary này của bạn
Bạn dùng lệnh PEDIT chưa ?? Việc bạn yêu cầu nghe giống với việc Join Pline hơn, vì đầu vào của nó là bạn cần chọn các đối tượng để thao tác, và các lisp Join Pline trên 4room kha khá rồi.

2. Bạn có thể giúp mình post lên 1 bản vẽ có Pline mà nửa đầu là liền, nửa sau là đứt không ??
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#9 hoangkimoanh

hoangkimoanh

    biết vẽ spline

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

Đã gửi 23 December 2015 - 06:53 AM

http://www.cadviet.c...103752_ho_1.lsp 

Nhờ các anh sửa giúp em thêm lực nét của boundary = 1mm với ạ!

(defun c:HO ()
(vl-load-com)
(prompt "pick diem")  
 (COMMAND "-LAYER" "m" "Ho" "color" "5" "" "") ;;; "lw" "1" 
(command "boundary" pause "") (princ))

  • 0

#10 hoangkimoanh

hoangkimoanh

    biết vẽ spline

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

Đã gửi 23 December 2015 - 08:31 AM

 

http://www.cadviet.c...103752_ho_1.lsp

Nhờ các anh sửa giúp em thêm lực nét của boundary = 1mm với ạ!

(defun c:HO ()
(vl-load-com)
(prompt "pick diem")  
 (COMMAND "-LAYER" "m" "Ho" "color" "5" "" "") ;;; "lw" "1" 
(command "boundary" pause "") (princ))

 

sao không đưa được code lên nhi


  • 0

#11 hoangkimoanh

hoangkimoanh

    biết vẽ spline

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

Đã gửi 23 December 2015 - 09:07 AM

oh, em viết được rồi, cảm ơn các anh đã quan tâm!


  • 0