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ị

Vì bạn nói tất cả cùng cao độ, tức là cột z chỉ có 1 giá trị, thì cũng đâu có lâu ^^

CÒn nếu không, bạn hãy post công cụ bạn đang sử dụng (lisp), file CAD mẫu, file số liệu đầu ra mẫu thì mọi người mới giúp bạn được. Kiểu như nhờ bạn gái nấu ăn thì cũng nên ga lăng đi chợ ý mà ^^

Đây là lisp mình đang dùng của ban Phiphi up lên

http://www.cadviet.com/upfiles/Lisps_xuat_nhap_toa_do.zip

mình dùng lisp coorn để xuất toạ độ x y nhưng toạ đo z luôn ra bằng 0 khi dùng cho đường pline (dù mình đã thay độ cao cho đưòng pline đó bằng 50)

Còn nếu dùng lệnh coorn cho đưòng 2dpolyline thi nó xuất đựoc ra cả độ cao Z

Nếu có thể bạn có thể cho mình cái lisp:

1. chuyển tất các đưòng polyline thành 2dpolyline ^^ (cái này là tốt nhất)

2. Như trên minh nói chỉ cần thêm chuyển màu dường đã làm thành màu khác để cho đỡ bị lẫn ^^

Cám ơn bạn 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 đã tìm trên diễn dàn vai lisp về chuyển toạ độ từ pline sang exel. Nhưng chưa tìm thấy cái nào xuất cả độ cao

Vd: mình có 1 đường pline, dùng topo để chuyển thành độ cao 50, nhưng mà khi xuất điểm trên đường đó với lệnh coorn thì ko ra được độ cao là 50

Vậy mong các bạn giúp mình cái lisp khi xuất toạ dộ các điểm trên đường pline đó no sẽ hỏi mình là xuất các điểm đó với độ cao nào ?( các điểm cùng độ cao)

Lisp xuất tọa độ Pline (2D-3D) ra Excel (bao gồm cao độ Z).

Tham khảo : Xuất tọa độ PLINE ra file Excel. bài 160.

  • 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

Lisp xuất tọa độ Pline (2D-3D) ra Excel (bao gồm cao độ Z).

Tham khảo : Xuất tọa độ PLINE ra file Excel. bài 160.

ohh cám ơn bạn đã tìm giúp mình ^^ cái này sao mình ko tìm đựoc nhỉ...

Nếu có thể bạn có thể hoan thiện nốt cho lisp này đựoc hoàn hảo hơn, tại vì mình chưa nghịch lisp bao giờ, bây giờ mới mọ mẹ tìm hiểu tại thấy hay quá.

Nhựoc điểm của cái lisp này ở chỗ là chỉ xuất cho 1 đường pline mà thôi, bây giờ mình có 1 tập đưòng pline hoặc đưòng đồng mức với các độ cao khác nhau, khi mình chọn tất cả thì nó sẽ xuất độ cao của 1 tập đưòng với các độ cao khác nhau đó.

Taị vì cái này coorn lại làm đựoc nhưng nó chỉ làm đựoc với đưong 2dpolyline mà thôi còn đuơng pline no cho bằng 0 hết

Hoặc bạn có thể ghép uư điểm của 2 lệnh coorn và p2e vào làm 1

-coOrn thì làm đựoc với 1 tập hợp dưòng 2dpolyline với độ cao khác nhau

-p2e thì làm đựoc với đưòng polyline

Xin 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

Bạn dùng cái này thử xem.

(defun c:tt (/ A B)
(if (setq A (nentsel "\nCh\U+1ECDn text ngu\U+1ED3n :"))
(progn
(setq A (cdr (assoc 1 (entget (car A)))))
(while (setq B (car (nentsel "\nCh\U+1ECDn text b\U+1ECB thay th\U+1EBF :")))
(entmod
(subst
(cons 1 A)
(assoc 1 (entget B))
(entget B)
) ;_ end of subst
) ;_ end of entmod
) ;_ end of while
) ;_ end of progn
) ;_ end of if
(princ)
) ;_ end of defun

P/S : match được cả các text trong block :)

Cảm ơn bác rất nhiều.

Lisp của bác rất hữu ích cho em ạ. Em chỉ góp ý thêm chút xíu thôi thế này được không: bác làm sao cho cái lisp này khi sử dụng mình có thể khoanh xung quanh các đối tượng được chọn chứ không đơn thuần là pick vào đối tượng được chọn. Vì em thấy nếu theo lisp thì khi pick trật khỏi text là nó tự kết thúc lệnh luôn. hehe. Em làm phiền bác tí vậy :P

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ảm ơn bác rất nhiều.

Lisp của bác rất hữu ích cho em ạ. Em chỉ góp ý thêm chút xíu thôi thế này được không: bác làm sao cho cái lisp này khi sử dụng mình có thể khoanh xung quanh các đối tượng được chọn chứ không đơn thuần là pick vào đối tượng được chọn. Vì em thấy nếu theo lisp thì khi pick trật khỏi text là nó tự kết thúc lệnh luôn. hehe. Em làm phiền bác tí vậy :P

Khoanh xung quanh các đối tượng đc chọn thì cái nào là cái nguồn trong các cái đó. Nếu thay 1 tập các text A = 1 tập các text B, bạn có đảm bảo số text chọn bằng nhau, hoặc theo đúng thứ tự mong muốn ?

P/S : với chọn khoanh : mình cũng tịt luôn điểm hay ở lisp này là change được text trong Block :)

 

=> Mình sẽ đưa cho bạn lựa chọn là chọn text nguồn hoặc đích đến bao giờ trúng thì thôi, OK ?

  • 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

Khoanh xung quanh các đối tượng đc chọn thì cái nào là cái nguồn trong các cái đó. Nếu thay 1 tập các text A = 1 tập các text B, bạn có đảm bảo số text chọn bằng nhau, hoặc theo đúng thứ tự mong muốn ?

P/S : với chọn khoanh : mình cũng tịt luôn điểm hay ở lisp này là change được text trong Block :)

 

=> Mình sẽ đưa cho bạn lựa chọn là chọn text nguồn hoặc đích đến bao giờ trúng thì thôi, OK ?

 

MÌnh nghĩ ý bạn kia là chọn text đích = ssget rồi thay tất cả trong đó y như nguồn :lol:

  • 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

MÌnh nghĩ ý bạn kia là chọn text đích = ssget rồi thay tất cả trong đó y như nguồn :lol:

Nếu thế thì vấn đề k khó ^^ Chỉ còn chờ ý kiến người yêu cầu thôi ^^. TUy nhiên, ngoài nentsel ra, mình vẫn chưa có phương án sửa Text trong block mà không cần bedit, nên, nếu đã nói đến ssget, thì cũng coi như bỏ điểm này ^^

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ảm ơn bác rất nhiều.

Lisp của bác rất hữu ích cho em ạ. Em chỉ góp ý thêm chút xíu thôi thế này được không: bác làm sao cho cái lisp này khi sử dụng mình có thể khoanh xung quanh các đối tượng được chọn chứ không đơn thuần là pick vào đối tượng được chọn. Vì em thấy nếu theo lisp thì khi pick trật khỏi text là nó tự kết thúc lệnh luôn. hehe. Em làm phiền bác tí vậy :P

Hề hề hề,

Mạn phép bác Ketxu, giài thích hộ bạn m4u_and1 một tí nha.

Lisp bác Ketxu viết sử dụng hàm nentsel là hàm chỉ cho chọn đối tượng bằng cách pick điểm. Do vậy nếu thấy việc pick điểm có khó khăn , hay bị trật chìa thì có hai cách khắc phục:

1/- Đi khám mắt và sắm thêm cái kính cho xịn để nhìn được rõ và chuẩn xác. Cách này hơi tốn kém và yêu cầu người sử dụng phải cỡ U60 trở lên.

2/- hãy chịu khó vào option để đặt lại kích thước cái hộp pickbox cho nó nhơn nhớn một tí, đủ khắc phục sai số pick chọn và trước khi chọn nên zoom màn hình cho nó to to một tí để dễ nhòm. Cách này đỡ tốn kém hơn nhưng đòi hỏi người sử dụng phải chịu khó một chút.

Hề hề hề,

Còn việc bạn muốn thay thế hàm nentsel bằng một cái hàm chọn khác thì như vậy sẽ mất đi cái mục tiêu mà bác ketxu đã định là chơi cả những thằng có trong block.

hề hề hề, vài lời nói leo, mong các bác chớ giận.....

  • 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

ohh cám ơn bạn đã tìm giúp mình ^^ cái này sao mình ko tìm đựoc nhỉ...

Nếu có thể bạn có thể hoan thiện nốt cho lisp này đựoc hoàn hảo hơn, tại vì mình chưa nghịch lisp bao giờ, bây giờ mới mọ mẹ tìm hiểu tại thấy hay quá.

Nhựoc điểm của cái lisp này ở chỗ là chỉ xuất cho 1 đường pline mà thôi, bây giờ mình có 1 tập đưòng pline hoặc đưòng đồng mức với các độ cao khác nhau, khi mình chọn tất cả thì nó sẽ xuất độ cao của 1 tập đưòng với các độ cao khác nhau đó.

Taị vì cái này coorn lại làm đựoc nhưng nó chỉ làm đựoc với đưong 2dpolyline mà thôi còn đuơng pline no cho bằng 0 hết

Hoặc bạn có thể ghép uư điểm của 2 lệnh coorn và p2e vào làm 1

-coOrn thì làm đựoc với 1 tập hợp dưòng 2dpolyline với độ cao khác nhau

-p2e thì làm đựoc với đưòng polyline

Xin cám ơn!

Hề hề hề,

Việc nghịch lisp cũng có nhiều cái khoái ra phết đó. bạn hãy chịu khó nghịch thêm chút nữa nha.

Yêu cầu của bạn có thể hoàn toàn làm được, bạn thử nghich một chút theo hướng như sau:

1/- lấy tập chọn các polyline.

2/- Duyệt qua từng thằng để lấy cái danh sách tọa độ các đỉnh của mỗi polyline.

3/- tạo một list mới gồm các đối tượng là các danh sách điểm của mỗi polyline.

4/- duyệt qua cái list mới này và ứng với mỗi phần tữ thì ghi tọa độ của các đỉnh trong phần tử này ra Excel bằng cái hàm exceltocad của bác gia bach.

Bạn hãy thử xem sao, nếu không được hãy post lên mọi người sẽ giúp bạn 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

Em có 2 vấn đề như thế này ạ:

1) Có 2 đường thẳng như sau (1 và 2):

4-2.png

Nếu dùng lệnh trim thông thường thì nếu chọn đường thẳng cắt là đường số 1 và đường bị cắt là đường số 2, như vậy, thì một phần của đường thẳng số 2 sẽ bị xóa. Làm cách nào để đường số 1 vẫn cắt đường số 2 nhưng sau khi bị cắt thì không phần nào bị xóa cả ạ ? (tức là sau khi cắt thì đường số 1 thành 2 đường liên tiếp số 3 và số 4):

5-2.png

 

2) Giả sử có các đoạn thẳng được vẽ liên tiếp. Làm thế nào để kiểm tra là hai đoạn thẳng gần nhau có bị gián đoạn (điểm đầu của đoạn sau không trùng với điểm cuối của đoạn trước), hay chồng lên nhau (điểm đầu của đoạn sau nằm trên đoạn trước, không trùng với điểm cuối của đoạn trước)hay là 2 đoạn thẳng có một phần chung?

3-3.png

2-3.png

1-3.png

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

1.Cái bạn nói gọi là break. Bạn có thể tìm trên diễn đàn về cách dùng lệnh này, hoặc lisp break nhanh...

2.Bạn không nói việc kiểm tra làm j, bằng công cụ gì, đầu ra ra sao, nên câu này chờ bạn update sau

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

Việc nghịch lisp cũng có nhiều cái khoái ra phết đó. bạn hãy chịu khó nghịch thêm chút nữa nha.

Yêu cầu của bạn có thể hoàn toàn làm được, bạn thử nghich một chút theo hướng như sau:

1/- lấy tập chọn các polyline.

2/- Duyệt qua từng thằng để lấy cái danh sách tọa độ các đỉnh của mỗi polyline.

3/- tạo một list mới gồm các đối tượng là các danh sách điểm của mỗi polyline.

4/- duyệt qua cái list mới này và ứng với mỗi phần tữ thì ghi tọa độ của các đỉnh trong phần tử này ra Excel bằng cái hàm exceltocad của bác gia bach.

Bạn hãy thử xem sao, nếu không được hãy post lên mọi người sẽ giúp bạn nhé.

Mình bây giờ mới đọc mấy cái nhập môn của bác ssg để hiểu về các lệnh thôi.

Nhưng cám ơn bạn về các bứoc cần đi, mình sẽ cố gắng...

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ông bác nào hứng thú với vấn đề của mình hết nhỉ?

http://www.cadviet.com/forum/index.php?showtopic=13203&st=3440&gopid=143081entry143081

Chắc tại mọi người ngại down cái file của bạn :lol: . Bạn up ảnh trực tiếp lên đây thì tốt quá

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

1.Cái bạn nói gọi là break. Bạn có thể tìm trên diễn đàn về cách dùng lệnh này, hoặc lisp break nhanh...

2.Bạn không nói việc kiểm tra làm j, bằng công cụ gì, đầu ra ra sao, nên câu này chờ bạn update sau

Cảm ơn bạn đã quan tâm đến vấn đề của mình. Về câu hỏi thứ 2, mình muốn vẽ một mặt cắt trước trong CAD dưới dạng file .dxf, sau đó xuất vào Femap để convert thành một mặt cắt của nó. Tuy nhiên vì hình vẽ nhiều nét, lại không vẽ dưới dạng pline nên có khi các đoạn thẳng liền nhau bị rời nhau, hoặc đè lên nhau. Điều kiện trong chương trình Femap là các đường thẳng phải liên tiếp nhau, và mặt cắt là kí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

Cảm ơn bạn đã quan tâm đến vấn đề của mình. Về câu hỏi thứ 2, mình muốn vẽ một mặt cắt trước trong CAD dưới dạng file .dxf, sau đó xuất vào Femap để convert thành một mặt cắt của nó. Tuy nhiên vì hình vẽ nhiều nét, lại không vẽ dưới dạng pline nên có khi các đoạn thẳng liền nhau bị rời nhau, hoặc đè lên nhau. Điều kiện trong chương trình Femap là các đường thẳng phải liên tiếp nhau, và mặt cắt là kín :)

- Trong trường hợp có 2 đoạn Line trùng nên nhau, lệnh Overkill làm rất tốt việc tìm phần trùng và gộp 2 đường đó thành 1 :)

- Trong trường hợp 2 đoạn Line bị rời nhau, muốn nối lại bạn có thể sử dụng lisp nối các Line rời thành 1 theo điều kiện khoảng cách lớn nhất. (Lisp jp đã post trên diến đàn, bạn chịu khó soi nhé ^^)

 

=> Bạn thực hiện cả 2 bước trên là ngon ngay

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

Khoanh xung quanh các đối tượng đc chọn thì cái nào là cái nguồn trong các cái đó. Nếu thay 1 tập các text A = 1 tập các text B, bạn có đảm bảo số text chọn bằng nhau, hoặc theo đúng thứ tự mong muốn ?

P/S : với chọn khoanh : mình cũng tịt luôn điểm hay ở lisp này là change được text trong Block :)

 

=> Mình sẽ đưa cho bạn lựa chọn là chọn text nguồn hoặc đích đến bao giờ trúng thì thôi, OK ?

 

 

Vâng, thưa bác ý em là thế này ạ.

Chắc là bác cũng sử dụng lệnh MA( matchprop) nhiều rồi đúng ko ạ. Em muốn là sau khi chọn text nguồn xong, khi pick chọn Text đích thì có thể pick chuột để tạo khung chữ nhật lựa chọn xung quanh text đích. Vì em thấy cái lisp của bác bị hạn chế là nó chỉ pick điểm chứ không chọn kiểu khung chữ nhật được.

( Nói mãi mà không thoát ý cho các bác hiểu được. Nản thật! :( )

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

Vâng, thưa bác ý em là thế này ạ.

Chắc là bác cũng sử dụng lệnh MA( matchprop) nhiều rồi đúng ko ạ. Em muốn là sau khi chọn text nguồn xong, khi pick chọn Text đích thì có thể pick chuột để tạo khung chữ nhật lựa chọn xung quanh text đích. Vì em thấy cái lisp của bác bị hạn chế là nó chỉ pick điểm chứ không chọn kiểu khung chữ nhật được.

( Nói mãi mà không thoát ý cho các bác hiểu được. Nản thật! :( )

Ý của bạn đã bàn ở trên, có điều bạn không đọc kỹ thôi.Lý do tại sao mình không để chọn khoanh vùng text đích mình và bác Bình cũng đều giải thích rồi, đó là có chủ đích chứ k là hạn chế. Nhưng thôi, cái đó bạn không đọc/cần thì mình bỏ đi vậy :) THeo yêu cầu mà ^^

 

(defun c:tt (/ A B)
(vl-load-com)
(if (setq A (nentsel "\nCh\U+1ECDn text ngu\U+1ED3n :"))
(progn
(setq A (cdr (assoc 1 (entget (car A)))))
(prompt "\nCh\U+1ECDn text b\U+1ECB thay th\U+1EBF :")
(foreach B (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "*TEXT"))))))    
       (entmod (subst (cons 1 A) (assoc 1 (entget B))(entget B)))
) 
) 
) 
(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

Ý của bạn đã bàn ở trên, có điều bạn không đọc kỹ thôi.Lý do tại sao mình không để chọn khoanh vùng text đích mình và bác Bình cũng đều giải thích rồi, đó là có chủ đích chứ k là hạn chế. Nhưng thôi, cái đó bạn không đọc/cần thì mình bỏ đi vậy :) THeo yêu cầu mà ^^

hehe. Em cảm ơn bác nhé. Lần này thì đúng ý của em rồi đấy ạ.

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ần 1 lisp có chức năng tuần tự như sau:

 

_ Detach all unloaded x-ref

_ Explode attribute to text (all blocks in drawing)

_Bind all remaining x-ref

_Purge (all)

 

Nhờ các pro viết lisp giúp mình vớ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

Mình cần 1 lisp có chức năng tuần tự như sau:

 

_ Detach all unloaded x-ref

_ Explode attribute to text (all blocks in drawing)

_Bind all remaining x-ref

_Purge (all)

 

Nhờ các pro viết lisp giúp mình với.

Để thực hiện các việc trên 1 cách hoàn hảo, chắc nhiều người khá đau đầu đó bạn

Trước tiên, để biến các ATT thành Text, bạn thử xài lệnh Burst xem sao

Ngoài ra, bạn thử lấy các lisp trong này xem có phù hợp không :

1

 

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

các bạn có thể sửa cho mình đoạn lisp này để cho nó có thể chọn được 1 tập đuờng chứ ko fải chỉ chọn được 1 đường

Mình cũng đã cố gắng tìm hiểu nhưng mà chụi rồi ^^ mới có đọc về lisp có 1 ngày...

Mong các bạn giúp đỡ vì cái này mình đang cần!

Đây là đoạn lisp của bạn gia_bach

 

 

;; free lisp from cadviet.com

;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=407&st=140&p=90451entry90451

(defun c:p2E(/ ent pt_lst ss); Polyline Vertex to Excel

(vl-load-com)

(defun poly-pts (pl / n p l)

(setq n (fix (vlax-curve-getEndParam pl)))

(or (vlax-curve-IsClosed pl) (setq n (1+ n)))

(while (setq p (vlax-curve-getPointAtParam pl (setq n (1- n))))

(setq l (cons p l)) ))

 

(if (setq ss (ssget "+.:S:E" (list (cons 0 "*POLYLINE"))))

(progn

(setq ent (ssname ss 0)

pt_lst (poly-pts ent))

(if (vlax-get-or-create-object "Excel.Application")

(WriteToExcel pt_lst))))

(princ))

 

(defun WriteToExcel (lst_data / col row x xlApp xlCells)

(setq xlApp (vlax-get-or-create-object "Excel.Application")

xlCells (vlax-get-property

(vlax-get-property

(vlax-get-property

(vlax-invoke-method

(vlax-get-property xlApp "Workbooks")

"Add")

"Sheets")

"Item" 1)

"Cells"))

(setq row 3)

(foreach pt lst_data

(setq col 3)

(foreach coor pt

(vlax-put-property xlCells 'Item row col coor)

(setq col (1+ col)))

(setq row (1+ row)) )

(vla-put-visible xlApp :vlax-true)

(mapcar

(function (lambda (x)

(vl-catch-all-apply

(function (lambda ()(if x (vlax-release-object x)))))))

(list xlCells xlApp))

(gc) (gc) )

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ạn thử đọc 1 tháng là ra vấn đề ngay mà ^^

Mình đổi lằng ngoằng thế này, bạn dùng tạm 1 chút, để sau bác nào pro sẽ giúp bạn khoản append, cái này mình không rành lắm

 

(defun c:p2e()
(foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget  '((0 . "*POLYLINE"))))))
 (p2e_Func ent)
 )
)

(defun p2E_Func( ent / pt_lst ss); Polyline Vertex to Excel
(vl-load-com)
(defun poly-pts (pl / n p l)
(setq n (fix (vlax-curve-getEndParam pl)))
(or (vlax-curve-IsClosed pl) (setq n (1+ n)))
(while (setq p (vlax-curve-getPointAtParam pl (setq n (1- n))))
(setq l (cons p l)) ))

(if ent
(progn
(setq pt_lst (poly-pts ent))
(if (vlax-get-or-create-object "Excel.Application")
(WriteToExcel pt_lst))))
(princ))

(defun WriteToExcel (lst_data / col row x *AplExcel* *excell-cells* *New-Book* *Books-Colection* *Sheet-Collection* *Sheet#1*)
(setq  *AplExcel*     (vlax-get-or-create-object "Excel.Application"))
 (if (setq *New-Book*  (vlax-get-property *AplExcel* "ActiveWorkbook"))
   (setq *Books-Colection*  (vlax-get-property *AplExcel* "Workbooks")
         *Sheet-Collection* (vlax-get-property *New-Book* "Sheets")
              *Sheet#1*     (vlax-invoke-method *Sheet-Collection* "Add"))
(setq *Books-Colection*  (vlax-get-property *AplExcel* "Workbooks")
             *New-Book*     (vlax-invoke-method *Books-Colection* "Add")
         *Sheet-Collection* (vlax-get-property *New-Book* "Sheets")
              *Sheet#1*     (vlax-get-property *Sheet-Collection* "Item" 1)))
(setq *excell-cells*     (vlax-get-property *Sheet#1* "Cells"))
(setq row 3)
(foreach pt lst_data
(setq col 3)
(foreach coor pt
(vlax-put-property *excell-cells* 'Item row col coor)
(setq col (1+ col)))
(setq row (1+ row)) )
(vla-put-visible *AplExcel* :vlax-true)
(mapcar
(function (lambda (x)
(vl-catch-all-apply
(function (lambda ()(if x (vlax-release-object x)))))))
(list *excell-cells* *AplExcel*))
(gc) (gc) )

  • 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

Mình đã down về nhưng mà vẫn ko làm được

Khi chọn 1 tập đường pline để xuất tọa độ thì khi ra exel nó chỉ hiện tọa độ của 1 đường thôi, mình cần là tọa độ và độ cao của tất cả các đường đã chọn

Bạn có thể xem xet lại được ko? cám ơn bạn 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 đã down về nhưng mà vẫn ko làm được

Khi chọn 1 tập đường pline để xuất tọa độ thì khi ra exel nó chỉ hiện tọa độ của 1 đường thôi, mình cần là tọa độ và độ cao của tất cả các đường đã chọn

Bạn có thể xem xet lại được ko? cám ơn bạn trước

Bạn không xem kỹ rồi. Cái mình làm ở trên là mỗi Pline sẽ ra 1 sheet, bạn kiểm tra lại nhé :) Mình cũng đã nói trước là mình k biết append, nên để mỗi Pline 1 sheet, ok ? ^^

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.

×