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

#981 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 25 November 2011 - 08:54 PM

Bác biết là cái tên font với lại bảng mã nó độc lập nhau mà ^^
  • 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


#982 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 December 2011 - 03:39 PM


Methor nào dùng để add 1 block từ 1 bản vẽ khác các bác nhỉ?
  • 0

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


#983 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 02 December 2011 - 04:20 PM

Add block dạng Wblock hay bác định bật file đó lên rồi copyFrom ?
  • 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


#984 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 December 2011 - 04:46 PM

ờ há. mình quên mất là có 2 dạng. cái mình cần là add kiểu Wbock đó. tiện thể nếu được cả 2 dạng thì càng tốt. chắc rồi sẽ có lúc phải dùng.
  • 0

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


#985 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 03 December 2011 - 10:12 AM

Mình đang cần gộp 2 nhóm đối tượng với nhau theo sách dạy thì:
b. Hàm (ssadd...)
CHỨC NĂNG: Thêm một đối tượng vào tập đối tượng
CÚ PHÁP:

(ssadd [ename] [ss])
GIẢI THÍCH:
ename: Chuỗi ký tự chứa tên mã đối tượng cần thêm vào, nếu đối tượng ename đã có trong tập đối tượng, không thêm vào được nữa
ss: Tên tập đối tượng
Nếu cả 2 tham số này không có, sẽ trả ra một tập rỗng
Nếu ename khác nil tập đối tượng là nil, hàm sẽ trả ra một tập đối tượng chỉ có một phần tử là ename đã cho
Nếu cả 2 đều khác nil, hàm sẽ trả ra tập đối tượng có thêm phần tử ename vừa thêm vào

Mình viết thử đoạn sau:


(defun c:themthu ( )
(Prompt "\nchon doi tuong goc")
(Setq dtgoc (Ssget))
(Prompt "\nchon doi tuong them")
(Setq dtthem (Ssget))
(ssadd [dtthem] [dtgoc])
(setq a (getpoint "\nChon diem chuan: "))
(setq b (getpoint a"\nCopy den diem: "))
(command ".move" dtgoc "" a B)
(Princ)
)
Nhưng lỗi, các bác gở rối giúp với!
-Trường hợp cụ thể mình đang cần thì chỉ cần thêm đối tượng vừa được tạo ra ào nhóm đối tượng sẳn có thôi.


  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#986 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 03 December 2011 - 10:28 AM

Mình đang cần gộp 2 nhóm đối tượng với nhau theo sách dạy thì:
b. Hàm (ssadd...)
CHỨC NĂNG: Thêm một đối tượng vào tập đối tượng
CÚ PHÁP:

(ssadd [ename] [ss])
GIẢI THÍCH:
ename: Chuỗi ký tự chứa tên mã đối tượng cần thêm vào, nếu đối tượng ename đã có trong tập đối tượng, không thêm vào được nữa
ss: Tên tập đối tượng
Nếu cả 2 tham số này không có, sẽ trả ra một tập rỗng
Nếu ename khác nil tập đối tượng là nil, hàm sẽ trả ra một tập đối tượng chỉ có một phần tử là ename đã cho
Nếu cả 2 đều khác nil, hàm sẽ trả ra tập đối tượng có thêm phần tử ename vừa thêm vào

Mình viết thử đoạn sau:


(defun c:themthu ( )
(Prompt "\nchon doi tuong goc")
(Setq dtgoc (Ssget))
(Prompt "\nchon doi tuong them")
(Setq dtthem (Ssget))
(ssadd [dtthem] [dtgoc])
(setq a (getpoint "\nChon diem chuan: "))
(setq b (getpoint a"\nCopy den diem: "))
(command ".move" dtgoc "" a B)
(Princ)
)
Nhưng lỗi, các bác gở rối giúp với!
-Trường hợp cụ thể mình đang cần thì chỉ cần thêm đối tượng vừa được tạo ra ào nhóm đối tượng sẳn có thôi.



Bác Duy nhầm ở 2 chỗ. Cần sửa lại như vầy.
(Setq dtthem (cdr (assoc -1 (entget (ssname (Ssget) 0))))) hoặc (Setq dtthem (car (entsel)))
(ssadd dtthem dtgoc)


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


#987 Thaistreetz

Thaistreetz

    biết lệnh adcenter

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

Đã gửi 03 December 2011 - 12:06 PM

do hàm ssget trả về là tập hợp selection set chứ không phải là ename hay tập hợp ename bác Duy ạ. mà đối tượng thêm của bác phải là ename
  • 1

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


#988 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 03 December 2011 - 12:20 PM

Mình đang cần gộp 2 nhóm đối tượng với nhau theo sách dạy thì:
b. Hàm (ssadd...)
CHỨC NĂNG: Thêm một đối tượng vào tập đối tượng
CÚ PHÁP:

(ssadd [ename] [ss])
GIẢI THÍCH:
ename: Chuỗi ký tự chứa tên mã đối tượng cần thêm vào, nếu đối tượng ename đã có trong tập đối tượng, không thêm vào được nữa
ss: Tên tập đối tượng
Nếu cả 2 tham số này không có, sẽ trả ra một tập rỗng
Nếu ename khác nil tập đối tượng là nil, hàm sẽ trả ra một tập đối tượng chỉ có một phần tử là ename đã cho
Nếu cả 2 đều khác nil, hàm sẽ trả ra tập đối tượng có thêm phần tử ename vừa thêm vào

Mình viết thử đoạn sau:


(defun c:themthu ( )
(Prompt "\nchon doi tuong goc")
(Setq dtgoc (Ssget))
(Prompt "\nchon doi tuong them")
(Setq dtthem (Ssget))
(ssadd [dtthem] [dtgoc])
(setq a (getpoint "\nChon diem chuan: "))
(setq b (getpoint a"\nCopy den diem: "))
(command ".move" dtgoc "" a B)
(Princ)
)
Nhưng lỗi, các bác gở rối giúp với!
-Trường hợp cụ thể mình đang cần thì chỉ cần thêm đối tượng vừa được tạo ra ào nhóm đối tượng sẳn có thôi.



Hế hề hề,
Cái lỗi chính là ở hàm (ssadd ....) bác ạ.
Hàm này cho thêm đối tượng (chứ không phải tập chọn) vào tập chọn cho trước. Bác dùng nó để nhét một tập chọn vào một tập chọn khác nên nó quậy thôi.
Cách sửa như bác DoanvanHa ở trường hợp thứ nhất sẽ chỉ nhét một thằng đầu tiên của tập chọn mới vào tập chọn cũ.
Trên diễn đàn đã có lisp dùng để "cộng " " trừ" các tập chọn với nhau rồi đấy bác ạ. Nếu bác muốn xài thì hoàn toàn có thể dùng được vào yêu cầu của bác.
Hề hề hề, chúc bác vui.


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

#989 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 03 December 2011 - 05:32 PM

Mình đang cần gộp 2 nhóm đối tượng với nhau theo sách dạy thì:
b. Hàm (ssadd...)
CHỨC NĂNG: Thêm một đối tượng vào tập đối tượng
CÚ PHÁP:

(ssadd [ename] [ss])
GIẢI THÍCH:
ename: Chuỗi ký tự chứa tên mã đối tượng cần thêm vào, nếu đối tượng ename đã có trong tập đối tượng, không thêm vào được nữa
ss: Tên tập đối tượng
Nếu cả 2 tham số này không có, sẽ trả ra một tập rỗng
Nếu ename khác nil tập đối tượng là nil, hàm sẽ trả ra một tập đối tượng chỉ có một phần tử là ename đã cho
Nếu cả 2 đều khác nil, hàm sẽ trả ra tập đối tượng có thêm phần tử ename vừa thêm vào

Mình viết thử đoạn sau:


(defun c:themthu ( )
(Prompt "\nchon doi tuong goc")
(Setq dtgoc (Ssget))
(Prompt "\nchon doi tuong them")
(Setq dtthem (Ssget))
(ssadd [dtthem] [dtgoc])
(setq a (getpoint "\nChon diem chuan: "))
(setq b (getpoint a"\nCopy den diem: "))
(command ".move" dtgoc "" a B)
(Princ)
)
Nhưng lỗi, các bác gở rối giúp với!
-Trường hợp cụ thể mình đang cần thì chỉ cần thêm đối tượng vừa được tạo ra ào nhóm đối tượng sẳn có thôi.

Có nhiều cách lắm anh à!
Dùng (command "select" ...) cũng là 1 cách.

(Prompt "\nchon doi tuong goc")
(Setq dtgoc (Ssget))
(Prompt "\nchon doi tuong them")
(Setq dtthem (Ssget))

(command "select" dtgoc dtthem "")
(if dtthem (setq dtgoc (ssget "P")))

Lưu ý : Anh nên giải phóng biến dtgoc dtthem và các biến cục bộ khác khi chương trình kết thúc


  • 1

#990 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 03 December 2011 - 05:49 PM

ờ há. mình quên mất là có 2 dạng. cái mình cần là add kiểu Wbock đó. tiện thể nếu được cả 2 dạng thì càng tốt. chắc rồi sẽ có lúc phải dùng.

Ơ, em nhớ là method insertBlock có dạng (vla-InsertBlock mspace ip thename xscale yscale zscale rot) và thename trong đó có thể là tên Block trong file hiện tại, hoặc tên 1 file khác mà bác ^^
  • 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


#991 Thaistreetz

Thaistreetz

    biết lệnh adcenter

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

Đã gửi 03 December 2011 - 06:24 PM

Oh, Tại mình cứ dò dẫm mấy đầu vla-add.. với vla-put.. mà không để ý còn vla-insert.. Thanks sếp hehe
  • 0

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


#992 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 03 December 2011 - 06:42 PM

Nếu xài Vla method

Oh, Tại mình cứ dò dẫm mấy đầu vla-add.. với vla-put.. mà không để ý còn vla-insert.. Thanks sếp hehe

Nếu xài vla method, các bác có thể tham khảo trong đây :
http://www.afralisp....methods_ref.htm
  • 2

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


#993 Thaistreetz

Thaistreetz

    biết lệnh adcenter

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

Đã gửi 09 December 2011 - 09:58 PM

Mình tìm thấy đoạn code này của Ketxu ở topic này
(vla-getinterfaceobject (vlax-get-acad-object) (strcat "AutoCAD.AcCmColor." (substr (getvar "acadver") 1 2)))
thấy cái interfaceObject này lạ lạ nên copy về mò mẫm nhưng chỉ thu được ít ỏi thông tin thế này.
Hình đã gửi
Ketxu hay bác nào rành về thằng interfaceObject này cho mình xin tí thông tin về nó với
- nó là cái gì?
- ta có thể thu được thông tin gì từ nó?
- hàm trên của ketxu lấy được thông tin gì vây?
  • 0

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


#994 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 09 December 2011 - 11:18 PM

Em cũng không rành, k biết trong tin học nó gọi là gì ^^ Bác nghiên cứu bài quote này nhé :
http://www.theswamp....12791#msg412791

Hàm trên thu về "Object" AutoCAD AcCmColor Interface , do trong Property của Multileader các màu sử dụng ở dạng AutoCAD Index Colour.
=> Code copy paste thật là rối rắm quá đ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


#995 Thaistreetz

Thaistreetz

    biết lệnh adcenter

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

Đã gửi 09 December 2011 - 11:30 PM

mình cũng mò mẫm topic ấy cả tối nhưng chẳng thu được gì. Cũng bởi chữ "Interface" mà lại lấy từ acad-object nên mình đoán có thể nó liên quan gì đó đến giao diện của autocad nên rất tò mò :D
  • 0

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


#996 Detailing

Detailing

    biết lệnh imageclip

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

Đã gửi 10 December 2011 - 09:12 PM

Theo mình chữ "Interface" đó ý nghĩa của nó nằm trong phần giới thiệu của Java (OOP - Lập trình hướng đối tượng) là rõ nhất (Google từ khóa Polymorphism)
Dịch ra tiếng Việt hình như là "Đa hình", các bạn Google thử xem sao, nói chung biết thì biết nhưng ko biết giải thích sao cả hehe
Theo mình thì hàm này trả về 1 acad-object mà object đó kế thừa class AcCmColor. Nói chung đối tượng nào có màu thì hàm này trả về dc.
Nó ko liên quan gì đến giao diện mình thấy cả :D
  • 1

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#997 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 11 December 2011 - 03:34 PM

Theo mình chữ "Interface" đó ý nghĩa của nó nằm trong phần giới thiệu của Java (OOP - Lập trình hướng đối tượng) là rõ nhất (Google từ khóa Polymorphism)
Dịch ra tiếng Việt hình như là "Đa hình", các bạn Google thử xem sao, nói chung biết thì biết nhưng ko biết giải thích sao cả hehe
Theo mình thì hàm này trả về 1 acad-object mà object đó kế thừa class AcCmColor. Nói chung đối tượng nào có màu thì hàm này trả về dc.
Nó ko liên quan gì đến giao diện mình thấy cả :D

Hề hề hề,
Bác detailing này xem chừng muốn đổi nick rồi đây ????
Overall hay General bác nhể???
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.

#998 Detailing

Detailing

    biết lệnh imageclip

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

Đã gửi 12 December 2011 - 08:16 AM

Hề hề hề,
Bác detailing này xem chừng muốn đổi nick rồi đây ????
Overall hay General bác nhể???
Hề hề hề.

Hehe ko hiểu ý bác Bình lắm nhưng sao lại đổi nick nhỉ???
  • 0

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#999 hochoaivandot

hochoaivandot

    biết dimradius

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

Đã gửi 12 December 2011 - 05:52 PM

Mọi người chỉ dùm mình code để nhập dữ liệu như lệnh PEDIT Select polyline or [Multiple]:
Chọn đối tượng (entsel) cũng được mà nhập key cũng được.
Mình thử initget rồi mà không được. Cảm ơn mọi người.
  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#1000 hochoaivandot

hochoaivandot

    biết dimradius

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

Đã gửi 12 December 2011 - 07:53 PM

Mọi người chỉ dùm mình code để nhập dữ liệu như lệnh PEDIT Select polyline or [Multiple]:
Chọn đối tượng (entsel) cũng được mà nhập key cũng được.
Mình thử initget rồi mà không được. Cảm ơn mọi người.


Minh làm được rồi. tốn đất cadviet quá. Xin lỗi mọi người
(initget 128 "Multiple")
(setq en (entsel "\nSelect polyline or [Multiple]:"))

  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC