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

#741 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 24 June 2011 - 09:38 AM

Cho mình hỏi về đoạn code này :
..........
Nó không làm việc với textstyles. Nguyên nhân có thể là do một số text style thuộc tính name là Real Only. Vậy làm sao để đổi được tên các style này, hoặc nếu ko đổi đc thì bỏ qua ko thực hiện với các style này ?

Nguyên nhân thì bạn biết rồi (do một số text style thuộc tính name là Real Only).

Cách thực hiện thì Ketxu cũng đã có đề nghị.

Nhìn code loòng thoòng quá, hay là bạn tận dụng -rename đi cho ngắn gọn dễ hiểu ^^

Do bạn hỏi nên tôi nghĩ là bạn tự code đuợc.
  • 0

#742 codered8x

codered8x

    biết lệnh copy

  • Members
  • PipPipPip
  • 119 Bài viết
Điểm đánh giá: 18 (tàm tạm)

Đã gửi 24 June 2011 - 09:52 AM

Okie, dùng command rename thì mình biết rồi, ý mình muốn hỏi là có cak nào khắc phục theo phương pháp này ko thôi.
Nếu thêm điều kiện :
(if(vlax-property-available-p Object "name" T)
(progn ...........)
)
thì tất cả các text style đều ko đổi đc tên, dumpt 1 style bất kỳ thì thấy :
1_$ (vlax-dump-object Object t)
; IAcadTextStyle: A named, saved collection of settings that determines the appearance of text characters
; Property values:
; Application (RO) = #<VLA-OBJECT IAcadApplication 00eeb450>
; BigFontFile = ""
; Document (RO) = #<VLA-OBJECT IAcadDocument 09513b94>
; fontFile = "Romans"
; Handle (RO) = "3CB"
; HasExtensionDictionary (RO) = 0
; Height = 0.002
; LastHeight = 0.002
; Name (RO) = "m-2Arial-t" <<=========
; ObjectID (RO) = 2129351896
; ObjectName (RO) = "AcDbTextStyleTableRecord"
; ObliqueAngle = 0.0
; OwnerID (RO) = 2129345560
; TextGenerationFlag = 0
; Width = 1.0
; Methods supported:
; Delete ()
; GetExtensionDictionary ()
; GetFont (5)
; GetXData (3)
; SetFont (5)
; SetXData (2)
T
Vậy ko đổi đc tên của text style bằng (vla-put-name ...) ?
P.s : code diễn đàn không tiện lợi lắm, mình gõ tiếng việt nhiều khi nhảy lung tung.
  • 0

#743 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 June 2011 - 01:11 AM

câu hỏi này post vào đây sẽ là không đúng chỗ. nhưng vì muốn ai đó có trách nhiệm với box autolisp này dễ dàng đọc được nó nên mình quyết định post.
Câu hỏi là: Có chuyện gì với box autolisp này vậy? sao tự nhiên hôm nay mình thấy các topic được dính stick "đáng xem" một cách vô tội vạ thế nhỉ? mất nguyên cả trang đầu và 1/2 trang thứ 2 gồm toàn các topic kiểu "đáng xem" mà nói thực là nhiều trong số đó chẳng đáng xem chút nào.
  • 1

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


#744 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 June 2011 - 07:26 AM

câu hỏi này post vào đây sẽ là không đúng chỗ. nhưng vì muốn ai đó có trách nhiệm với box autolisp này dễ dàng đọc được nó nên mình quyết định post.
Câu hỏi là: Có chuyện gì với box autolisp này vậy? sao tự nhiên hôm nay mình thấy các topic được dính stick "đáng xem" một cách vô tội vạ thế nhỉ? mất nguyên cả trang đầu và 1/2 trang thứ 2 gồm toàn các topic kiểu "đáng xem" mà nói thực là nhiều trong số đó chẳng đáng xem chút nào.

Thống nhất với ý kiến của bác Thaistreetz. Định hỏi từ tối qua nhưng cứ ngỡ chắc bị virut nên chờ đến sáng nay, hóa ra vẫn thế. Có thay đổi thì cũng nên cho bàn dân thiên hạ biết với chứ. Với lại, kiểu bố trí mới này... sao sao ấy.
  • 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.


#745 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 25 June 2011 - 08:48 AM

câu hỏi này post vào đây sẽ là không đúng chỗ. nhưng vì muốn ai đó có trách nhiệm với box autolisp này dễ dàng đọc được nó nên mình quyết định post.
Câu hỏi là: Có chuyện gì với box autolisp này vậy? sao tự nhiên hôm nay mình thấy các topic được dính stick "đáng xem" một cách vô tội vạ thế nhỉ? mất nguyên cả trang đầu và 1/2 trang thứ 2 gồm toàn các topic kiểu "đáng xem" mà nói thực là nhiều trong số đó chẳng đáng xem chút nào.


Tí e ngồi bỏ bớt Stick đi, chắc bác Mod nào đọc thấy hay quá Stick lên đó mà :)
Với lại "đáng xem" hay không cũng tùy người mà bác ^^

P/S : đã bỏ bớt stick (mặc dù hơi tiếc mấy topic hay bị chìm xuống ^^)

Thống nhất với ý kiến của bác Thaistreetz. Định hỏi từ tối qua nhưng cứ ngỡ chắc bị virut nên chờ đến sáng nay, hóa ra vẫn thế. Có thay đổi thì cũng nên cho bàn dân thiên hạ biết với chứ. Với lại, kiểu bố trí mới này... sao sao ấy.

:) có những thay đổi k báo cáo hết với mọi người được ^^


@codered8x : Với command thì Style nào cũng đổi được. Còn nếu bạn dump với bất kỳ style nào cũng nhận được thuộc tính Name (RO) (?), cũng có thể nói k dùng vla-put-name với TextStyle
  • 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


#746 aliosa

aliosa

    biết vẽ polygon

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

Đã gửi 04 July 2011 - 10:14 AM

Bạn thử đệ quy xem sao :

(defun Remove_dup ( lst )(if lst (cons (car lst) (Remove_dup (vl-remove (car lst) (cdr lst))))))

Chào các bạn. Đoạn Code trên ngắn gọn và rất hữu ích. Nếu có thể rất mong các bạn giúp mình giải thích cốt và quá trình hoạt động của Code được không!
Chân thành cảm ơn cộng đồng Cadviet !!!
  • 0

#747 hochoaivandot

hochoaivandot

    biết dimradius

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

Đã gửi 07 July 2011 - 10:57 AM

forum cho em hỏi làm thế nào để láy thông tin của 1 dimstyle hoặc textstyle.
Thông tin ở đây chính là các thông số chiều cao texxt, font của text, kích thước mũi tên ...
Hình đã gửi
Hình đã gửi
Cảm ơn các anh chị em.
  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#748 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 07 July 2011 - 01:42 PM

forum cho em hỏi làm thế nào để láy thông tin của 1 dimstyle hoặc textstyle.
Thông tin ở đây chính là các thông số chiều cao texxt, font của text, kích thước mũi tên ...
Cảm ơn các anh chị em.

Bạn dùng lệnh "SETVAR" để biết được các thông tin của bản vẽ hiện hành.
Còn để lấy thông tin thì bạn dùng hàm "GETVAR". Ví dụ để lấy style của dimension:
(setq txt (getvar "dimstyle"))
v.v...
  • 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.


#749 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 07 July 2011 - 01:51 PM

forum cho em hỏi làm thế nào để láy thông tin của 1 dimstyle hoặc textstyle.
Thông tin ở đây chính là các thông số chiều cao texxt, font của text, kích thước mũi tên ...
Hình đã gửi
Hình đã gửi
Cảm ơn các anh chị em.

Mới trả lời cho bạn hochoaihetdot vừa xong :rolleyes:
http://www.cadviet.c...showtopic=48373
  • 1

#750 hochoaivandot

hochoaivandot

    biết dimradius

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

Đã gửi 07 July 2011 - 02:44 PM

Bạn dùng lệnh "SETVAR" để biết được các thông tin của bản vẽ hiện hành.
Còn để lấy thông tin thì bạn dùng hàm "GETVAR". Ví dụ để lấy style của dimension:
(setq txt (getvar "dimstyle"))
v.v...


Cảm ơn Doan Van Ha và TUE_NV đã quan tâm giúp đỡ.
Mình xin lỗi vì mình dốt quá nên đặt vấn đề không rõ. Nên phải hỏi lại lần thứ 2.
Vấn đề của mình không phải là lấy tên của Dimstyle hiện hành. Mà mình muốn các thông tin của Dimstyle đó,
Chẳng hạn bản vẽ của mình có 5 Dimstyle. Trong đó mình muốn có các thông tin về Dimstyle hiện hành chẳng hạn. Ví dụ Dimstyle hiện hành là tên là TKCG-D1_50 chẳng hạn. Mình muốn các thông tin của Dimstyle này như là :
+ Dim này đã được người dùng tạo ra có Color của Dimension line là màu gì
+ Dim này đã được người dùng tạo ra có Baseline Spacing của Dimension line là bao nhiêu?
+ Trong mục Symbols and Arrows thì Leader của Arrowheads là gì, là mũi tên hay gì gì...
+ Trong mục Text thì Dim này được người dùng tạo ra thiết lập TextStyle gì, Text Color màu gì, Text height là bao nhiêu
+ Scale factor được người dùng thiết lập là bao nhiêu
+ ..................................................
Nói chung là tấc cả các thông số của Dimstyle.
  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#751 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 07 July 2011 - 02:55 PM

Cảm ơn Doan Van Ha và TUE_NV đã quan tâm giúp đỡ.
Mình xin lỗi vì mình dốt quá nên đặt vấn đề không rõ. Nên phải hỏi lại lần thứ 2.
Vấn đề của mình không phải là lấy tên của Dimstyle hiện hành. Mà mình muốn các thông tin của Dimstyle đó,
Chẳng hạn bản vẽ của mình có 5 Dimstyle. Trong đó mình muốn có các thông tin về Dimstyle hiện hành chẳng hạn. Ví dụ Dimstyle hiện hành là tên là TKCG-D1_50 chẳng hạn. Mình muốn các thông tin của Dimstyle này như là :
+ Dim này đã được người dùng tạo ra có Color của Dimension line là màu gì
+ Dim này đã được người dùng tạo ra có Baseline Spacing của Dimension line là bao nhiêu?
+ Trong mục Symbols and Arrows thì Leader của Arrowheads là gì, là mũi tên hay gì gì...
+ Trong mục Text thì Dim này được người dùng tạo ra thiết lập TextStyle gì, Text Color màu gì, Text height là bao nhiêu
+ Scale factor được người dùng thiết lập là bao nhiêu
+ ..................................................
Nói chung là tấc cả các thông số của Dimstyle.

Ủa, bạn dùng lệnh SETVAR là biết hết tất cả thông tin của Dimension mà!
Hay rõ hơn, bạn dùng lệnh SYSVDLG vậy?
  • 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.


#752 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 07 July 2011 - 02:56 PM

Cảm ơn Doan Van Ha và TUE_NV đã quan tâm giúp đỡ.
Mình xin lỗi vì mình dốt quá nên đặt vấn đề không rõ. Nên phải hỏi lại lần thứ 2.
Vấn đề của mình không phải là lấy tên của Dimstyle hiện hành. Mà mình muốn các thông tin của Dimstyle đó,
Chẳng hạn bản vẽ của mình có 5 Dimstyle. Trong đó mình muốn có các thông tin về Dimstyle hiện hành chẳng hạn. Ví dụ Dimstyle hiện hành là tên là TKCG-D1_50 chẳng hạn. Mình muốn các thông tin của Dimstyle này như là :
+ Dim này đã được người dùng tạo ra có Color của Dimension line là màu gì
+ Dim này đã được người dùng tạo ra có Baseline Spacing của Dimension line là bao nhiêu?
+ Trong mục Symbols and Arrows thì Leader của Arrowheads là gì, là mũi tên hay gì gì...
+ Trong mục Text thì Dim này được người dùng tạo ra thiết lập TextStyle gì, Text Color màu gì, Text height là bao nhiêu
+ Scale factor được người dùng thiết lập là bao nhiêu
+ ..................................................
Nói chung là tấc cả các thông số của Dimstyle.

Cái này, bạn xử lý được
Dùng hàm TblNext duyệt qua từng anh DIMSTYLE
Qua từng phần tử DIMSTYLE
Thiết lập cho nó thành DIMSTYLE hiện hành
Lấy giá trị các biến hệ thống của DIMENSION (theo gợi ý của Tue_NV và hàm getvar) -> đưa vào kết quả (có thể là 1 List) chẳng hạn
Cứ thế cho đến DIMSTYLE cuối cùng
.....
Có thể xuất kết quả thu được trong 1 Dialog cho trực quan và sinh động
OK
Chúc bạn thành công.
  • 1

#753 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 07 July 2011 - 03:40 PM

Bổ sung thêm cách dùng lệnh -dimstyle -> V (variables) -> đánh tên 1 dimstyle -> THu được 1 list giá trị các biến liên quan của dimstyle kèm giải thích, bác cứ cóp sang chỗ khác rồi dùng thôi, giải thích cũng ngắn gọn dễ hiểu. Các biến liên quan đến DIm hầu hếtg có tiền tố DIM đằng trước, có thể nhảy vào Help để xào thê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


#754 hochoaivandot

hochoaivandot

    biết dimradius

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

Đã gửi 07 July 2011 - 03:44 PM

Cái này, bạn xử lý được
Dùng hàm TblNext duyệt qua từng anh DIMSTYLE
Qua từng phần tử DIMSTYLE
Thiết lập cho nó thành DIMSTYLE hiện hành
Lấy giá trị các biến hệ thống của DIMENSION (theo gợi ý của Tue_NV và hàm getvar) -> đưa vào kết quả (có thể là 1 List) chẳng hạn
Cứ thế cho đến DIMSTYLE cuối cùng
.....
Có thể xuất kết quả thu được trong 1 Dialog cho trực quan và sinh động
OK
Chúc bạn thành công.



Em hiểu rồi anh TUE_NV ạ. Hì. Do không đọc kỹ bài viết của anh bên topic mỗi ngày một biến hệ thống.
Tức là biến hệ thống DIMTXSTY sẽ trả về Text Style của DimStyle hiện hành
Muốn có thông số của Dimstyle nào thì trước hết đặt hắn hiện hành rồi lấy giá trị biến hệ thống tương ứng của thông tin cần.
Cảm ơn Tue_NV vì thông tin bổ ích.
Thank Doan Van Ha đã giúp.
  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#755 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 13 July 2011 - 04:40 PM

Trong lsp, có hàm nào tìm được đường dẫn thư mục của 1 file vừa được load không hè? Ai biết xin chỉ giùm!
  • 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.


#756 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 13 July 2011 - 04:47 PM

Bác ơi, file được load là file gì, và load bằng phương thức nào ạ :o
  • 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


#757 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 13 July 2011 - 04:53 PM

Bác ơi, file được load là file gì, và load bằng phương thức nào ạ :o

Loaded: lsp, fas, vlx. Load bằng cách vào "Load Application..."
  • 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.


#758 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 13 July 2011 - 05:03 PM

Trong lsp, có hàm nào tìm được đường dẫn thư mục của 1 file vừa được load không hè? Ai biết xin chỉ giùm!
....
Loaded: lsp, fas, vlx. Load bằng cách vào "Load Application..."

Bạn đọc topic này :
http://www.cadviet.c...?showtopic=3833
  • 1

#759 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 13 July 2011 - 05:21 PM

Bạn đọc topic này :
http://www.cadviet.c...?showtopic=3833

Thank bác Tue_NV!
Sẵn hỏi luôn, không biết có ngớ ngẩn lắm không:
Có hàm lsp nào đặt 1 thư mục vào hàm thư mục hiên hành không 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.


#760 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 13 July 2011 - 05:39 PM

Thank bác Tue_NV!
Sẵn hỏi luôn, không biết có ngớ ngẩn lắm không:
Có hàm lsp nào đặt 1 thư mục vào hàm thư mục hiên hành không hè?

đặt ở đây có nghĩa là gì? Là MOVE hay COPY hay là CREAT 1 thư mục mới. Và thư mục hiện hành được chỉ định thế nào? Bạn nói rõ 1 tí....
  • 0