Đế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
2849 replies to this topic

#961 Thaistreetz

Thaistreetz

    biết lệnh adcenter

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

Đã gửi 16 November 2011 - 11:23 PM

Tôi có 1 tập hợp chọn ss1 (hoặc 1 list1 các ename, hoặc 1 list1 các vla-object). Tôi muốn copy chúng từ pt1 đến pt2, và sau khi copy tôi muốn lấy được các đối tượng được tạo thành là tập hợp chọn ss2 (hoặc 1 list2 các ename, hoặc 1 list2 các vla-object), điều kiện là không dùng hàm (command "copy"...). Ai biết xin chỉ giùm hàm hoặc phương pháp thực hiện, thanks!

Không sử dụng (command "copy"...) thì chỉ thực hiện được với các đối tượng đơn giản. Không thể thực hiện tổng quát được trừ trường hợp bạn viết được 1 lệnh có chức năng như lệnh copy. 1 số đối tượng chúng ta không thể make được hoặc quá khó để make như hatch, mline, dimension, wipeout..
  • 0

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


#962 Detailing

Detailing

    biết lệnh imageclip

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

Đã gửi 17 November 2011 - 08:27 AM

Không sử dụng (command "copy"...) thì chỉ thực hiện được với các đối tượng đơn giản. Không thể thực hiện tổng quát được trừ trường hợp bạn viết được 1 lệnh có chức năng như lệnh copy. 1 số đối tượng chúng ta không thể make được hoặc quá khó để make như hatch, mline, dimension, wipeout..

Có thể kết hợp combo này (SUBST + ENTMODE + ENTUPD) thay cho entmake
  • 0

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#963 Detailing

Detailing

    biết lệnh imageclip

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

Đã gửi 17 November 2011 - 11:12 AM

Nhân đây các bạn hay dùng các hàm của express tool vậy có khi nào các bạn muốn viết 1 hàm tương tự như vậy chưa?
bạn ko tạo được Hatch, Mline bằng lisp vậy đã nghĩ là có thể có hàm (CreateHatch) hay (CreateMline) ko?
Mời các bạn cho ý kiến. :P
  • 0

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#964 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 17 November 2011 - 01:16 PM

Nhân đây các bạn hay dùng các hàm của express tool vậy có khi nào các bạn muốn viết 1 hàm tương tự như vậy chưa?
bạn ko tạo được Hatch, Mline bằng lisp vậy đã nghĩ là có thể có hàm (CreateHatch) hay (CreateMline) ko?
Mời các bạn cho ý kiến. :P


Những hàm hay dùng của ACET mình đã viết lại gần hết, nhằm phục vụ cá nhân, chẳng tội j phụ thuộc quá vào 1 thứ ^^
Tạo Hatch và Mline thì vẫn trung thành với vla method hoặc command (tùy trường hợp)
  • 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


#965 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 17 November 2011 - 02:01 PM


1. Những hàm hay dùng của ACET mình đã viết lại gần hết, nhằm phục vụ cá nhân, chẳng tội j phụ thuộc quá vào 1 thứ ^^
2. Tạo Hatch và Mline thì vẫn trung thành với vla method hoặc command (tùy trường hợp)

Tue_NV đồng ý với ý kiến của Ketxu ở điểm thứ 2.
Riêng điểm thứ 1 thì mình không đồng ý lắm. Viết hàm acet lập sẵn thì thấy code gọn gàng hơn, dễ đọc hơn (theo ý kiến chủ quan của mình)

Các hàm make trong acet thì chỉ có hàm tạo PLINE thôi, còn tạo các đối tượng khác thì không có thấy.
Mình vẫn sử dụng vla method hoặc command để tạo các đối tượng phức tạp Hatch, MLINE
hoặc Block Dynamic (dùng command "insert"...)

Còn đối tượng đơn giản thì sử dụng Entmake
Vài dòng chia sẻ
  • 0

#966 Thaistreetz

Thaistreetz

    biết lệnh adcenter

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

Đã gửi 17 November 2011 - 02:20 PM


Những hàm hay dùng của ACET mình đã viết lại gần hết, nhằm phục vụ cá nhân, chẳng tội j phụ thuộc quá vào 1 thứ ^^
Tạo Hatch và Mline thì vẫn trung thành với vla method hoặc command (tùy trường hợp)

Acet có mấy hàm thuộc loại kịch độc mà mình thích sử dụng nhưng không thể viết lại được (hoặc có viết lại được thì cũng không thể ngon bằng nó)
VD: acet-sys-shift-down, acet-sys-lmouse-down, ss-drag..
thêm nữa, mình test thử tốc độ thì thấy các hàm acet cho tốc độ cực nhanh, VL và VLA có 1 số hàm chức năng tương tự acet nhưng tốc độ cũng không bằng. thế nên là mình vẫn cứ thích dựa hơi nó. he he
  • 0

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


#967 Thaistreetz

Thaistreetz

    biết lệnh adcenter

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

Đã gửi 17 November 2011 - 02:28 PM

Nhân tiện cho mình hỏi. các bác có cách nào lấy được tọa độ của con trỏ theo hệ tọa độ của màn hình không? gốc tọa độ là 1 trong các góc của màn hình. (thường là topLeft) đơn vị là pixel.
vấn đề này trước đây mình từng hỏi, nhưng chưa có giải đáp, giờ lại vấp fải nó nên bức xúc quá hỏi lại.
  • 0

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


#968 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 17 November 2011 - 02:30 PM

Nhân các bác bàn về việc dùng Acet hay nên viết lại Acet, tôi muốn hỏi điều này vì thực sự là tôi không hiểu: rõ ràng dùng acet nó trực quan và dễ hiểu (nhưng phải cài Express Tool). Nhưng không hiểu sao phần lớn các bô lão lisp ở nước ngoài lại rất hạn chế dùng acet (theo hiểu biết lõm bõm của tôi)?
Thân thương!
  • 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.


#969 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 17 November 2011 - 02:54 PM

@ các bác : trước đấy e cũng rất thích ACET vì sinh code ngắn gọn, nhưng sau khi dịch nghĩa khoảng 170 hàm ACEt, em phát hiện ra rằng, ngoài 1 số hàm kịch độc chưa tìm ra phương thức, đa số còn lại phụ thuộc command rất nhiều. => chỉ sử dụng ACET để viết shop-code lần đầu.
@bác Thái : cái việc đó chắc phải sử dụng các phép tính biến đổi ma trận hay sao ý => e đại dốt về khoản này ^^ Mà trên cái màn hình ngoài màn editor ra còn các menu, toolbar, title nữa. Nên để có được thằng bác muốn chắc phải dùng object ngoài mất :(
(Hay ý bác topleft là topleft của Editor thôi)
  • 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


#970 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 17 November 2011 - 04:28 PM

Bạn detailing và các bác cho Tue_NV hỏi tí :
Khi cài ASD2012 thì có sẵn luôn ACAD2012. Tuy nhiên, ACAD2012 này lại không có ExpressTools.
Có cách nào cài ExpressTools cho CAD2012 trong trường hợp này.

Các bạn có biết về vấn đề này xin chỉ giúp. Tue_NV xin cảm ơn
  • 0

#971 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 17 November 2011 - 05:02 PM

Bạn detailing và các bác cho Tue_NV hỏi tí :
Khi cài ASD2012 thì có sẵn luôn ACAD2012. Tuy nhiên, ACAD2012 này lại không có ExpressTools.
Có cách nào cài ExpressTools cho CAD2012 trong trường hợp này.
Các bạn có biết về vấn đề này xin chỉ giúp. Tue_NV xin cảm ơn

Tôi thì không biết, nhưng có 1 thông tin thêm để bác Tue_NV tham khảo: hồi trước tôi cài Softdesk thì có luôn CadR14, sau đó cài Cadr14 thì cứ mỗi lần mở cadr14 nó nhảy qua softdesk luô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.


#972 Thaistreetz

Thaistreetz

    biết lệnh adcenter

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

Đã gửi 17 November 2011 - 05:17 PM

@ketxu: nếu lấy gốc tọa độ theo topleft của editor thì mình làm được roài. cái mình cần lấy là tọa độ theo hệ tọa độ của màn hình.
Bởi vì mỗi người thiết lập giao diện cad khác nhau nên việc lấy theo tọa độ màn hình mục đích cũng chính là để tránh sự ảnh hưởng của các thanh menu, toolbar... như bạn nêu hay việc của sổ cad đang ở chế độ maximize hay minimize.
  • 0

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


#973 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 17 November 2011 - 05:53 PM

Vậy thì thuần lisp hình như không có được bác ạ. Bắt buộc phải liên kết với 1 thằng khác
  • 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


#974 Detailing

Detailing

    biết lệnh imageclip

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

Đã gửi 17 November 2011 - 07:16 PM

Bạn detailing và các bác cho Tue_NV hỏi tí :
Khi cài ASD2012 thì có sẵn luôn ACAD2012. Tuy nhiên, ACAD2012 này lại không có ExpressTools.
Có cách nào cài ExpressTools cho CAD2012 trong trường hợp này.

Các bạn có biết về vấn đề này xin chỉ giúp. Tue_NV xin cảm ơn

Bạn vào Control Panel -> Add Or Remove Programs -> ASD 2012 -> Modify - The Express Tools
good luck! :D
  • 4

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#975 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 22 November 2011 - 09:09 PM

Các bác ơi, cho hỏi tí: tôi nhớ mang máng là có hàm kiểm tra xem điểm pt có nằm trên curve hay không, mà sao giờ quên mất. Bác nào biết xin chỉ giùm: hoặc là tên hàm, hoặc là phương thức kiểm tra. Thanks!
  • 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.


#976 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 22 November 2011 - 10:49 PM

Các bác ơi, cho hỏi tí: tôi nhớ mang máng là có hàm kiểm tra xem điểm pt có nằm trên curve hay không, mà sao giờ quên mất. Bác nào biết xin chỉ giùm: hoặc là tên hàm, hoặc là phương thức kiểm tra. Thanks!

Bác có thể kiểm tra equal point và vlax-curve-getClosestPointTo hoặc dùng mẹo SSget qua điểm pt
  • 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


#977 Thaistreetz

Thaistreetz

    biết lệnh adcenter

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

Đã gửi 22 November 2011 - 10:51 PM

bác kiểm tra khoảng cách từ điểm đó đến Curve. cụ thể: (vlax-curve-getClosestPointTo (car(entsel)) (princ (getpoint)))
Sax! diễn đàn bị sao thế nhỉ. Ketxu xóa giúp tớ 1 bài nhá
  • 1

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


#978 Thaistreetz

Thaistreetz

    biết lệnh adcenter

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

Đã gửi 25 November 2011 - 04:50 PM

Các bác cho mình hỏi. có cách nào để biết 1 textstyle đang sử dụng font của bảng mã Unicode không?
hoặc đơn giản hơn, kiểm tra 1 chuỗi xem chuỗi đó có được viết bằng mã unicode hay không. (mình làm bằng cách củ chuối (wcmatch string "*\U+*") nhưng cũng không được. chưa biết vì sao nó cứ trả về nil.
  • 0

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


#979 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 25 November 2011 - 05:06 PM

Các bác cho mình hỏi. có cách nào để biết 1 textstyle đang sử dụng font của bảng mã Unicode không?
hoặc đơn giản hơn, kiểm tra 1 chuỗi xem chuỗi đó có được viết bằng mã unicode hay không. (mình làm bằng cách củ chuối (wcmatch string "*\U+*") nhưng cũng không được. chưa biết vì sao nó cứ trả về nil.


Gởi cái này tôi mót được để bác tham khảo xem có giúp ích gì được không.

; VxGetTextStyles - Returns a list of all text style names and her font files
; Copyright: ©2001 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
; None
; Return [Type]:
; > Dotted pair list '(("StyleName" . "FontFile")...) [LIST]
; Notes:
; - None
(defun VxGetTextStyles ( / StyLst)
(or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
(or Gb:AcD (setq Gb:AcD (vla-get-ActiveDocument Gb:AcO)))
(vlax-for Sty (vla-get-TextStyles Gb:AcD) (setq StyLst (cons (cons (vla-get-Name Sty) (vla-get-FontFile Sty)) StyLst)))
(reverse StyLst))

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


#980 Thaistreetz

Thaistreetz

    biết lệnh adcenter

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

Đã gửi 25 November 2011 - 05:29 PM

Cảm ơn bác, nhưng hàm của bác nó chỉ trả về list danh sách các textstyle và font tương ứng. không rõ font nào là unicode.
Mình vừa làm được rồi, tuy hơi củ chuối tý vìchỉ nhận biết các font hay dùng: arial. tahoma và times new roman. cũng tạm chấp nhận được.
(wcmatch (cdr (assoc 3 (entget (tblobjname "style" (cdr (assoc 7 (entget (car (entsel "chon text"))))))))) "ARIAL*,TAHOMA*,TIMES*")
Bác nào có cao kiến gì hay hơn thì cứ post nhé. mình hơi khó tính, hề hề
  • 0

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