Đế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

#1461 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 18 January 2013 - 07:53 PM

Xin lỗi bác. Quên nói với bác là nó bị lỗi trong file test.dwg đã post #1440. Bác download ở đây. File này không phải do mình tạo ra nên không biết bị gì.
p/s: Bi lỗi với font shx.

Ấy là do bạn viết chuỗi có "\n" ấy mà
Bỏ "\n" là xong
(make_text inspt (strcat "\nTL " (rtos TL 2 2)))
(make_text (list (car inspt) (- (cadr inspt) txtdis) ) (strcat "\nIL " (rtos IL2 2 2)))
(make_text (list (car inspt) (- (cadr inspt) (* txtdis 2.0)) ) (strcat "\n" (rtos Depth2 2 2) " (D)"))
  • 1

#1462 Chiron

Chiron

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 90 (tàm tạm)

Đã gửi 18 January 2013 - 10:13 PM

Cảm ơn Tue_NV. Code đã hết lỗi, nhưng mình vẫn thắc mắc tại sao với font truetype lại không xảy ra tình trạng này nhỉ?
  • 0

#1463 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 18 January 2013 - 11:10 PM

Cảm ơn Tue_NV. Code đã hết lỗi, nhưng mình vẫn thắc mắc tại sao với font truetype lại không xảy ra tình trạng này nhỉ?

Với "\nABC" thì với font shx thì xem như chữ "ABC" được viết xuống dòng. Ứng với điểm chèn pt trong hàm entmake
Khi ed vào sửa thì text tự update về vị trí điểm chèn pt. Đó là lý do mà bạn thấy nó nhảy
Còn với True Font thì "\n" xem như là khoảng trắng nên không xảy ra việc gì

Mình chỉ nêu ra lý do thôi. Còn hỏi tại sao lại bị như vậy chắc hỏi Autodesk...
  • 2

#1464 Chiron

Chiron

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 90 (tàm tạm)

Đã gửi 18 January 2013 - 11:14 PM

Vậy là đã rõ. Ngày mai mình sẽ Like Tue_NV bù nha. Hôm nay hết quota rồi :)
  • 0

#1465 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 January 2013 - 11:02 AM

Khi sử dụng hàm Grread, giá trị trả về khi tick vào 1 nút trên toolbar có thể khác nhau, tùy thuộc hệ điều hành.
Ví dụ: khi dùng hàm (grread nil) và tick vào nút osnap "Endpoint" thì kết quả trả về:
Với WinXP: (11 1209)
Với Win7: (11 1210)
Với Win8: chưa cài nên chưa thử.
Hỏi: có ai biết quy luật trả về của các số 1209, 1210... theo Win tương ứng không? 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.


#1466 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 24 January 2013 - 11:46 AM

Khi sử dụng hàm Grread, giá trị trả về khi tick vào 1 nút trên toolbar có thể khác nhau, tùy thuộc hệ điều hành.
Ví dụ: khi dùng hàm (grread nil) và tick vào nút osnap "Endpoint" thì kết quả trả về:
Với WinXP: (11 1209)
Với Win7: (11 1210)
Với Win8: chưa cài nên chưa thử.
Hỏi: có ai biết quy luật trả về của các số 1209, 1210... theo Win tương ứng không? Thanks!

Của Tue_NV thì trả về : (11 1240) (với WinXP)
  • 0

#1467 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 January 2013 - 11:50 AM

Ối giời ơi! Thế này thì phá sản một chương trình lớn rồi! ;)
  • 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.


#1468 huunhantvxdts

huunhantvxdts

    biết dimbaseline

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

Đã gửi 24 January 2013 - 02:16 PM

Chào mọi người mình có 1 yêu cầu nhờ mọi người giúp đỡ
Mình viết lisp vẽ các pline được rồi bây giờ mình muốn sử dụng pline đó để offset thành nhiều pline mới. mình sử dụng lệnh offset nhưng không được nhờ mọi người giúp đỡ .
lệnh minh viết thế này
(commmand "offset" 2.5 "" "last" "")
  • 0

#1469 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 January 2013 - 02:33 PM

Chào mọi người mình có 1 yêu cầu nhờ mọi người giúp đỡ
Mình viết lisp vẽ các pline được rồi bây giờ mình muốn sử dụng pline đó để offset thành nhiều pline mới. mình sử dụng lệnh offset nhưng không được nhờ mọi người giúp đỡ .
lệnh minh viết thế này
(commmand "offset" 2.5 "" "last" "")

(vla-offset (vlax-ename->vla-object (entlast)) 2.5)
  • 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.


#1470 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 24 January 2013 - 02:40 PM

@bác H : theo Ket thì khác nhau tùy thuộc index của Toolbar Item bác click, và vì thế đương nhiên ở mỗi máy khả năng khác nhau là rất cao ^^
@HN : sai đối số trong lệnh Offset rồi bạn ơi
  • 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


#1471 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 January 2013 - 03:17 PM

@bác H : theo Ket thì khác nhau tùy thuộc index của Toolbar Item bác click, và vì thế đương nhiên ở mỗi máy khả năng khác nhau là rất cao ^^

Thế này là toi rồi! Đang dùng grread với osnap và pan, mà nó khác nhau tùy máy là nguy to. Có cách nào tìm ra quy luật theo máy, hoặc có hướng nào khắc phục không mọi người ơi?
  • 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.


#1472 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

  • Members
  • PipPipPipPip
  • 288 Bài viết
Điểm đánh giá: 142 (tàm tạm)

Đã gửi 24 January 2013 - 04:57 PM

Chưa bao giờ thử với menu nên mình không rõ, còn với các phím của keyboard thì mình có thể chắc chắn kết quả trả về của grread cũng không ổn định. nó thay đổi tùy theo loại keyboard (phần cứng) chứ không phụ thuộc phần mềm (hệ điều hành). Kinh nghiệm của mình là cố gắng tránh các phím đặc biệt (tab, backspace, các phím shift+... Chỉ sử dụng các phím ký tự thông thường, các phím này trả về kết quả ổn định hơn)
  • 0

#1473 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 January 2013 - 05:15 PM

Chưa bao giờ thử với menu nên mình không rõ, còn với các phím của keyboard thì mình có thể chắc chắn kết quả trả về của grread cũng không ổn định. nó thay đổi tùy theo loại keyboard (phần cứng) chứ không phụ thuộc phần mềm (hệ điều hành). Kinh nghiệm của mình là cố gắng tránh các phím đặc biệt (tab, backspace, các phím shift+... Chỉ sử dụng các phím ký tự thông thường, các phím này trả về kết quả ổn định hơn)

Cám ơn bạn đã quan tâm. Hóa ra bạn cũng đã từng "đụng" thứ này.
Có lẽ nó vừa phụ thuộc hệ điều hành vừa phụ thuộc thiết bị nhập, mình không hiểu lắm, nhưng đây là câu trích trong sách của TS. Nguyễn Hữu Lộc để mọi người tham khảo: "Vì các hệ điều hành nhận giá trị nhập từ các thiết bị nhập theo các cách khác nhau, nên hàm Grread có thể trả về các kết quả không như mong muốn".
Ngặt là chương trình của mình bắt buộc phải dùng Grread + bắt buộc phải Osnap được + bắt buộc phải Zoom được.
Liệu có cách gì để lấy được các giá trị trả về của hàm Grread ứng với mỗi nút trên toolbar mà không dùng Grread không nhỉ?
  • 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.


#1474 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

  • Members
  • PipPipPipPip
  • 288 Bài viết
Điểm đánh giá: 142 (tàm tạm)

Đã gửi 24 January 2013 - 05:38 PM

Có phải bạn định viết để: khi con trỏ đang ở trạng thái chờ pick điểm, người dùng có thể kick chuột vào toolbar để thay đổi chế độ bắt điểm?
  • 0

#1475 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 January 2013 - 06:23 PM

Có phải bạn định viết để: khi con trỏ đang ở trạng thái chờ pick điểm, người dùng có thể kick chuột vào toolbar để thay đổi chế độ bắt điểm?

Đúng vậy! Mình giải thích rõ ý đồ của mình để bạn hoặc ai biết được thì giúp:
Chương trình của mình dẫn đến việc vẽ đồ thị của 1 hàm bậc 2. Đồ thị này đi qua 2 điểm: 1 điểm đã pick trước và 1 điểm là tọa độ trả về của hàm grread khi mouse di chuyển trên màn hình. Khi mouse di chuyển thì đồ thị này thay đổi liên tục. Bây giờ, làm sao đang grread mà pick osnap trên toolbar để bắt điểm thứ 2 theo osnap được?
Với lại, mình còn cần thêm: khi đang grread mà tick vào các biểu tượng zoom trên toolbar thì vẫn zoom được.
  • 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.


#1476 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

  • Members
  • PipPipPipPip
  • 288 Bài viết
Điểm đánh giá: 142 (tàm tạm)

Đã gửi 24 January 2013 - 08:21 PM

Mình đã viết 1 vài ứng dung trong đó có sử dung phương phap pick điểm có dùng grread. Và đây là giải pháp của mình để giải quyết vấn đề osnap, nếu bạn thấy phù hợp thì có thể áp dung.

- Về phương pháp truy bắt điểm thì cũng gần tương tự cách thức của ông tây nào đó mà bạn đã post mấy hôm trước. Nghĩa là kết hợp giá trị biến hệ thong osmode với hàm osnap để tạo ra phương pháp truy bắt điểm đồng bộ với hệ thống các lệnh cad thông thường. Vì bạn đã nắm được cách thức rồi nên mình không đưa code lên đây nữa.
- Để điều khiển chế độ truy bắt điểm (Thay đổi giá trị biến Osmode) khi đang lặp grread thì mình rẽ nhánh tạm thời trong vòng lặp bằng sự kiện kích chuột phải. khi sự kiện này sảy ra thì gọi hộp thoại thay đổi chế độ bắt điểm (command "Dsettings"). Ưu điểm của phương pháp này so với cách của bạn (nếu bạn thành công) là bạn không cần phải đặt 1 thanh công cụ Snap toolbar thường trực lên màn hình làm việc gây tốn diện tích; có thể cho phép bắt điểm theo nhiều chế độ như lệnh cad thong thường chứ không chi 1 chế độ bắt điểm như cách của bạn; Gọi hộp thoại điều khiển bắt điểm chỉ bang 1 cú nháy chuột. Ngược lại, nhược điểm của nó là không 1 phát ăn ngay như khi pick vào toolbar.
- Về việc zoom bằng nút zoom trên toolbar thì mình chịu, nhưng không hiểu lý do gì bạn lại cần zoom theo cách này trong khi việc zoom bang chuột vẫn thực hiện được bình thường trong khi lặp grread?
  • 1

#1477 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 January 2013 - 09:27 PM

1). OK
2). Tốt quá! Mình cứ chăm bẳm vào mấy button trên toolbar mà quên mất chuột phải. Nhưng code 25 của chuột phải có "ổn định" không bạn ơi?
3). Mình chưa rõ zoom bằng chuột phải khi grread. Vì kiểu zoom chưa biết trước, bạn có thể nói rõ hơn khô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.


#1478 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

  • Members
  • PipPipPipPip
  • 288 Bài viết
Điểm đánh giá: 142 (tàm tạm)

Đã gửi 24 January 2013 - 10:00 PM

- Chuột phải ổn định hay không thì bạn phải test thử thôi. Mình không gặp vấn đề gì với nó bao giờ, nhưng cũng có thể là chưa gặp. Tốt nhất là bạn nên tự kiểm chứng với 1 số máy.
- Zoom bang chuột có nghĩa là cuộn chuột giữa để zoom to nhỏ như bình thường chứ sao lại zoom bằng chuột phải nhỉ, kể cả pan cũng vậy. mình hiều sai gì chăng (!?)
  • 1

#1479 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 January 2013 - 10:10 PM

- Chuột phải ổn định hay không thì bạn phải test thử thôi. Mình không gặp vấn đề gì với nó bao giờ, nhưng cũng có thể là chưa gặp. Tốt nhất là bạn nên tự kiểm chứng với 1 số máy.
- Zoom bang chuột có nghĩa là cuộn chuột giữa để zoom to nhỏ như bình thường chứ sao lại zoom bằng chuột phải nhỉ, kể cả pan cũng vậy. mình hiều sai gì chăng (!?)

Dẫu chưa toại nguyện tuyệt đối nhưng như vậy là tốt lắm rồi, bởi hàm grread khó xơi quá. Cám ơn 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.


#1480 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 25 January 2013 - 08:20 AM

Mấy huynh ơi chỉ nhoc cách ap dụng lệnh hatch trong lsp với, nhoc làm hoài ko đc ^^, nhoc ngĩ đơn giản mà ko :)
nhoc viết thế lày

(defun c:tth (/ p1)
(setq p1 (getpoint "\nPick tam:"))
(command "-hatch" "ANSI31" "1" "0" p1 "")
)

khi nhập lệnh xong nó hỏi pick tâm, pick xong trên màn hình nó hiện thông báo này "2D point or option keyword required. Specify internal point or :"
Còn dòng command hiện thế này

Specify internal point or [Properties/Select objects/draW boundary/remove
Boundaries/Advanced/DRaw order/Origin/ANnotative/hatch
COlor/LAyer/Transparency]:

Pick tiep vào vùng đó thì nó hatch đc nhưng ko thoát lệnh đc, nó hỏi tiep >>space 1 cái nó mới thoát
Mấy huynh chỉ nhoc chỗ sai hay thiếu với :D, nhoc đa tạ nhiều ^^
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^