Đến nội dung


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

Hỏi về Lisp (thuật toán, ý tưởng, coding,...)


  • Please log in to reply
2854 replies to this topic

#1121 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 24 March 2012 - 09:50 PM

Các chế độ bắt điểm của cad được quy định bằng các bitcode như sau:
0 NONe
1 ENDpoint
2 MIDpoint
4 CENter
8 NODe
16 QUAdrant
32 INTersection
64 INSertion
128 PERpendicular
256 TANgent
512 NEArest
1024 Clears all object snaps
2048 APParent Intersection
4096 EXTension
8192 PARallel
Tại 1 thời điểm bạn có thể thiết lập nhiều chế độ bắt điểm cùng lúc. khi đó giá trị của biến Osmode sẽ bằng tổng các bitcode tương ứng của các chế độ bắt điểm trên
Ví dụ. nếu bạn thiết lập đồng thời 2 chế độ bắt điểm: ENDpoint và CENter thì biến Osmode sẽ có giá trị là 1+ 4 =5
  • 2

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#1122 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 24 March 2012 - 09:51 PM

các bác PRO cho em hỏi chút nhé :D
biến " osmode " 4287 có ý nghĩa gì ạ,em lùng sục mãi mà chưa tìm ra.
và "orthomode" ,chưa biết ý nghĩa của biến này,lúc đầu gán một giá trị cho biết này,thì kết quả trả về là bao nhiêu ạ.
em mới học autolisp chưa biết nhiều,mong các bác đừng cười nhé :huh: :huh: :rolleyes:

4287=1+2+4+16+32+128+4096
Bạn vào Express => Tools => System variable editor để biết cụ thể giá trị và ý nghĩa của 2 biến trên
  • 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.


#1123 Detailing

Detailing

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 667 Bài viết
Điểm đánh giá: 278 (khá)

Đã gửi 24 March 2012 - 11:39 PM

Bài toán mà tôi muốn hỏi như thế này:
Trong quá trình viết và test khi đang viết 1 lisp, cũng như chạy 1 lisp đã có, có thể xuất hiện lỗi và chương trình bị break.
Khi lỗi thường kèm theo 1 dòng thông báo. Tuy nhiên dòng thông báo này không cho ta biết lỗi ở hàm nào của lisp và nó nằm ở vị trí nào trong lisp.
Vậy có thể viết 1 đoạn code ngoại trú hoặc nội trú trong 1 chương trình, để nếu khi có lỗi xãy ra thì nó cho ta biết được tên hàm (và vị trí của hàm nếu trong chương trình có nhiều hàm cùng tên) bị lỗi?

Ko biết bạn biết Lee-mac ko?
Nhưng bạn nên xem cái này nếu chưa tìm ra: http://lee-mac.com/debugvlide.html
Ko hiểu English thì có thể nhờ Mr. Google
Good luck!
  • 1

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#1124 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 24 March 2012 - 11:51 PM

Ko biết bạn biết Lee-mac ko?
Nhưng bạn nên xem cái này nếu chưa tìm ra: http://lee-mac.com/debugvlide.html
Ko hiểu English thì có thể nhờ Mr. Google
Good luck!

Ồ! Đọc gần hết kho báu của nhà Lee rồi, thậm chí cái này cũng đọc rồi (mà chỉ lướt qua). Bây giờ bạn nhắc mới hỡi ôi, quen quá!
Cám ơn rất nhiều!
  • 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.


#1125 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 25 March 2012 - 12:26 PM

Có cách nào để lấy list của tất cả Font name trong Cad không nhỉ?
(liệt kê tất cả font name mà cad có thể dùng, thể hiện trong lệnh style)
Tôi loay hoay mãi mà chưa tìm ra.
Thanks!
  • 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.


#1126 Đinh Văn Tuân

Đinh Văn Tuân

    Chưa sử dụng CAD

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

Đã gửi 25 March 2012 - 10:26 PM

sao phần HELP 2004 không có autolisp nhi?
nhiều lúc muốn tra ý nghĩa của một hàm cũng không biết làm thế nào?
các bác nào có kinh nghiệm chỉ rùm với :)
  • 0

#1127 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 25 March 2012 - 10:57 PM

sao phần HELP 2004 không có autolisp nhi?
nhiều lúc muốn tra ý nghĩa của một hàm cũng không biết làm thế nào?
các bác nào có kinh nghiệm chỉ rùm với :)

Hề hề hề,
Có đấy, mình cũng đang dùng Cad2004 và sử dụng Help Developer để tham khảo về lisp. Bạn hãy thử xem có đáp ứng được yêu cầu của bạn không nhé.
Chúc bạn vui.
  • 2
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1128 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 01 April 2012 - 03:16 PM

Mình bắt buộc phải dùng Visual lisp để xóa xdata của đối tượng. Nếu dùng Entmod của autolisp thì đơn giản, nhưng với visual thì thấy khó quá. Nhờ các bác trợ giúp
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#1129 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 02 April 2012 - 02:29 PM

Mình tình cờ phát hiện ra Vlide xác nhận các chuỗi variant-valuesafearray-value là các chuỗi được bảo vệ. ban đầu mình tưởng chúng là các hằng hoặc các đối số của các hàm Vla hay Vlax nhưng kiểm tra lại thì không phải. Chúng chính xác là các hàm. Và chúng tương đương với 2 hàm lần lượt là vlax-variant-valuevlax-safearray->list. Nghĩa là sử dụng như nhau, chả thấy khác tẹo nào (không fải kiểu như vlax-invoke nhé, mình mới chỉ kiểm thử với một vài kiểu variant và safearray, chưa kiểm tra hết).Tìm trong help thì không thấy đả động gì đến 2 thằng này.
Bằng cách trên thì mình cũng đã tìm ra rất nhiều hàm kiểu như 2 hàm trên và có tính chất tương đương với các hàm vlax khác. Như vậy là đã có một số thứ Autodesk đã không công khai cho người dùng. Có bác nào có thông tin gì về việc này không? mình tìm trên mạng thấy mù mờ quá.
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#1130 duy267

duy267

    biết vẽ point

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

Đã gửi 02 April 2012 - 06:14 PM

Mình đọc Help của Autocad chỉ thấy nói đến hàm VL-, VLAX- và VLR- chứ không thấy hàm VLA-. Vậy xin hỏi anh em muốn tìm hiểu về hàm VLA- này thì kiếm ở đâu, vì các bác viết code rất hay dùng. Xin cảm ơn.
  • 0

#1131 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 02 April 2012 - 08:03 PM

Nó nằm trong phần ActiveX and VBA reference. Các hàm VLA-* chính là các Methods của VBA được viết sang ngôn ngữ lisp. bạn hỏi thêm google để nhận được hướng dẫn cụ thể hơn vì nói đến mấy hàm này thì dài dòng lắm, mà chưa chắc mình đã nói đúng :D
  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#1132 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 02 April 2012 - 08:35 PM

Mình đọc Help của Autocad chỉ thấy nói đến hàm VL-, VLAX- và VLR- chứ không thấy hàm VLA-. Vậy xin hỏi anh em muốn tìm hiểu về hàm VLA- này thì kiếm ở đâu, vì các bác viết code rất hay dùng. Xin cảm ơn.

Giới thiệu bạn 1 web để tìm hiểu thêm về các hàm "vla-"
http://www.afralisp.net/archive/methods/methods_ref.htm
  • 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.


#1133 duy267

duy267

    biết vẽ point

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

Đã gửi 03 April 2012 - 08:34 AM

Nó nằm trong phần ActiveX and VBA reference. Các hàm VLA-* chính là các Methods của VBA được viết sang ngôn ngữ lisp. bạn hỏi thêm google để nhận được hướng dẫn cụ thể hơn vì nói đến mấy hàm này thì dài dòng lắm, mà chưa chắc mình đã nói đúng :D

Em đã đọc qua phần Methods cùa cad nhưng cảm giác rất mông lung vì kiến thức VB chỉ là con số 0. Nếu bác có thể xin hướng dẩn đôi chút về nó. Nếu kèm theo ví dụ nữa thì tuyệt vời. Xin cảm ơn.

Giới thiệu bạn 1 web để tìm hiểu thêm về các hàm "vla-"
http://www.afralisp....methods_ref.htm

Tuyệt vời bác Hà, nếu có thời gian em sẽ tìm hiểu về thằng này. Xin cảm ơn bác nhiều.
  • 0

#1134 duy267

duy267

    biết vẽ point

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

Đã gửi 26 April 2012 - 10:52 PM

Các bác cho em hỏi có hàm nào để kiểm tra xem một đường LWPOLYLINE kín (ví dụ hình chữ nhật) có chứa ký tự A hay không (A nằm trong đường LWPOLYLINE; A la "*TEXT"). Mục đích của em là tìm tập hợp các đường LWPOLYLINE có chứa ký tự A. Xin cảm ơn các bác.
  • 0

#1135 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 April 2012 - 11:00 PM

Các bác cho em hỏi có hàm nào để kiểm tra xem một đường LWPOLYLINE kín (ví dụ hình chữ nhật) có chứa ký tự A hay không (A nằm trong đường LWPOLYLINE; A la "*TEXT"). Mục đích của em là tìm tập hợp các đường LWPOLYLINE có chứa ký tự A. Xin cảm ơn các bác.

Hề hề hề,
Hàm sẵn có thì mình chửa biết. Nhưng nếu là hàm do người dùng tạo ra thì có thể đấy bạn ạ.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1136 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 26 April 2012 - 11:04 PM

Như thế nào gọi là *PLine chứa ký tự A hả bạn ? Cắt - Bao - Linetype ?
  • 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


#1137 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 April 2012 - 06:51 AM

Các bác cho em hỏi có hàm nào để kiểm tra xem một đường LWPOLYLINE kín (ví dụ hình chữ nhật) có chứa ký tự A hay không (A nằm trong đường LWPOLYLINE; A la "*TEXT"). Mục đích của em là tìm tập hợp các đường LWPOLYLINE có chứa ký tự A. Xin cảm ơn các bác.

Cad thì không có nhưng lisp thì làm được bạn ạ
  • 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.


#1138 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 27 April 2012 - 09:31 AM

Các bác cho em hỏi có hàm nào để kiểm tra xem một đường LWPOLYLINE kín (ví dụ hình chữ nhật) có chứa ký tự A hay không (A nằm trong đường LWPOLYLINE; A la "*TEXT"). Mục đích của em là tìm tập hợp các đường LWPOLYLINE có chứa ký tự A. Xin cảm ơn các bác.

Bạn thử Code này nhé!
Quick code

(defun c:LPA(/ ssc)
(defun Tue-dxf (dxf ename)(cdr(assoc dxf (entget ename))))
(defun Tue-ss-list (L-ss-vlaobj / n L Lst ssg vlaobj)

(mapcar 'set '(ssg vlaobj) L-ss-vlaobj)
(setq L (sslength ssg))
(Repeat L
(setq ename (ssname ssg (setq L (1- L))))
(setq Lst (cons (if vlaobj (vlax-ename->vla-object ename) ename) Lst))
)
)
(defun Tue-ent-Lpoint(e / i Lpoint);Tue-dxf
(if (wcmatch (Tue-dxf 0 e) "*POLYLINE")
(progn
(if (= (type e) 'VLA-OBJECT) (setq e (vlax-vla-object->ename e)))
(setq i -1)
(Repeat (if (wcmatch (Tue-dxf 0 e) "*POLYLINE") (fix (1+ (vlax-curve-getEndParam e))) 2)
(setq Lpoint (append Lpoint (list (vlax-curve-getPointatParam e (setq i (1+ i))))))
)
)
)
(if (wcmatch (Tue-dxf 0 e) "LINE")
(setq Lpoint (append Lpoint (list (Tue-dxf 10 e) (Tue-dxf 11 e))))
)
Lpoint
)

(setq ssc (ssadd))
(if (setq ss (ssget '((0 . "*POLYLINE"))))
(Progn
(command "zoom" "e")
(foreach x (Tue-ss-list (list ss))
(if (ssget "cp" (Tue-ent-Lpoint x) (list (cons 0 "*TEXT") (cons 1 "*A*")))
(setq ssc (ssadd x ssc))
)
)
(if (= (sslength ssc) 0) (alert "\n Khong co PLINE nao co chua *TEXT ki tu A"))
)
)
(command "zoom" "p")
(sssetfirst ssc ssc)
)
@DoanVanHa: Sorry bác! Tue_NV có sự nhầm lẫn trong các lệnh của CAD :blush:
  • 1

#1139 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 April 2012 - 09:42 AM

Bác Tue_NV! Gặp Lwpolyline có Arc chắc phải vi phân nó ra chứ không thì ít chính xác quá hè!
  • 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.


#1140 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 27 April 2012 - 10:32 AM

Các bác hăng hái viết thế ^^ THeo e còn phụ thuộc khái niệm "chứa" của bạn ấy như thế nào, và đôi khi, có khi chỉ 1 2 dòng thôi là đủ ^^
  • 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