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

#1981 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 16 October 2014 - 12:43 PM

- tiện nhoc đang nghỉ giải lao giữa hiệp đo ^^, nhoc muốn hỏi tham khảo trước mấy anh, mình có thể tạo điểm point = entmake đc ko nhỉ, lúc trước nhoc thử tạo = command nhưng nhoc ko set đc type với kích thước của nó, mà thang point này ko thoát đc = enter mới ghê, nhoc cũng quên entget nó thử bao giờ nên chưa pit nó ra sao,mấy anh gợi ý giúp nhoc ^^
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

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








#1982 hiepttr

hiepttr

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1298 Bài viết
Điểm đánh giá: 518 (tốt)

Đã gửi 16 October 2014 - 12:53 PM

entmake và command đều được Nhóc ah! (đều tạo đc point)

Song set type thì chắc là thao tác khác :D :D :D

p/s:

Tham khảo biến PDMODE, PDSIZE


  • 1

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#1983 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 16 October 2014 - 01:00 PM

^^ thì vậy mới khổ, tạo đc đưa điêm chèn vô đc nhung ko set đc type với size, nếu siêng thì định dạng nó trước rùi chạy ^^, nhoc mới nghĩ ko pit entmake có can thiệp đc ko, để khi nào về nhoc entget thử mò xem nó thế nào
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

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








#1984 hiepttr

hiepttr

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1298 Bài viết
Điểm đánh giá: 518 (tốt)

Đã gửi 16 October 2014 - 01:03 PM

@ Nhóc: đã edit ở #1982


  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#1985 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 16 October 2014 - 10:23 PM

^^ thì vậy mới khổ, tạo đc đưa điêm chèn vô đc nhung ko set đc type với size, nếu siêng thì định dạng nó trước rùi chạy ^^, nhoc mới nghĩ ko pit entmake có can thiệp đc ko, để khi nào về nhoc entget thử mò xem nó thế nào

Hề hề hề,

Trong các mã dxf của một point, chả có mã nào liên quan tới pdmode hay pdsize cả. Vậy nên chớ có mong dùng enmake để tạo được nó. 

Cần nhớ rằng pdmode và pdsize là các biến hệ thống, ảnh hưởng tới toàn bộ bản vẽ chứ không phải chỉ ảnh hưởng tới điểm vừa tạo ra.

Vậy nên Nhóc cần xem xét kỹ yêu cầu của mình. Nếu chỉ là đánh dấu đểm được tạo ra, sao không nghĩ tới việc tạo một block ưa nhìn và gắn nó vào điểm vừa tạo được.????


  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1986 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 16 October 2014 - 11:02 PM

 - thật ra nhoc cũng tính dùng block, mà block phải vẽ trước hơi làm biếng ^^, tính vẽ lun trong lsp nhưng chưa pit làm cách nào, tại block nhoc mún tạo dạng chữ thập, nếu liền 1 khối thì đc, đằng này chữ thập nó rời nhoc khọng biết chọn hết kỉu nào, nên nhoc mới nghĩ chuyễn qua thử dùng point xem có khả thi ko ^^


  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

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








#1987 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 16 October 2014 - 11:11 PM

 - thật ra nhoc cũng tính dùng block, mà block phải vẽ trước hơi làm biếng ^^, tính vẽ lun trong lsp nhưng chưa pit làm cách nào, tại block nhoc mún tạo dạng chữ thập, nếu liền 1 khối thì đc, đằng này chữ thập nó rời nhoc khọng biết chọn hết kỉu nào, nên nhoc mới nghĩ chuyễn qua thử dùng point xem có khả thi ko ^^

Hề hề hề,

Vậy thì có thể nhóc cứ tạo block chữ thập rồi sau khi insert thì explode nó sẽ được hai line rời thôi mà.


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1988 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 17 October 2014 - 12:06 AM

- ý nhoc là tạo block dạng chữ thập trực tiếp trong lsp lun ấy, rùi gọi nó trog lsp insert vào bản vẽ lun, ko cần phải tạo ngoài bản vẽ trước ^^


  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

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








#1989 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 17 October 2014 - 01:11 AM

- ý nhoc là tạo block dạng chữ thập trực tiếp trong lsp lun ấy, rùi gọi nó trog lsp insert vào bản vẽ lun, ko cần phải tạo ngoài bản vẽ trước ^^

Hề hề hề,

Nhóc học viết lisp rùi mà. Hoàn toàn Nhóc có thể viết một hàm con để tạo cái block như mong muốn rùi xài nó trong cái lisp chính của Nhóc mà. Cứ mạnh dạn mà mần đi, sai đâu sửa đó là Ok mà. Miễn rằng đừng sai đây sửa đó thôi.

Hề hề hề,...


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1990 hiepttr

hiepttr

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1298 Bài viết
Điểm đánh giá: 518 (tốt)

Đã gửi 17 October 2014 - 07:41 AM

ý Nhóc là: nếu 1 đối tượng thì có thể dùng entlast để "hứng" còn nhiều hơn 1 thì chưa biết cách chứ gì ???

Có 2 lựa chọn (đối với mình):

1. Sữ dụng nhiều lần entlast thủ công ^^

2. Sữ dụng entlast để đánh dấu "thằng" vừa vẽ xong >>> vẽ các đối tượng con của block & dùng while+entlast để hứng từng thằng một.

 

p/s Thật ra bản chất phương án 2 cũng là phương án 1. Chỉ có điều là cad tự nhận biết số đối tượng đc tạo ra (n) và áp đúng n lần entlast


  • 1

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#1991 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 17 October 2014 - 07:50 AM

- hiep doan trung ý nhoc rùi, hiep có thể vd hộ nhoc voi chua nghĩ ra viết làm sao hehe ^^


  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

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








#1992 hiepttr

hiepttr

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1298 Bài viết
Điểm đánh giá: 518 (tốt)

Đã gửi 17 October 2014 - 08:44 AM

Nhóc tham khảo cái này, từ #64 (tương tự)


  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#1993 tien2005

tien2005

    biết lệnh properties

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

Đã gửi 17 October 2014 - 09:11 AM

@nhoc tham khảo thêm lisp entmake của @Thaistreetz http://www.cadviet.c...showtopic=52258


  • 0

#1994 Namvanvo

Namvanvo

    Edu level: li5

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

Đã gửi 17 October 2014 - 09:40 AM


(defun c:acb(/ oldlayer ra ty p1 p2)
(setq oldlayer (getvar "CLAYER")
ra 5)
(if (not (tblsearch "layer" "MSL-CLOUD"))
(command ".layer" "M" "MLS-CLOUD" "C" "5" "" "L" "Continuous" "" "")
( setvar "clayer" "MLS-CLOUD"))
(setq ty (strcase(getstring "\nThe type of cloudmark [Rectang/Poline]:")))
(cond ((= ty "R");types
(setq p1 (getpoint "\nDiem dau HCN")
p2 (getcorner p1 "\nDiem Cuoi HCN:"))
(command ".rectangle" p1 p2)
(command ".revcloud" "A" ra "" "O" (entlast) ""))
((/= ty "R") (command ".pline")(while (= 1 (logand 1 (getvar 'cmdactive)))
(command "\\")
);end while
(command ".revcloud" "A" ra "" "O" (entlast) ""))
);end cond
(setvar "CLAYER" oldlayer)
(princ)
)

Các bạn cho mình hỏi: sau khi active cái layer "MLS-CLOUD", nếu chưa thực hiện xong lisp mà mình nhấn ESC để thoát ra, không thực hiện tiếp thì làm thế nào để kích hoạt lại cái oldlayer?


  • 0

#1995 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 17 October 2014 - 09:52 AM

Khi nhấn esc giữa chừng thì coi như bạn kích hoạt hàm *error* của lsp, do đó bạn phải định nghĩa lại hàm *error* như sau:

 

(defun *error* ( msg )
  (if oldlayer (setvar "CLAYER" oldlayer))
  (*error* msg)
)
  (if oldlayer (setvar "CLAYER" oldlayer))
  (*error* msg)
)

  • 2

#1996 Namvanvo

Namvanvo

    Edu level: li5

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

Đã gửi 17 October 2014 - 10:05 AM

Khi nhấn esc giữa chừng thì coi như bạn kích hoạt hàm *error* của lsp, do đó bạn phải định nghĩa lại hàm *error* như sau:

 

(defun *error* ( msg )
  (if oldlayer (setvar "CLAYER" oldlayer))
  (*error* msg)
)
  (if oldlayer (setvar "CLAYER" oldlayer))
  (*error* msg)
)

Thank Tot77, chạy ok, tuy nhiên khi nhấn ESC xong thì phải đợi một khoảng thời gian tầm 1 phút rồi nó xuất hiện "type Y to reset", có cách nào khắc phục tình trạng phải đợi này không Tot77, và không xuất hiện dòng nhắc type Y luôn thì càng chuẩn, mặc định cho nó tự type Y luôn?


  • 0

#1997 Namvanvo

Namvanvo

    Edu level: li5

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

Đã gửi 17 October 2014 - 10:17 AM

Thank Tot77, chạy ok, tuy nhiên khi nhấn ESC xong thì phải đợi một khoảng thời gian tầm 1 phút rồi nó xuất hiện "type Y to reset", có cách nào khắc phục tình trạng phải đợi này không Tot77, và không xuất hiện dòng nhắc type Y luôn thì càng chuẩn, mặc định cho nó tự type Y luôn?

Mình mò được rồi,  bỏ dòng 
(*error* msg), không biết khi bỏ đi thì có ảnh hưởng gì tới hàm không? 

Bác có thể diễn giải thêm về cái hàm này được không?


  • 0

#1998 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 17 October 2014 - 10:46 AM

Mình vừa nhỡ tay ấn nhầm nút Edit chứ k phải nút Reply, làm mất bài của bạn ToT trả lời. Phiền bạn Tot7 post lại cái lisp giúp Namvanvo nhé

 

P/s : bỏ (*error* msg), sửa thành (princ msg).

Tot77 đang vô tình chạy 1 vòng tuần hoàn không có lối thoát


  • 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


#1999 Namvanvo

Namvanvo

    Edu level: li5

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

Đã gửi 17 October 2014 - 10:53 AM

em đã test và nó vẫn chạy y như cũ: vẫn xử lý rất chậm và vãn phải "type Y to reset".  :blink:


  • 0

#2000 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 17 October 2014 - 10:54 AM

Ket nói đúng đó, chẳng qua muốn viết gọn lại nên thế. Bạn Nam làm theo Ket nói.

P/S : giờ mới biết mod có quyền edit, delete mọi cái post nhỉ  :P  :P


  • 0