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

#641 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 12 March 2011 - 04:53 PM

Với thằng dimRadius hay dimDiameter thì làm gì có DimensionLineExtend nên Cad báo lỗi.
Bạn thử xóa mấy thằng đó đi, chỉ để dimLinear xem sao ?


Em thử thêm 1 thằng dimLinear vẫn không sửa được = lisp đầu tiên bác ah
Em không biết tại sao nó không nhận cái DimensionLineExtendExtensionLineExtend trong lisp đầu tiên mặc dù các cái khác nó nhận đc hết :wub:
  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#642 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 12 March 2011 - 05:17 PM

Bác Tuệ cà bác Bình nói chí phải.Dùng hàm gọi thì tiện hơn nhiều ^^
Bạn cũng có thể dùng vl-catch-all-apply và các hàm liên quan để bắt lỗi, kiểm tra và bỏ qua nó.
Như ví dụ dưới đây, nếu 1 đối tượng trong tập chọn (line chẳng hạn) không có thuộc tính Height thì nó bỏ qua và chuyển sang đối tượng khác ^^

(defun c:1()
(foreach x (acet-ss-to-list (ssget))
(vl-catch-all-apply
'(lambda () (vlax-put-property (vlax-ename->vla-object x) 'Height 5))
)
)
)


P/S : srr, mình post bài nên mới biết bạn vừa gửi file, chưa có dịp test, n tạm thời bạn cứ thử ý kiến của mình xem sao
  • 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


#643 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 12 March 2011 - 05:36 PM

Em thử thêm 1 thằng dimLinear vẫn không sửa được = lisp đầu tiên bác ah
Em không biết tại sao nó không nhận cái DimensionLineExtendExtensionLineExtend trong lisp đầu tiên mặc dù các cái khác nó nhận đc hết :wub:

Lisp Chạy ầm ầm
Tue_NV gửi lại file cho bạn chạy lại thử .
Bạn set thiều thuộc tính ArrowheadSize và TextGap thì Tue_NV cũng thêm vào rồi.
Bạn chạy lại thử
File cua bạn đây :
http://www.cadviet.c...3/ftnew_1_1.lsp
Như anh gia_bach đã nói ở trên, cho nên để chắc chắn ta dùng hàm vlax-property-available-p để kiểm tra obj có thuộc tính Pro không rồi mới gán, nếu nó không có mà cứ gán thì .. báo lổi
  • 1

#644 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

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

Hix. Cho xin lỗi các bác!!!
Chắc tại lúc em copy với paste thế nào xóa nhầm mất thằng đấy lại cứ hỏi tại sao :wacko: . Làm các bác 1 phen vất vả. Hix
  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#645 hochoaivandot

hochoaivandot

    biết dimradius

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

Đã gửi 12 March 2011 - 09:53 PM

Cho em hỏi vấn đề về VIEWPORT. Đang ở môi trường layout, trong 1viewport.
Làm sao để lấy các thông số tỷ lệ view của viewport này là bao nhiêu XP.
Xin cảm ơn diễn đàn.
  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#646 hochoaivandot

hochoaivandot

    biết dimradius

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

Đã gửi 12 March 2011 - 10:27 PM

Cho em hỏi vấn đề về VIEWPORT. Đang ở môi trường layout, trong 1viewport.
Làm sao để lấy các thông số tỷ lệ view của viewport này là bao nhiêu XP.
Xin cảm ơn diễn đàn.


Xin lỗi mọi người. Sau khi post bài em đọc kỹ lại help đã có câu trả lời.
Vì diễn đàn không có chức năng xóa bài đã post.
Nhân đây em cũng ghi đáp án để có ai quan tầm
Note The ZOOM XP factor is calculated with the following formula: group_41 / group_45 (or pspace_height / mspace_height). _Trích help.
Em sẽ rút kinh nghiệm tự tìm hiểu kỹ trước khi post bài.
  • 2

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#647 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 27 March 2011 - 05:55 PM

Ai biết hàm kiểm tra xem 1 file có đang mở hay không?
Và hàm tạo 1 thư mục (không dùng lệnh SHELL)?
Xin cám ơ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.


#648 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 27 March 2011 - 09:48 PM

Hàm tạo thư mục bạn có thể tham khảo vl-mkdir

(defun makepath (path / temp items)
(vl-load-com)
(while (/= temp path)
(setq items (cons (vl-filename-base path) items)
temp path
path (vl-filename-directory path)
)
)
(foreach item (cdr items)
(vl-mkdir (strcat path item))
(setq path (strcat path item "\\"))
)
)

Tham khảo
Tham khảo
  • 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


#649 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 29 March 2011 - 07:17 AM

Hàm tạo thư mục bạn có thể tham khảo vl-mkdir


Tham khảo
Tham khảo

Cám ơn bác Ketxu. Đã ổn hàm tạo thư mục. Còn hàm kiểm tra xem 1 file nào đó có được mở hay không?
(Với đuôi file bất kỳ). Ví dụ tôi đang mở 1 file excel "A.xls" và tôi muốn kiểm tra file này có đang
mở hay không, mục đích là để ghi file cho chắc ăn (vì khi file đang mở mà dùng (open "A.xls" "w") thì
nó xóa sạch nội dung 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.


#650 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 29 March 2011 - 08:24 AM

Vậy bạn thử phương thức appen (open file "a") xem sao ?
  • 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


#651 inhild

inhild

    Chưa sử dụng CAD

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

Đã gửi 29 March 2011 - 08:35 AM

HÌ, nốt hỏi, Jin hỏi tiếp: muốn chọn một đối tượng bằng một điểm trên đối tượng đó thì làm thế nào Sách quảng cáo rằng hàm ENTSEL còn cho phép chọn đối tượng bằng cách nhập toạ độ điểm Ví dụ như đường tròn gốc '(0 0) , bán kính r = 20 Jin muốn chọn đưòng tròn đó bằng điểm '(20 0), nhưng cú pháp (setq Sel1 (entsel '(20 0))) lại không mang lại kết quả Lệnh đúng phải như thế nào vậy?


  • 0

#652 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 04 April 2011 - 06:09 PM

Cho em hỏi có hàm nào của líp như thế này ko nhỉ:
cho chuỗi : "abcad"
bây h muốn thay chữ a trong chuỗi trên thành aa ko nhỉ?
"abcad" >>>> "aabcaad"
:wacko:
  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#653 hochoaivandot

hochoaivandot

    biết dimradius

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

Đã gửi 04 April 2011 - 06:39 PM

Cho em hỏi có hàm nào của líp như thế này ko nhỉ:
cho chuỗi : "abcad"
bây h muốn thay chữ a trong chuỗi trên thành aa ko nhỉ?
"abcad" >>>> "aabcaad"
:wacko:



(vl-string-subst new-str pattern string [start-pos])
Bạn thử đúng không nhé : (vl-string-subst "aa" "a" "abcad")
  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#654 hochoaivandot

hochoaivandot

    biết dimradius

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

Đã gửi 04 April 2011 - 06:55 PM

(vl-string-subst new-str pattern string [start-pos])
Bạn thử đúng không nhé : (vl-string-subst "aa" "a" "abcad")


Nếu chưa đúg ý bạn xem cái này của Express thử xem sao:
(acet-str-replace find replace string [ignoreCase [useRegExp [count]]])
(acet-str-replace "a" "aa" "abcad")
Nhưng Cad phải cài Express đó bạn nhé
  • 1

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#655 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 04 April 2011 - 07:00 PM

Nếu chưa đúg ý bạn xem cái này của Express thử xem sao:
(acet-str-replace find replace string [ignoreCase [useRegExp [count]]])
(acet-str-replace "a" "aa" "abcad")
Nhưng Cad phải cài Express đó bạn nhé

Lisp thì như vầy :

(defun tthe (find rep str)
;copyright by Tue_NV
(vl-list->string
(apply 'append (subst (vl-string->list rep) (vl-string->list find)
(mapcar '(lambda(x) (list x))
(vl-string->list str)
)
)
)
)
)
thử :
(tthe "a" "aa" "abcad" )
  • 1

#656 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 04 April 2011 - 07:08 PM

hehe!! Mình làm đc rồi. cảm ơn 2 bác nhé :lol:
  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#657 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 05 April 2011 - 09:24 AM

Hàm entsel có cú pháp đầy đủ là (entsel [msg]), trong đó [msg] là dòng ký tự.
Hàm này chọn 1 đối tượng bằng cách pick vào nó. Hàm trả về tên đối tượng và tọa độ điểm pick.
Như vậy, hàm này không đáp ứng các y/c mà bạn đặt ra, nên bạn không thể dùng cú pháp như vậy để chọ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.


#658 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 05 April 2011 - 09:41 AM

:) Câu bày bác Jin hỏi từ lâu lắc rồi, bạn ấy quote lại thôi ^^
Nếu đạt tiêu chí có thể dùng ssget hoặc nentselp :)
@bác Tuệ : VL kia 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


#659 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 05 April 2011 - 12:09 PM

....
@bác Tuệ : VL kia mà ^^

Đúng là VL, còn đây là Lisp:

(defun tthe (find rep str)
;copyright by Tue_NV
(defun str->list(str / res i)
(setq i 0)
(Repeat (strlen str)
(setq res (append res (list (ascii (substr str (setq i (1+ i)) 1)))))
)
res
)
(apply 'strcat
(mapcar 'chr
(apply 'append (subst (str->list rep) (str->list find)
(mapcar '(lambda(x) (list x))
(str->list str)
)
)
)
)
)
)
thử :
(tthe "a" "aa" "abcad" )
  • 1

#660 Thaistreetz

Thaistreetz

    biết lệnh adcenter

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

Đã gửi 06 April 2011 - 03:35 PM

Đúng là VL, còn đây là Lisp:


(defun tthe (find rep str)
;copyright by Tue_NV
(defun str->list(str / res i)
(setq i 0)
(Repeat (strlen str)
(setq res (append res (list (ascii (substr str (setq i (1+ i)) 1)))))
)
res
)
(apply 'strcat
(mapcar 'chr
(apply 'append (subst (str->list rep) (str->list find)
(mapcar '(lambda(x) (list x))
(str->list str)
)
)
)
)
)
)
thử :
(tthe "a" "aa" "abcad" )

thay vì viết thế này: (mapcar '(lambda(x)(list x)...
Chỉ cần viết thế này là đuợc rồi bác ạ: (mapcar 'list ...
Bác vừa dùng hàm lambda để định nghĩa 1 hàm không tên chức năng y hệt hàm list
  • 0

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