Đến nội dung


Hình ảnh
* * * - - 8 Bình chọn

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


  • Chủ đề bị khóa Chủ đề bị khóa
3783 replies to this topic

#781 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1435 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 25 January 2010 - 03:49 PM

Em thường làm việc với bản vẽ quy hoạch trong đó có cos nền hiện trạng, việc lọc cos nền này khá khó khăn, e thường phải cho vào Excel rồi dùng bộ lọc Filter, nhưng điều đó chỉ áp dụng đc khi e dùng Nova, bởi vì trong Nova có công cụ xuất text vào và ra bản vẽ, có lisp nào thực hiện điều đó thay Nova ko? đưa text trên bản vẽ ra file TXT với 3 cột ( cột toạ đọ X, cột toạ đọ Y và cột cao độ Z) sau đó dùng lisp xuất ngwợc vào cad sau khi đã xử lí file TXT trên bằng Excel. nhưng khi xuất vào cad thì chỉ là text bình thường theo đúng toạ độ X, Y Z thôi, không cần phải điền ra vị trí, số thứ tự như nova đâu? mong mọi ng giúp đỡ !

Tại sao bạn phải nhờ đến Excel xử lí Text bị lỗi ?
Bạn chạy thử LISP lọc các TEXT không phải là kiểu số sang lớp Txt_Err
(defun C:test(/ ent i ss)
(vl-load-com)
(if (setq i -1 ss (ssget '((0 . "TEXT"))))
(progn
(or (tblsearch "layer" "Txt_Err")
(command "-layer" "n" "Txt_Err" ""))
(while (setq ent (ssname ss (setq i (1+ i))))
(setq ent (vlax-Ename->Vla-Object ent))
(if (not(member (type (distof (vla-get-TextString ent))) '(REAL INT) ) )
(vla-put-Layer ent "Txt_Err")) ) )))

  • 1

#782 nguyễn hữu vượng

nguyễn hữu vượng

    biết pan

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

Đã gửi 25 January 2010 - 03:54 PM

các bác ơi, em có 1 tập hợp điểm bây giờ em nối các điểm đó lại bằng tay để tạo thành các tam giác, như vậy thì lâu quá vậy nên em xin các bác 1 lisp để nối các điểm đó lại thành lưới tam giác nhé... cảm ơn các bác trước.
  • 0

#783 nqt266

nqt266

    biết vẽ circle

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

Đã gửi 26 January 2010 - 12:35 AM

Xin chào toàn thể anh em trên diễn đàn!
Mình có 1 lisp rải Taluy (upload ở dưới), tuy nhiên mình muốn có 1 số thay đổi để phù hợp với công việc (file cad đính kèm)
Rất mong anh em trên diễn đàn bớt chút thời gian xem xét và giải quyết giúp mình!
Xin chân thành cảm ơn!

http://www.cadviet.c...s/2/mtaluy1.lsp

http://www.cadviet.c...les/2/taluy.dwg
  • 0

#784 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 26 January 2010 - 05:54 AM

Xin chào toàn thể anh em trên diễn đàn!
Mình có 1 lisp rải Taluy (upload ở dưới), tuy nhiên mình muốn có 1 số thay đổi để phù hợp với công việc (file cad đính kèm)
Rất mong anh em trên diễn đàn bớt chút thời gian xem xét và giải quyết giúp mình!
Xin chân thành cảm ơn!

Bạn chạy code này thử nhé :

(defun c:mtl(/ doc Util MS c1 c2 kc2tl L1 oldos i j p pr
ang p2 dtxl dgiao pc2)
(vl-load-com)
(setq doc (vla-get-activeDocument (vlax-get-acad-object))
Util (vla-get-utility doc)
MS (vla-get-ModelSpace doc))
(vla-StartUndoMark doc)
(setq c1 (car(entsel "\n Chon duong bien thu nhat :")))
(setq c2 (vlax-ename->vla-object
(car(entsel "\n Chon duong bien thu hai :"))
)
)
(if (not *kc2tl*) (setq *kc2tl* 2))
(setq kc2tl (getdist (strcat "\n Khoang cach giua taluy ngan va taluy dai < "
(rtos *kc2tl* 2 2) " > : "
)
)
)
(if (not kc2tl) (setq kc2tl *kc2tl*) (setq *kc2tl* kc2tl))
(setq L1 (vlax-curve-getDistAtParam c1
(setq pre (vlax-curve-getEndParam c1))
)
)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq i 0 j 0)
(Repeat (1+ (fix (/ L1 kc2tl)))
(setq p (vlax-curve-getPointAtDist c1 i))
(setq pr (vlax-curve-getParamatpoint c1 p))
(setq ang (- (angle '(0 0 0)
(vlax-curve-getFirstDeriv c1 pr)
)
(/ pi 2)
)
)
(setq p2 (vlax-invoke Util 'polarpoint p ang 1))
(setq dtxl (vlax-invoke MS 'addxline p p2))
(setq dgiao (vlax-invoke c2 'IntersectWith dtxl acExtendBoth))
(if (= (rem j 2) 0)
(setq pc2 (vlax-invoke
Util 'polarpoint p (angle p dgiao)
(/ (distance p dgiao) 2)
)
)
(setq pc2 (vlax-invoke
Util 'polarpoint p (angle p dgiao)
(distance p dgiao)
)
)
)
(vlax-invoke MS 'addline p pc2)
(vla-erase dtxl)
(setq i (+ i kc2tl))
(setq j (1+ j))
)
(setvar "osmode" oldos)
(vla-EndUndoMark doc)
(princ)
)


các bác ơi, em có 1 tập hợp điểm bây giờ em nối các điểm đó lại bằng tay để tạo thành các tam giác, như vậy thì lâu quá vậy nên em xin các bác 1 lisp để nối các điểm đó lại thành lưới tam giác nhé... cảm ơn các bác trước.

@Nguyễn hữu vượng : Bạn viết bài như vậy thì Tue_NV chẳng hiểu ý bạn gì cả. Muốn giúp cho bạn mà nhưng chẳng được. Bạn vui lòng mô tả cụ thể hơn, bằng file .dwg rồi upload lên diễn đàn. Bạn muốn nối các điểm đó thành lưới tam giác??? Các điểm nào ??? Nối như thế nào????
  • 2

#785 nguyễn hữu vượng

nguyễn hữu vượng

    biết pan

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

Đã gửi 26 January 2010 - 12:01 PM

@Nguyễn hữu vượng : Bạn viết bài như vậy thì Tue_NV chẳng hiểu ý bạn gì cả. Muốn giúp cho bạn mà nhưng chẳng được. Bạn vui lòng mô tả cụ thể hơn, bằng file .dwg rồi upload lên diễn đàn. Bạn muốn nối các điểm đó thành lưới tam giác??? Các điểm nào ??? Nối như thế nào????

http://www.cadviet.c...oi_tam_giac.dwg
bác Tue_NV ơi, em up lên rồi đó, rất mong sự giúp đỡ của bác và các anh em diễn đàn.
  • 0

#786 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 26 January 2010 - 05:26 PM

http://www.cadviet.c...oi_tam_giac.dwg
bác Tue_NV ơi, em up lên rồi đó, rất mong sự giúp đỡ của bác và các anh em diễn đàn.

Chào bạn nguyễn hữu vượng,
Đề bài bạn ra sẽ có rất nhiều đáp àn, vậy bạn sẽ chọn cái nào và nguyên tắc chọn của bạn là gì????
Chỉ cần có 4 điểm tạo thành một đa giác lồi là bạn đã có hai đáp án rồi, vậy mà bạn có tới ty tỷ điểm như vậy thì ???????
Trong hai hình dưới đây bạn sẽ chọn hình nào và vì sao??? Nếu bạn có câu trả lời thì mới có hy vọng làm được lisp cho nó bạn ạ
Hình đã gửi

Chúc bạn sớm có câu trả lời phù hợp.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#787 nguyễn hữu vượng

nguyễn hữu vượng

    biết pan

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

Đã gửi 26 January 2010 - 05:50 PM

Chào bạn nguyễn hữu vượng,
Đề bài bạn ra sẽ có rất nhiều đáp àn, vậy bạn sẽ chọn cái nào và nguyên tắc chọn của bạn là gì????
Chỉ cần có 4 điểm tạo thành một đa giác lồi là bạn đã có hai đáp án rồi, vậy mà bạn có tới ty tỷ điểm như vậy thì ???????
Trong hai hình dưới đây bạn sẽ chọn hình nào và vì sao??? Nếu bạn có câu trả lời thì mới có hy vọng làm được lisp cho nó bạn ạ
Hình đã gửi

Chúc bạn sớm có câu trả lời phù hợp.

cảm ơn bác đã quan tâm đến câu hỏi của em, ý của em như thế này bác ạ, nếu có 4 điểm tạo thành tam giác lồi thì bác cứ chọn sao cho 2 tam giác có diện tích chênh lệch nhau là ít nhất:
ví dụ : http://www.cadviet.c...s/2/luoi_tg.dwg
  • 0

#788 nqt266

nqt266

    biết vẽ circle

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

Đã gửi 26 January 2010 - 08:37 PM

Rất cảm TUE_NV nhé. mình dùng lisp mtl đúng như ý mình rồi. Hôm trước đọc bài viết của TUE , mình thấy TUE bảo hồi đầu vào diễn đàn cũng ko biiết j về lisp thế mà giờ bạn giỏi thế, kô biiết mình có thể đc như thế ko nhỉ? Rất cảm ơn bạn nha, Chúc bạn và anh em trên diễn đàn khỏe và cv tốt nha.
  • 0

#789 nqt266

nqt266

    biết vẽ circle

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

Đã gửi 26 January 2010 - 08:47 PM

Bác TUE_NV a. có một vấn đề nữa ở lisp "mtl" mà cả lisp của em up lên và lisp của bác cũng chưa khắc phục đc, đó là khi đường biên 1 gãy khúc và đường biên 2 thẳng thì sẽ có 1 khoảng trống giữa các đường rải,và một số cắt chồng lên nhau nữa, bác xem có khắc phục đc ko, đc thì tuyệt quá, xin cảm ơn bác nha
  • 0

#790 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 27 January 2010 - 08:03 AM

cảm ơn bác đã quan tâm đến câu hỏi của em, ý của em như thế này bác ạ, nếu có 4 điểm tạo thành tam giác lồi thì bác cứ chọn sao cho 2 tam giác có diện tích chênh lệch nhau là ít nhất:
ví dụ : http://www.cadviet.c...s/2/luoi_tg.dwg

Chào bạn nguyễn hữu vượng,
Bạn chưa trả lời đúng vấn đề rồi, ví dụ 4 điểm mà mình nêu ra chỉ là gợi ý để bạn suy nghĩ chứ chưa phải là cái kết quả bạn cần. Bởi vì trong tập hợp n điểm của bạn sẽ có tới n!/(4!*(n-4)! cách chọn 4 điểm đầu tiên. Hơn nữa có thể 4 điểm này có thể là một tứ giác lõm chứ chưa chắc gì đã lồi. Vì thế vấn đề của bạn là cần phải xác định rõ cách chọn 4 điểm này và sau đó là cách xác định các điểm để nối tiếp theo, nếu không bạn sẽ có rất nhiều đáp án mà chưa chắc đúng với ý của bạn được bạn ạ.
Trong trường hợp bạn cho phép có nhiều đáp án thì bạn cũng cần xác định diện tích tối thiểu hay tối đa của một ô lưới tam giác thì mới có thể làm được lisp bạn ạ.
Hãy suy nghĩ kỹ hơn về bài toán mà bạn đăt ra, đừng để đến khi mọi người viết xong lisp cho bạn thì bạn lại không dùng được vì không phù hợp với ý của bạn.
Chúc bạn gặt hái nhiều thành công.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#791 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 27 January 2010 - 08:13 AM

Bác TUE_NV a. có một vấn đề nữa ở lisp "mtl" mà cả lisp của em up lên và lisp của bác cũng chưa khắc phục đc, đó là khi đường biên 1 gãy khúc và đường biên 2 thẳng thì sẽ có 1 khoảng trống giữa các đường rải,và một số cắt chồng lên nhau nữa, bác xem có khắc phục đc ko, đc thì tuyệt quá, xin cảm ơn bác nha

Chào bạn ngt266,
Bạn là người đặt yêu cầu, vậy bạn cần phải cho người viết lisp biết bạn muốn khắc phục điều đó như thế nào thì người viết lisp mới có thể giúp bạn được chứ. Tốt nhất là bạn hãy post một file bản vẽ thể hiện chỗ bị lỗi và cái kết quả mà bạn muốn, khi đó mọi người mới có thể khắc phục được bạn ạ. Trong công việc của mỗi người đều có những yêu cầu riêng và từ đó có các cách giải quyết khác nhau bạn ạ. Không phải tất cả mọi người đều có thể hiểu được đúng ý muốn của bạn nên bạn hãy cố gắng thể hiện rõ ràng, đầy đủ các yêu cầu của bạn bạn nhé. Tốt nhất nên dùng các bản vẽ để thể hiện yêu cầu của mình bạn ạ.
Chúc bạn vui.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#792 nguyễn hữu vượng

nguyễn hữu vượng

    biết pan

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

Đã gửi 27 January 2010 - 04:33 PM

Chào bạn nguyễn hữu vượng,
Bạn chưa trả lời đúng vấn đề rồi, ví dụ 4 điểm mà mình nêu ra chỉ là gợi ý để bạn suy nghĩ chứ chưa phải là cái kết quả bạn cần. Bởi vì trong tập hợp n điểm của bạn sẽ có tới n!/(4!*(n-4)! cách chọn 4 điểm đầu tiên. Hơn nữa có thể 4 điểm này có thể là một tứ giác lõm chứ chưa chắc gì đã lồi. Vì thế vấn đề của bạn là cần phải xác định rõ cách chọn 4 điểm này và sau đó là cách xác định các điểm để nối tiếp theo, nếu không bạn sẽ có rất nhiều đáp án mà chưa chắc đúng với ý của bạn được bạn ạ.
Trong trường hợp bạn cho phép có nhiều đáp án thì bạn cũng cần xác định diện tích tối thiểu hay tối đa của một ô lưới tam giác thì mới có thể làm được lisp bạn ạ.
Hãy suy nghĩ kỹ hơn về bài toán mà bạn đăt ra, đừng để đến khi mọi người viết xong lisp cho bạn thì bạn lại không dùng được vì không phù hợp với ý của bạn.
Chúc bạn gặt hái nhiều thành công.

bác ơi, ý của em là nếu 4 điểm gần nhau tạo thành 1 tứ giác mà ở trong tứ giác đó không có 1 điểm nào thì bác cứ chia đôi tứ giác đó thành 2 tam giác sao cho 2 phần tương đối bằng nhau ấy mà, giống như em bẻ miếng bánh đa làm đôi chỉ cần nhìn thấy gần bằng nhau là được bác ạ. mà bác cứ nối tất cả các điểm lại với nhau để tạo thành một lưới tam giác giống như cái giàn mướp nhà em ý mà, nếu bác nối tạo thành các tam giác có diện tích không đều nhau thì cũng giống như cái giàn mướp đan không đều nên giàn mướp rất yếu, vậy nhé bác hểu ý em chứ. nhờ bác và các anh em diễn đàn giúp em nhé
  • 0

#793 tdvn

tdvn

    biết lệnh rotate

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

Đã gửi 30 January 2010 - 02:32 AM

bác ơi, ý của em là nếu 4 điểm gần nhau tạo thành 1 tứ giác mà ở trong tứ giác đó không có 1 điểm nào thì bác cứ chia đôi tứ giác đó thành 2 tam giác sao cho 2 phần tương đối bằng nhau ấy mà, giống như em bẻ miếng bánh đa làm đôi chỉ cần nhìn thấy gần bằng nhau là được bác ạ. mà bác cứ nối tất cả các điểm lại với nhau để tạo thành một lưới tam giác giống như cái giàn mướp nhà em ý mà, nếu bác nối tạo thành các tam giác có diện tích không đều nhau thì cũng giống như cái giàn mướp đan không đều nên giàn mướp rất yếu, vậy nhé bác hểu ý em chứ. nhờ bác và các anh em diễn đàn giúp em nhé

Hình như bạn đang muốn làm mô hình số địa hình để vẽ đường đồng mức. Nếu đúng như vậy thì đây là đề tài hay và khó. Có thể một số phần mềm về bản đồ đã làm vđ này. Nếu bạn muốn làm thì kg đơn giản đâu.
Theo cách nghĩ thông thường thì với một tập hợp điểm ta sẽ có nhiều đáp án khi tạo lưới tam giác, theo mình nghĩ yêu cầu của bài toán này đặt ra là tổng chiều dài cạnh các tam giác càng nhỏ càng tốt và chúng kg cắt nhau.
Với một tập hợp tỷ tỷ điểm mà tạo thành một lưới tam giác với điểu kiện tổng các cạnh tam giác là nhỏ nhất và cạnh của chúng không cắt nhau xem ra rất khó. ?!?!?!
  • 0

#794 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 01 February 2010 - 10:35 AM

bác ơi, ý của em là nếu 4 điểm gần nhau tạo thành 1 tứ giác mà ở trong tứ giác đó không có 1 điểm nào thì bác cứ chia đôi tứ giác đó thành 2 tam giác sao cho 2 phần tương đối bằng nhau ấy mà, giống như em bẻ miếng bánh đa làm đôi chỉ cần nhìn thấy gần bằng nhau là được bác ạ. mà bác cứ nối tất cả các điểm lại với nhau để tạo thành một lưới tam giác giống như cái giàn mướp nhà em ý mà, nếu bác nối tạo thành các tam giác có diện tích không đều nhau thì cũng giống như cái giàn mướp đan không đều nên giàn mướp rất yếu, vậy nhé bác hểu ý em chứ. nhờ bác và các anh em diễn đàn giúp em nhé

Chào Vương, bạn là dân trắc đạc địa hình, vì vậy bạn phải làm mô hình lưới tam giác phải không? Cái món này ai đã sử dụng Topo bên Hài Hòa thì cũng đã biết làm. Tuy nhiên để cho khỏi tốn tiền mua, bạn sử dụng modul này xem:
http://www.cadviet.c...files/2/dtm.zip
Lệnh là dtm.
Cái này bạn nên qua topic "Tổng hợp các file lisp thường dùng" mà THANK bác tnmtpc 10 cái nhé
  • 0

#795 nquocanh

nquocanh

    biết vẽ line

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

Đã gửi 02 February 2010 - 06:47 PM

Em có biết cách sửa text trong khung tên trong File bản vẽ có nhiều bản vẽ khác nhau. Giả dụ muốn sửa 12-2009 thành 2-2010 , em gõ lệnh FIND sữa ở một khung tên thì tất cả các khung tên khác đồng loạt đổi theo.
Em muốn mở một lúc nhiều file bản vẽ, để chỉ sửa một bản mà tất các các bản vẽ khác được mở cùng một lần. Lisp có làm được không, em nhờ các anh giúp đỡ.
  • 0

#796 xuanvi80

xuanvi80

    biết pan

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

Đã gửi 03 February 2010 - 09:24 PM

Mình vẽ một rectangular bằng cách chon lệnh rec, sau đó chọn 2 điểm p1, p2. Vậy các bác trên diễn đàn giúp mình lấy toạ độ của hai điểm này với!
  • 0

#797 ndn386

ndn386

    biết vẽ pline

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

Đã gửi 04 February 2010 - 01:53 AM

Mình vẽ một rectangular bằng cách chon lệnh rec, sau đó chọn 2 điểm p1, p2. Vậy các bác trên diễn đàn giúp mình lấy toạ độ của hai điểm này với!

Anh dùng lệnh ID rối pick vào 2 điểm p1 và p2 xem sao.
  • 0
Ai đem chim sáo sang sông
Để cho chim sáo ...mất công bay về

#798 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 04 February 2010 - 04:54 PM

Em có biết cách sửa text trong khung tên trong File bản vẽ có nhiều bản vẽ khác nhau. Giả dụ muốn sửa 12-2009 thành 2-2010 , em gõ lệnh FIND sữa ở một khung tên thì tất cả các khung tên khác đồng loạt đổi theo.
Em muốn mở một lúc nhiều file bản vẽ, để chỉ sửa một bản mà tất các các bản vẽ khác được mở cùng một lần. Lisp có làm được không, em nhờ các anh giúp đỡ.

Tham khảo tại: http://www.cadviet.c...showtopic=14946
  • 0

#799 xuanvi80

xuanvi80

    biết pan

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

Đã gửi 09 February 2010 - 11:02 AM

Help me!!!
Mình có một vấn đề về lisp mong các bạn trên diễn đàn giúp đỡ, các bạn viết giùm mình một lisp chọn đối tượng mới được tạo ra sau lệnh copy và paste.
Mình mô tả yêu cầu này như trong bản vẽ đính kèm.

http://www.cadviet.c...drawing1_22.dwg
  • 0

#800 hoavien248

hoavien248

    biết vẽ line

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

Đã gửi 19 February 2010 - 09:38 PM

Các bác viết dùm e cái lisp này nhé!
http://www.cadviet.c...vietdumlisp.dwg
Chúc các bác năm mới Phát Tài,Phát Lộc,An Khang Thịnh Vượng!!!
Mong tin các bác!
  • 0