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

Viết lisp theo yêu cầu [phần 2]

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

Đây mình gởi cho bạn nè, đã có bổ sung và chỉnh sửa, bạn dùng thử nhé:

http://www.cadviet.com/upfiles/2/ob01_obj_anhien_theomau.lsp

Chúc bạn vui vẻ!!!

Lisp của bạn dùng rất tuyệt, rất đúng với mong muốn của mình. Từ nay, công việc của mình sẽ nhanh, thuận lơi hơn rất nhiều. Xin cám ơn tất cả các bạ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
Chào bạn Sony2007,

Bài toán của bạn đặt ra chưa chặt chẽ.

Bạn sử dụng việc pick diểm thứ nhất và pick điểm thừ 2 thì Ok chưa có vấn đề gì. Nhưng việc pick điểm thứ 3 thì sao nhỉ??? Có chắc chắn bạn sẽ pick điểm này đúng vào đoạn thẳng P1P2 hay không??? Nếu không trúng (mà điều này có nhẽ chiếm tới xác suất 90% đây bạn ạ) thì sẽ nội suy ra sao bạn nhỉ ?????

Trong trường hợp bạn pick không trúng thì bạn cần có 1 nguyên tắc lựa chọn điêm nào đó nằm trên đoạn thẳng P1P2 để nội suy bạn ạ. Còn việc nội suy này không phải quá phức tạp đâu, chỉ là các phép tính theo tam giác đồng dạng mà thôi. Bạn hoàn toàn có thể làm được mà.

Chúc bạn thành công.

Bác nói đúng đấy, bài toán này k được chặt chẽ. Nhưng yêu cầu là phải píck điểm P nằm trên đường thẳng P1P2 này. Còn việc nội suy, tính theo tam giác đồng dạng thì e biết rồi. Nhưng e muốn sử dụng lisp để làm công việc đại trà (tức là có nhiều công tác tương tự như vậy), chứ k phải là e tính tay k được. :cheers: bác có thể giúp e được k. Cám ơn bác trước

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

Mình có 1 vấn đề như vầy mong các bác giúp đỡ: thường thì mình có các hình khép kín xong thì mình mới hatch, nhưng mà nếu mình lỡ làm mất cái hình khép kín rồi chỉ còn hatch thôi thì có cách nào tìm lại được cái hình đó:hình khép kính có thể là hình tròn, polyline khép kín, line khép kín, spline khép kín........

Mong các cao thủ giúp đỡ sớm, cá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
Mình có 1 vấn đề như vầy mong các bác giúp đỡ: thường thì mình có các hình khép kín xong thì mình mới hatch, nhưng mà nếu mình lỡ làm mất cái hình khép kín rồi chỉ còn hatch thôi thì có cách nào tìm lại được cái hình đó:hình khép kính có thể là hình tròn, polyline khép kín, line khép kín, spline khép kín........

Mong các cao thủ giúp đỡ sớm, cám ơn

@romeo1982 : Bạn đã sử dụng chức năng Recreat Boundary trong lệnh Hatchedit (HE) chưa? Nó sẽ đáp ứng yêu cầu của bạn. Hình như CAD2008 trở đi mới có chức năng này.

@Sony : Bạn đã đọc lại bài viết số 1373(trang 69 - Viết Lisp theo yêu cầu phần 2) của Tue_NV chưa? Lisp của bạn được xây dựng trên 3 cái .... này

 

Đây là Chương trình tính toán Cộng trừ Nhân Chia giá trị của Block Attribute; Text với 1 số hoặc 1 biểu thức.

 

Nếu bạn tính toán giá trị Block Attribute với 1 số hoặc 1 biểu thức : Lisp sẽ lấy giá trị của Tag_Source đi tính toán với biểu thức toán học và trị thay thế Tag_Replace có thể trùng hoặc không trùng với Tag_Source

 

Nếu bạn tính toán giá trị Text với 1 số hoặc 1 biểu thức : Lisp sẽ lấy giá trị của Text đi tính toán với biểu thức toán học và trị thay thế chính là Text mà ta đã chọn

 

Nếu bạn Nhập biểu thức Toán học là : +0 , -0 , *1 , /1 thì bạn có thể tính Tổng giá trị trong các Tag_Source của Block Attribute hay tính được Tổng của các Text mà User đã chọn. Kết quả chứa trong ô Tong gia tri :

 

Về việc làm tròn số : Nếu bạn không tick vào Precision thì chương trình tính toán số chữ số thập phân vào chính số mà User đã chọn.

____Ví dụ : {1.5 ; 3.02 ; 1.301} khi nhân cho 3 (Biểu thức toán là *3)

thì kết quả sẽ là : {4.5 ; 9.06 ; 3.903}.

- Nếu bạn tick vào Precision và chọn số chữ số thập phân trong popup_list thì chương trình sẽ làm tròn theo số chữ số thập phân mà bạn đã chọn trong popup_list đó.

____Ví dụ : Khi bạn tick vào Precision và chọn số chữ số thập phân trong popup_list là 0.000 (3 chữ số thập phân).

-> Dãy số {1.5 ; 3.02 ; 1.301} khi nhân cho 3 (Biểu thức toán là *3) thì kết quả sẽ là : {4.500 ; 9.060 ; 3.903}

 

Bổ sung việc lựa chọn nhiều Block name theo ý của funyzui -> Kết quả tính toán là dựa trên các Block đã chọn. Block nào có TagName nằm trong TagSource thì được xử lý và tính toán với biểu thức toán học còn Block nào không có TagName nằm trong TagSource thì bỏ qua

 

Thêm một chức năng Undo để undo lại hành động xử lý kết quả tính toán trước đó.

 

Chức năng Modify để hiệu chỉnh Block : Xin hẹn Version sau.

 

Về Biểu thức toán học : Biểu thức toán học phải bắt đầu bằng toán tử +, -, *, /. . Đã kiểm tra sự hợp lý của biểu thức toán học như : Chuỗi phải bắt đầu bằng toán tử, Chuỗi không được rỗng, chuỗi không được chứa kí tự chữ. Các trường hợp vi phạm những điều này đều được hiện lên bảng thông báo để nhắc nhở. Có 1 trường hợp mà Tue_NV chưa xử lý được là sự hợp lý của biểu thức toán học được xử lý qua hàm Cal. Làm sao để xử lý được các biểu thức như thế này :5+*6 hay 5+(6+6)*).??? ...v...v...

ctnchia_1.jpg

 

DownLoad Lisp file

 

Tue_NV viết chương trình này. Hy vọng có ích cho các bạn.

  • Vote tăng 8

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

Lại một lần nữa mong cac anh giúp đỡ cho mình ! mình đang rất cần .................

mình dùng lisp này để phóng điểm lên cad nhưng phóng điểm thì tốt nhưng mà điểm không có ghi tên điểm bro nào có thể giúp mình sau khi phóng điểm lên cad các điểm đó có thể là tên hoặc số thứ tự họăc độ cao không !!!!!!

đây la file lisp minh muon sua http://www.cadviet.com/upfiles/2/importxyz_1.zip

vidu lisp mình đang dùng http://www.cadviet.com/upfiles/2/chua_duoc.dwg

lisp mình muốn http://www.cadviet.com/upfiles/2/sau_khi_sua_lisp.dwg

cá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

@romeo1982 : Bạn đã sử dụng chức năng Recreat Boundary trong lệnh Hatchedit (HE) chưa? Nó sẽ đáp ứng yêu cầu của bạn. Hình như CAD2008 trở đi mới có chức năng này.

Xui 1 cái là mình đang xài cad2007, mình cảm thấy nó rất ổn định nên ko muốn đổi hoài, cám ơn bạ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
Đây là Chương trình tính toán Cộng trừ Nhân Chia giá trị của Block Attribute; Text với 1 số hoặc 1 biểu thức.

 

...

Bổ sung việc lựa chọn nhiều Block name theo ý của funyzui -> Kết quả tính toán là dựa trên các Block đã chọn. Block nào có TagName nằm trong TagSource thì được xử lý và tính toán với biểu thức toán học còn Block nào không có TagName nằm trong TagSource thì bỏ qua

...

 

Tue_NV viết chương trình này. Hy vọng có ích cho các bạn.

Thật tình ko biết nói lời nào để có thể cảm ơn Tue_NV nhiều hơn nữa. Lisp của bạn thật tuyệt! :cheers:

E cũng chân thành cảm ơn a gia_bach, người đã bắn phát súng đầu tiên cho cuộc cách mạng +-*/ block thuộc tính.

  • 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

@romeo1982 : mình cũng xài cad2007 mà bạn. Recreat Boundary bình thường mà. Bạn xem kỹ lại, nó là cái hình nhỏ thứ 4 từ trên xuống. Nếu ko thấy nữa thì mình chụp hình gửi cho.

Thâ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

@romeo1982 : Bạn đã sử dụng chức năng Recreat Boundary trong lệnh Hatchedit (HE) chưa? Nó sẽ đáp ứng yêu cầu của bạn. Hình như CAD2008 trở đi mới có chức năng này.

Xin lỗi bạn, mình đã thấy chức năng đó rồi, nhưng mình muốn nói là trong bản vẽ của mình có hàng ngàn cái hatch mà ko có đường biên như vậy, nếu làm từ cái chắc là lâu lắm, mong bạn giúp đỡ thêm

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
@romeo1982 : Bạn đã sử dụng chức năng Recreat Boundary trong lệnh Hatchedit (HE) chưa? Nó sẽ đáp ứng yêu cầu của bạn. Hình như CAD2008 trở đi mới có chức năng này.

Xin lỗi bạn, mình đã thấy chức năng đó rồi, nhưng mình muốn nói là trong bản vẽ của mình có hàng ngàn cái hatch mà ko có đường biên như vậy, nếu làm từ cái chắc là lâu lắm, mong bạn giúp đỡ thêm

chán bồ này quá!trên diễn đàn có đầy mà ko search!bạn xem bài số 11 và bài số 18 của bác HOÀNH nè!

http://www.cadviet.com/forum/index.php?showtopic=18

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
@romeo1982 : Bạn đã sử dụng chức năng Recreat Boundary trong lệnh Hatchedit (HE) chưa? Nó sẽ đáp ứng yêu cầu của bạn. Hình như CAD2008 trở đi mới có chức năng này.

Xin lỗi bạn, mình đã thấy chức năng đó rồi, nhưng mình muốn nói là trong bản vẽ của mình có hàng ngàn cái hatch mà ko có đường biên như vậy, nếu làm từ cái chắc là lâu lắm, mong bạn giúp đỡ thêm

Bạn romeo thử cái này nhé :

(defun c:hbo(/ ss i)
 (setvar "cmdecho" 0)
 (if(setq ss (ssget '((0 . "HATCH"))))
(progn
  (setq i 0)
  (Repeat (sslength ss)
	(vl-cmdf "hatchedit" (ssname ss i)
		 "B" "R" "Y")
	(setq i (1+ i))
  )
 )
)
)

  • 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

Dùng Hatchedit (HE) sau khi gõ HE gõ 'fi vào phần select filter chọn Hatch. Khi đó Cad cho phép bạn chọn chỉ riêng đường Hatch mà thôi. chúc thành công!

  • 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
Sẽ chắc chắn rằng điểm thứ 3 là P sẽ nằm đúng trên P1P2(xác suất 99.999%). Cơ mà bác PhamThanhBinh đã quên rằng CAD có lệnh UCS; chế độ Ortho và 1 sợi dây tóc chuột hay sao? :cheers:

Nếu P không nằm trên P1P2 thì kiểm tra và hiện lên thông báo

 

@truongthanh : Bạn hãy upload file cụ thể lên xem thế nào? Dạo này Tue_NV bận lắm, chắc là không giúp gì được, nhưng có các bác trên diễn đàn nếu rảnh sẽ giúp bạn mà

Hề hề hề,

Chào bác TueNV,

Cái này mình quên thật nên cũng muốn nhắc bạn Sony2007 cần lưu ý khi ra đề bài cho chặt chẽ, vì không phải lúc nào các chế độ như trên đều mặc định. Vả lại mình thấy các bác trên diễn đàn có phép chọn điểm trên đối tượng gần nhất với điểm chọn nên mình muốn hỏi lại bạn sony2007 cho chắc để có thể tạo lisp cho những trường hợp điểm pick không nằm trên đối tượng bác ạ. Nếu chấp nhận việc lấy điểm trên đối tượng gần nhất với điểm chọn thì có thể làm lisp cho trường hợp tổng quát mà không lệ thuộc vào việc chọn điểm có chính xác hay không bác ạ.

Rất cám ơn bác vì đã nhắc nhở mình mấy cách cài đặt các chế độ màn hình của CAD.

Chúc bác luôn vui.

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
Còn vấn đề này "các hình chữ nhật có thể bị nổ ra thành line và có thể bị hở nhỏ nữa" thì pótay !

Bạn thử LISP này :

(defun c:addLay (/ ent i j layname objci objpl pt_lst ss ssc)
 ;| By : Gia Bach, gia_bach @  www.CadViet.com             |;  
 (vl-load-com)

(defun GetPtLst (obj / anginc arcparam blg delta eparam inc pt ptlst sparam)
 (setq sparam (vlax-curve-getStartParam obj)
eparam (vlax-curve-getEndParam obj)
anginc (* pi (/ 6 180.0)))
 (while (<= sparam eparam)
   (setq pt (vlax-curve-getPointAtParam obj sparam))
   (if (not (equal pt (car ptlst) 1e-12))
     (setq ptlst (cons pt ptlst)))
   (if (and (/= sparam eparam)
      (setq blg (abs (vlax-invoke obj 'GetBulge sparam)))
      (/= 0 blg))
     (progn
(setq delta (* 4 (atan blg)) ;included angle
      inc (/ 1.0 (1+ (fix (/ delta anginc))))
      arcparam (+ sparam inc))
(while (< arcparam (1+ sparam))
  (setq pt (vlax-curve-getPointAtParam obj arcparam)
	ptlst (cons pt ptlst)
	arcparam (+ inc arcparam))))      )
   (setq sparam (1+ sparam))    )
 ptlst)
;main 
 (princ "\nChon Pline : ")
 (if (setq ss (ssget  '((0 . "LWPOLYLINE"))))
   (progn
     (setq i -1)
     (while (setq ent (ssname ss (setq i (1+ i))))
(setq objPL (vlax-ename->vla-object ent)
      pt_lst (GetPtLst objPL)
      ssC (ssget "_WP" pt_lst (list (cons 0 "CIRCLE"))) )
(if ssC
  (progn
    (setq num (sslength ssC))
    (if (> num 255) (setq num (rem num 255)))
    (setq layname (strcat "Layer_" (itoa num) "_Circle") j -1)
    (or (tblsearch "Layer" layname) (vl-cmdf "-layer" "N" layname "c" num layname ""))
    (vla-put-Layer objPL layname)
    (while (setq ent (ssname ssC (setq j (1+ j))))
      (setq objCi (vlax-ename->vla-object ent) )
      (vla-put-Layer objCi layname) ) ) ))))
 (princ))

líp rất hay bác gia_bach ah, bác có thể thêm vào 1 tí nữa ko, trong các đường polyline khép kín có thể ko có vòng tròn mà có text thì nó đưa text và đường polyline về layer có tên text đó luôn, mong tin bác

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
líp rất hay bác gia_bach ah, bác có thể thêm vào 1 tí nữa ko, trong các đường polyline khép kín có thể ko có vòng tròn mà có text thì nó đưa text và đường polyline về layer có tên text đó luôn, mong tin bác

T/hợp có nhiều Text thì đưa vào Layer nào ?

 

 

sao ko ai giúp mình hết vậy?

To truongthanh

Đây là bài toán nguợc rất khó, cho đến bây giờ tui chưa tìm đuợc huớng đi cho đuờng Pline.

 

Một đề nghị :

- Bạn nên đặt biến DIMASSOC=2 trước khi gọi lệnh Dim, sau đó nếu không cần Associate nữa thì gọi lệnh DIMDISASSOCIATE để tắt Associate sẽ dễ hơn.

  • Vote tăng 2

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
Ủa, LISP này mình đã chỉnh sửa và bổ sung LISP và đã post lên trên rồi, mà sao các bác vẫn còn bàn luận thế, các bác xem thử cái mình gởi rồi cho ý kiến.

 

http://www.cadviet.com/upfiles/2/ob01_obj_anhien_theomau.lsp

Trong quá trình sử dụng, mình xuất hiện một số lỗi sau. Bạn xem lại và khắc phục giúp mình nhé. Mong tin bạn

 

; warning: unwind skipped on exception

; error: Exception occurred: 0xC0000005 (Access Violation)

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/hợp có nhiều Text thì đưa vào Layer nào ?

To truongthanh

Đây là bài toán nguợc rất khó, cho đến bây giờ tui chưa tìm đuợc huớng đi cho đuờng Pline.

 

Một đề nghị :

- Bạn nên đặt biến DIMASSOC=2 trước khi gọi lệnh Dim, sau đó nếu không cần Associate nữa thì gọi lệnh DIMDISASSOCIATE để tắt Associate sẽ dễ hơn.

hy vọng bac gia bach sẽ sớm có trả lời dùm mình!

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
Trong quá trình sử dụng, mình xuất hiện một số lỗi sau. Bạn xem lại và khắc phục giúp mình nhé. Mong tin bạn

 

; warning: unwind skipped on exception

; error: Exception occurred: 0xC0000005 (Access Violation)

 

Cái này mình chưa gặp qua, đành nhờ các bác khác vậy, LSP này mình cũng bổ sung và sửa chửa theo nguyện vọng của bạn thôi,

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
Lại một lần nữa mong cac anh giúp đỡ cho mình ! mình đang rất cần .................

mình dùng lisp này để phóng điểm lên cad nhưng phóng điểm thì tốt nhưng mà điểm không có ghi tên điểm bro nào có thể giúp mình sau khi phóng điểm lên cad các điểm đó có thể là tên hoặc số thứ tự họăc độ cao không !!!!!!

đây la file lisp minh muon sua http://www.cadviet.com/upfiles/2/importxyz_1.zip

vidu lisp mình đang dùng http://www.cadviet.com/upfiles/2/chua_duoc.dwg

lisp mình muốn http://www.cadviet.com/upfiles/2/sau_khi_sua_lisp.dwg

cám ơn !!!!!!!

 

TienDaiCa up file số liệu lên xem thử để mọi người còn ngâm cú chứ.

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ề hề hề,

Chào bác TueNV,

Cái này mình quên thật nên cũng muốn nhắc bạn Sony2007 cần lưu ý khi ra đề bài cho chặt chẽ, vì không phải lúc nào các chế độ như trên đều mặc định. Vả lại mình thấy các bác trên diễn đàn có phép chọn điểm trên đối tượng gần nhất với điểm chọn nên mình muốn hỏi lại bạn sony2007 cho chắc để có thể tạo lisp cho những trường hợp điểm pick không nằm trên đối tượng bác ạ. Nếu chấp nhận việc lấy điểm trên đối tượng gần nhất với điểm chọn thì có thể làm lisp cho trường hợp tổng quát mà không lệ thuộc vào việc chọn điểm có chính xác hay không bác ạ.

Rất cám ơn bác vì đã nhắc nhở mình mấy cách cài đặt các chế độ màn hình của CAD.

Chúc bác luôn vui.

 

Nhờ bác giúp đỡ cho e với. Cám ơn bác nhiều

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

Lại một lần nữa mong cac anh giúp đỡ cho mình ! mình đang rất cần .................

mình dùng lisp này để phóng điểm lên cad nhưng phóng điểm thì tốt nhưng mà điểm không có ghi tên điểm bro nào có thể giúp mình sau khi phóng điểm lên cad các điểm đó có thể là tên hoặc số thứ tự họăc độ cao không !!!!!!

đây la file lisp minh muon sua http://www.cadviet.com/upfiles/2/importxyz_1.zip

vidu lisp mình đang dùng http://www.cadviet.com/upfiles/2/chua_duoc.dwg

lisp mình muốn http://www.cadviet.com/upfiles/2/sau_khi_sua_lisp.dwg

cám ơn !!!!!!!

day la file so lieu http://www.cadviet.com/upfiles/2/toa_do_docao.txt

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
Lại một lần nữa mong cac anh giúp đỡ cho mình ! mình đang rất cần .................

mình dùng lisp này để phóng điểm lên cad nhưng phóng điểm thì tốt nhưng mà điểm không có ghi tên điểm bro nào có thể giúp mình sau khi phóng điểm lên cad các điểm đó có thể là tên hoặc số thứ tự họăc độ cao không !!!!!!

đây la file lisp minh muon sua http://www.cadviet.com/upfiles/2/importxyz_1.zip

vidu lisp mình đang dùng http://www.cadviet.com/upfiles/2/chua_duoc.dwg

lisp mình muốn http://www.cadviet.com/upfiles/2/sau_khi_sua_lisp.dwg

cám ơn !!!!!!!

day la file so lieu http://www.cadviet.com/upfiles/2/toa_do_docao.txt

 

Cái này đã có trên diễn đàn rồi, nên bạn cần search trước, các bác khác chắc "giận" nên ko trả lời, lần sau bác cẩn thận nhé, Link cho bác tham khảo nè:

http://www.cadviet.com/forum/index.php?showtopic=20044

  • 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
...bác có thể thêm vào 1 tí nữa ko, trong các đường polyline khép kín có thể ko có vòng tròn mà có text thì nó đưa text và đường polyline về layer có tên text đó luôn, mong tin bác
nếu nhiều text mà khác nhau thì loại bỏ bác ơi
Bạn thử LISP này :

(defun c:addLayT (/ char ent i j layname obj objpl pt_lst ss ssc str)
 ;| By : Gia Bach, gia_bach @  www.CadViet.com             |;  
 (vl-load-com)

(defun GetPtLst (obj / anginc arcparam blg delta eparam inc pt ptlst sparam)
 (setq sparam (vlax-curve-getStartParam obj)
eparam (vlax-curve-getEndParam obj)
anginc (* pi (/ 6 180.0)))
 (while (<= sparam eparam)
   (setq pt (vlax-curve-getPointAtParam obj sparam))
   (if (not (equal pt (car ptlst) 1e-12))
     (setq ptlst (cons pt ptlst)))
   (if (and (/= sparam eparam)
      (setq blg (abs (vlax-invoke obj 'GetBulge sparam)))
      (/= 0 blg))
     (progn
(setq delta (* 4 (atan blg)) ;included angle
      inc (/ 1.0 (1+ (fix (/ delta anginc))))
      arcparam (+ sparam inc))
(while (< arcparam (1+ sparam))
  (setq pt (vlax-curve-getPointAtParam obj arcparam)
	ptlst (cons pt ptlst)
	arcparam (+ inc arcparam))))      )
   (setq sparam (1+ sparam))    )
 ptlst)
;main 
 (princ "\nChon Pline : ")
 (if (setq ss (ssget  '((0 . "LWPOLYLINE"))))
   (progn
     (setq i -1)
     (while (setq ent (ssname ss (setq i (1+ i))))
(setq objPL (vlax-ename->vla-object ent)
      pt_lst (GetPtLst objPL)
      ssC (ssget "_WP" pt_lst (list (cons 0 "TEXT"))) )
(if (and ssC (= 1(sslength ssC)))
  (progn
    (setq obj (vlax-ename->vla-object (ssname ssC 0))
	  str (vla-get-TextString obj ))
    (if (not (snvalid str))
      (progn; xoa ki tu invalid
	(setq layname "Layer_" j 0)
	(repeat (strlen str)
	  (setq char (substr str (setq j (1+ j)) 1))
	  (if (snvalid char)
	    (setq layname (strcat layname char)))))
      (setq layname str))	    
    (or (tblsearch "Layer" layname) (vl-cmdf "-layer" "N" layname ""))
    (vla-put-Layer obj layname)
    (vla-put-Layer objPL layname) ) ))))
 (princ))

  • 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
Khách
Chủ đề này bây giờ đã bị đóng lại để trả lời thêm.

×