Jump to content
InfoFile
Tác giả: kedensau88
Bài viết gốc: 185241
Tên lệnh: eb
Cách lấy số liệu từ file txt
Anh xem giúp cho em chương trình này.Em vẫn giữ nguyên hàm của anh ketxu,em chỉ thay cái hàm tính ebows45 bằng 1 hàm khác có nhiều biến hơn là nó báo lỗi.

(defun DCL ( lstType / fl ret dcl_id Return# add_lst tmp)
(defun add_lst (key lst method)
(start_list key method)
(mapcar 'add_list lst)
(end_list)
)
(vl-load-com)
(setq fl (vl-filename-mktemp "mip" nil ".dcl"))
(setq ret...
>>
Anh xem giúp cho em chương trình này.Em vẫn giữ nguyên hàm của anh ketxu,em chỉ thay cái hàm tính ebows45 bằng 1 hàm khác có nhiều biến hơn là nó báo lỗi.

(defun DCL ( lstType / fl ret dcl_id Return# add_lst tmp)
(defun add_lst (key lst method)
(start_list key method)
(mapcar 'add_list lst)
(end_list)
)
(vl-load-com)
(setq fl (vl-filename-mktemp "mip" nil ".dcl"))
(setq ret (open fl "w"))
(mapcar
'(lambda (x) (write-line x ret))
(list
" mip_msg : dialog { label = \"Elbowls\";"
" : boxed_column { label = \"Chon loai Elbowls\";"
" : list_box { key = \"mylist\";width = 17;}"
" } "
" : boxed_column { label = \"Chon loai NPS\";"
" : popup_list {key = \"NPS\"; width = 17; height = 8;} "
" } "
" : row { "
" : button {label = \"OK\"; key = \"accept\"; width = 10; fixed_width = true;} "
" : button {label = \"Cancel\"; is_cancel = true; key = \"cancel\"; width = 10; fixed_width = true;}"
" } "
"} "
)
)
(setq ret (close ret))
(if (and (not (minusp (setq dcl_id (load_dialog fl))))
(new_dialog "mip_msg" dcl_id)
)
(progn
(add_lst "mylist" '("Elbowls 45" "Elbowls 90" "Elbowls 180") 3)
(set_tile "mylist" "0")
(add_lst "NPS" (mapcar '(lambda (x)(vl-princ-to-string (car x))) (cadadr lst)) 3)
;Xu ly khi pick chon loai Elbowls
(action_tile "mylist"
"(add_lst \"NPS\" (mapcar '(lambda (x)(vl-princ-to-string (car x))) (cadr (assoc $value lst))) 3)"
)
(action_tile "accept" "(setq ret (list (get_tile \"mylist\")
(car (setq tmp
(cadr
(nth (atoi (get_tile \"NPS\")) (cadr (assoc (get_tile \"mylist\") lst))))))
(last tmp)
))(done_dialog)")
(start_dialog)
)
)
(unload_dialog dcl_id)
(vl-file-delete fl)
ret
)

(defun c:eb (/ PR RL lst0 lst1 lst2 lst val pt)

;Lay ten file
(or fn0
(setq fn0 (findfile "Nhap ten file mac dinh vao day"))
(setq fn0 (getfiled "Chon file chua so lieu Elbowls 45 " "" "txt" 2)))
(or fn1
(setq fn1 (findfile "Nhap ten file mac dinh vao day"))
(setq fn1 (getfiled "Chon file chua so lieu Elbowls 90 " "" "txt" 2)))
(or fn2
(setq fn2 (findfile "Nhap ten file mac dinh vao day"))
(setq fn2 (getfiled "Chon file chua so lieu Elbowls 180 " "" "txt" 2)))
;Het lay ten file
(if (and fn0 fn1 fn2)
(progn
; Doc tung file dua vao list
(setq PR (open fn0 "r") RL (read-line PR))
(while (setq RL (read-line PR))
(setq RL (read (strcat "(" RL ")"))
lst0 (append lst0 (list (list (car RL)(cdr RL))))
)
)
(setq lst0 (list "0" lst0))
(close PR)
; Doc file fn1 dua vao list
(setq PR (open fn1 "r") RL (read-line PR))
(while (setq RL (read-line PR))
(setq RL (read (strcat "(" RL ")"))
lst1 (append lst1 (list (list (car RL)(cdr RL))))
)
)
(setq lst1 (list "1" lst1))
(close PR)
(setq PR (open fn2 "r") RL (read-line PR))
(while (setq RL (read-line PR))
(setq RL (read (strcat "(" RL ")"))
lst2 (append lst2 (list (list (car RL)(cdr RL))))
)
)
(setq lst2 (list "2" lst2))
(close PR)
(setq lst (list lst0 lst1 lst2))
(if
(and (setq val (DCL lst))
(setq pt (getpoint "\nDiem chen:"))
)
(apply 'draw (append val (list pt)))
(princ "Loi")
)
);Het Progn
(princ "\nThieu file")
)
(princ)
)


;----EM THAY CHUONG TRINH KHAC VAO DAY--------------------------------
(defun draw (Loai D X G tsmall WT T1 A r1 C D1 P1 / OldOS)
(setq OldOs(getvar "osmode"))
(setvar "osmode" 0)
(cond
((= Loai "0")
(setq
P2(polar P1 pi G)
P3(polar P2 (* pi 1.5) 6.35)
P4(polar P3 pi (/(- D G) 2))
P5(polar P4 (* pi 1.5) tsmall)
P6(polar P5 0.0 (/(- D X) 2))
P7 (list (+ (car P6) (/ (- X A) 2)) (- (cadr P6) (- T1 tsmall)) (caddr p6))
P8(polar P7 0.0 A)
P9(list (+ (car P8) (/ (- X A) 2)) (+ (cadr P8) (- T1 tsmall)) (caddr p8))
P10(polar P9 0.0 (/(- D X) 2))
P11(polar P10 (/ pi 2) tsmall)
P12(polar P11 pi (/(- D G) 2))
P13(polar P1 pi (/(- G (- A (* WT 2))) 2))
P14(polar P13 (* pi 1.5) (+ T1 6.35))
P15(polar P13 pi (- A (* WT 2)))
P16(polar P15 (* pi 1.5) (+ T1 6.35))
P17(polar P3 pi (/(- C G D1) 2))
P18(polar P17 (* pi 1.5) tsmall)
P19(polar P17 pi D1)
P20(polar P19 (* pi 1.5) tsmall)
P21(polar P12 0.0 (/(- C G D1) 2))
P22(polar P21 (* pi 1.5) tsmall)
P23(polar P21 0.0 D1)
P24(polar P23 (* pi 1.5) tsmall)
P25(list (- (car P24) (/ D1 2)) (- (cadr P24) 10) (caddr p24))
P26(polar P25 (* pi 0.5) (+ tsmall 20))
P27(list (- (car P8) (/ A 2)) (- (cadr P8) 15) (caddr p8))
P28(polar P27 (* pi 0.5) (+ T1 36.35))
P29(list (- (car P18) (/ D1 2)) (- (cadr P18) 10) (caddr p18))
P30(polar P29 (* pi 0.5) (+ tsmall 20))
)
(COMMAND "LAYER" "M" "3" "C" "3" "" "L" "CONTINUOUS" "" "")
(command "line" P1 P2 P3 P4 P5 "")
(command "line" P5 P6 "")
(setq A1 (entlast))
(command "line" P6 P7 "")
(setq B1 (entlast))
(command "line" P7 P8 "")
(command "line" P8 P9 "")
(setq C1 (entlast))
(command "line" P9 P10 "")
(setq D1 (entlast))
(command "line" P10 P11 P12 p1 "")
(command "line" P13 P14 "")
(command "line" P15 P16 "")
(command "line" P17 P18 "")
(command "line" P19 P20 "")
(command "line" P21 P22 "")
(command "line" P23 P24 "")
(COMMAND "LAYER" "M" "1" "C" "1" "" "L" "CENTER2" "" "")
(command "line" P25 P26 "")
(command "line" P27 P28 "")
(command "line" P29 P30 "")
(command "fillet" "r" r1 "" "fillet" A1 B1 )
(command "fillet" "" "fillet" C1 D1 )
(command "zoom" "w" P26 P29)
)
);Ket thuc phan loai COnd
;Phan nay la phan chung
(setvar "osmode" OldOs)
(princ)
)

<<

Filename: 185241_eb.lsp
Tác giả: gia_bach
Bài viết gốc: 185245
Tên lệnh: ctext
Lisp di chuyển text của dim


Thường thì những yêu cầu "chen ngang" như vầy ít đuợc mọi nguời quan tâm.
Tuy nhiên để động viên bạn bắt đầu học lisp và hơn nữa .. nick của bạn có 1 phần giống nick của tui ... :)
Mời bạn tham khảo :

(defun c:ctext(/ e i kqua num obj ss ssle tmp str zero); Calculator
...
>>

Thường thì những yêu cầu "chen ngang" như vầy ít đuợc mọi nguời quan tâm.
Tuy nhiên để động viên bạn bắt đầu học lisp và hơn nữa .. nick của bạn có 1 phần giống nick của tui ... :)
Mời bạn tham khảo :

(defun c:ctext(/ e i kqua num obj ss ssle tmp str zero); Calculator
(vl-load-com)
(or ssle (setq ssle 2))
(setq tmp (getint (strcat "\nSo so le <" (itoa ssle) ">: ")))
(if tmp (setq ssle tmp))
(prompt "\nChon text de Cong:")
(if (setq ss (ssget (list (cons 0 "TEXT")(cons 1 "*L*"))))
(progn
(setq kqua 0 i -1)
(while (setq e (ssname ss (setq i (1+ i))))
(setq str (vla-get-TextString (vlax-ename->vla-object e) )
num (substr str (+ 2(vl-string-position (ascii"L") str nil t) )))
(if (setq num (distof num))
(setq kqua (+ kqua num))))
(setq zero (getvar "dimzin"))
(setvar "dimzin" 0)
(princ (strcat "\nKet qua = " (setq kqua (rtos kqua 2 ssle)) ""))
(if (and
(setq obj (entsel "\nChon text de ghi ket qua hay Enter de ket thuc."))
(setq obj (vlax-ename->vla-object (car obj)))
(eq (vlax-get obj 'ObjectName) "AcDbText") )
(vla-put-TextString obj kqua) )
(setvar "dimzin" zero)))
(princ))

Ps : Cách giữ lời hứa tốt nhất là 'Đừng hứa gì cả"
<<

Filename: 185245_ctext.lsp
Tác giả: Minh Heaven
Bài viết gốc: 184580
Tên lệnh: vtg
code để vẽ tam giác
Mình có viết một đoạn code để vẽ tam giác nhưng không hiểu sao lại không hoạt động.Mọi người chỉnh sửa giúp mình được không?

( defun c:vtg (/ b l p0 x0 y0 b2 p1 p2 p3)
(setq i 0)
(setq xoay ( getint "xoay chu hay khong (1-xoay/0-khong): "))
(while
(setq p0 ( getpoint "diemve:" ))
(setq x0 (car p0)
(setq y0 (cadr p0)
(setq b2 (* b 0.5 )
(setq p1 ( list (x0...
>>
Mình có viết một đoạn code để vẽ tam giác nhưng không hiểu sao lại không hoạt động.Mọi người chỉnh sửa giúp mình được không?

( defun c:vtg (/ b l p0 x0 y0 b2 p1 p2 p3)
(setq i 0)
(setq xoay ( getint "xoay chu hay khong (1-xoay/0-khong): "))
(while
(setq p0 ( getpoint "diemve:" ))
(setq x0 (car p0)
(setq y0 (cadr p0)
(setq b2 (* b 0.5 )
(setq p1 ( list (x0 ( - y0 b2 )))
(setq p2 ( list ( + x0 l ) y0 )
(setq p3 ( list (x0 ( + y0 b2 )))
)
(setq nn (ssadd))
( command "pline" p0 p1 p2 p3 "C" )
(ssadd (entlast) nn)
(setq i (+ i 1) kh (itoa i))
(command "text""j" "ML" P0 (/ b 2) 0 kh)
(ssadd (entlast) nn)
(command "rotate" nn "" P0 pause)
(if (= xoay 0) (modify (entlast) 50 0))

)
)
(defun modify (ee code tri)
(entmod (append
(entget ee)
(list (cons code tri))
)
)
)

Thanks nhiều
<<

Filename: 184580_vtg.lsp
Tác giả: Tue_NV
Bài viết gốc: 68752
Tên lệnh: loctext
Phân biệt text

Bạn sử dụng Lisp này nhé :

Filename: 68752_loctext.lsp
Tác giả: q288
Bài viết gốc: 57165
Tên lệnh: ch3
Viết lisp chia đoạn thẳng thành 3 phần



Bạn dùng lisp này xem sao.

Filename: 57165_ch3.lsp
Tác giả: shitty
Bài viết gốc: 185476
Tên lệnh: od oc oca
Sửa lisp copy tịnh tiến...
E có đang dùng 1 lisp copy tịnh tiến trên diễn đàn :

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=7906
;;;**********************************************
;;;CHUONG TRINH DANH SO THU TU VA COPY TANG DAN
;;;1. Lenh OD: danh so thu tu, tuy chon so bat dau (begin) va so gia (increment) tuy y
;;;2. Lenh OC: copy tang dan tu mot so thu tu co san
;;;3. Lenh OCA: copy tang dan...
>>
E có đang dùng 1 lisp copy tịnh tiến trên diễn đàn :

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=7906
;;;**********************************************
;;;CHUONG TRINH DANH SO THU TU VA COPY TANG DAN
;;;1. Lenh OD: danh so thu tu, tuy chon so bat dau (begin) va so gia (increment) tuy y
;;;2. Lenh OC: copy tang dan tu mot so thu tu co san
;;;3. Lenh OCA: copy tang dan voi doi tuong Attribute Block
;;;Chuong trinh chap nhan cac dinh dang bang so, chu, so va chu ket hop:
;;;1, 2... A, B..., A1, A2..., AB-01, AB-02..., AB-01-C1, AB-01-C2...
;;;Cac chu gioi han trong khoang tu A den Z. Cac so khong han che
;;;Copyright by ssg - www.cadviet.com - December 2008
;;;**********************************************
;;;-------------------------------------------------
(defun etype (e) ;;;Entity Type
(cdr (assoc 0 (entget e)))
)
;;;-------------------------------------------------
(defun wtxt (txt p / sty d h) ;;;Write txt on graphic screen, defaul setting
(setq
sty (getvar "textstyle")
d (tblsearch "style" sty)
h (cdr (assoc 40 d))
)
(if (= h 0) (setq h (cdr (assoc 42 d))))
(entmake
(list (cons 0 "TEXT") (cons 7 sty) (cons 1 txt) (cons 10 p) (cons 40 h) (assoc 41 d))
)
)
;;;-------------------------------------------------
(defun incN (n dn / n2 i n1) ;;;Increase number n
(setq
n2 (itoa (+ dn (atoi n)))
i (- (strlen n) (strlen n2))
)
(if (> i 0) (setq n1 (substr n 1 i)) (setq n1 ""))
(strcat n1 n2)
)
;;;-------------------------------------------------
(defun incC (c / i c1 c2) ;;;Increase character c
(setq
i (strlen c)
c1 (substr c 1 (- i 1))
c2 (chr (1+ (ascii (substr c i 1))))
)
(if (or (= c2 "{") (= c2 "

nhưng khi đánh lệnh copy tịnh tiến OC thi chỉ chọn được 1 đối tượng text ...mong các cao thủ trên diễn đàn có thể sửa lại lisp giúp em 1 chút là chọn dc nhiều đối tượng text và các đối tượng này chỉ cộng thêm 1 số gia cho trc ( có thể cộng thêm số âm (-1) )...vi' dụ chọn 3 đối tượng P1,P2,P3 khi dùng lisp sẽ thành p2,p3,p4...rất mong các sư huynh giúp đỡ.cảm ơn diễn đàn.
file cad :
http://www.mediafire...5bji1sr1ogu5g02
<<

Filename: 185476_od_oc_oca.lsp
Tác giả: Thaistreetz
Bài viết gốc: 71842
Tên lệnh: tdn
Lisp ghi tọa độ rất hay mà bị lỗi!
Code của bạn đây. hi vọng nó đúng ý bạn.

Filename: 71842_tdn.lsp
Tác giả: Luxury037
Bài viết gốc: 185549
Tên lệnh: ct
Rải và đánh số thứ tự cọc

Cái này Lisp Copy Text tăng hoặc giảm làm được đó bạn.
Bạn dùng tạm cái này của Mem trên cadviet nhé:


(defun C:CT (/ name_op num_op_chon point_base_st point_new_st num_ op_tang
op_tang_new last_ch cong_val)
(setq old_ts_err *error*)
(setvar "Cmdecho" 0)
(if(= cong_vao NIL)(setq cong_vao 1))
(Prompt "\n Neu tham so < 0 --> ket qua giam ! ")
(setq...
>>

Cái này Lisp Copy Text tăng hoặc giảm làm được đó bạn.
Bạn dùng tạm cái này của Mem trên cadviet nhé:


(defun C:CT (/ name_op num_op_chon point_base_st point_new_st num_ op_tang
op_tang_new last_ch cong_val)
(setq old_ts_err *error*)
(setvar "Cmdecho" 0)
(if(= cong_vao NIL)(setq cong_vao 1))
(Prompt "\n Neu tham so < 0 --> ket qua giam ! ")
(setq cong_val(getint(strcat "\n Tham so tang /<" (itoa cong_vao)">: ") ))
(if(= cong_val NIL)(setq cong_val cong_vao)(setq cong_vao cong_val))
(Prompt "\n Chon doi tuong tang: ")
(if(and cong_vao (setq op_tang(ssget)))
(progn
(setq num_op_chon(sslength op_tang)
num_ 0
op_tang_new NIL)
(if(setq point_base_st(getpoint "\n > Diem goc: "))
(while
(setq point_new_st(getpoint "\n >> Diem dat tiep theo: " point_base_st))
(if op_tang_new (setq op_tang op_tang_new op_tang_new NIL))
(setq num_op_chon(sslength op_tang) op_tang_new(ssadd))
(if(and point_base_st point_new_st)
(progn
(repeat num_op_chon
(progn
(setq name_op(ssname op_tang num_))
(command "_.Copy" name_op "" point_base_st point_new_st)
(setq last_ch(entlast)
op_tang_new(ssadd last_ch op_tang_new))
(process)
(setq num_ (+ 1 num_))
(if(= num_ num_op_chon)(setq num_ 0))
)
)
)
);if
(setq point_base_st point_new_st)
));if while
);progn
);if
(setq *error* old_ts_err)
(princ)
);End Tang.
(defun process (/ name_check text_value dat_up dat_style num_value new_value)
(progn
(setq name_check(assoc 0 (setq dat_up (entget last_ch))) )
(if(or(= (cdr name_check) "TEXT")
(= (cdr name_check) "MTEXT"))
(progn
(setq text_value(assoc 1 dat_up))
(if(= (distof (cdr text_value) 2) NIL)
(setq dat_style "Text")
(setq dat_style "Num" num_value (atof (cdr text_value)) )
)
(cond
((= dat_style "Num")
(setq new_value (itoa (fix(+ num_value cong_vao))) ))
((= dat_style "Text")
(setq new_value(chr (+ (ascii (cdr text_value)) cong_vao))) )
)
(setq dat_up(subst (cons '1 new_value) text_value dat_up) )
(entmod dat_up)
);progn
);if
(setq name_op NIL)
);progn
);Process.

<<

Filename: 185549_ct.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 185548
Tên lệnh: secor
Tách lớp và lấy giao điểm trong cad 3D.

Hề hề hề,
Sau một hồi vọc vạch cái yêu cầu của bạn, mình làm thử cái này để bạn coi xem thế nào nhé. Hãy cố gắng test thử với nhiều loại khối đặc đặt ở các vị trí khác nhau xem nhé vì mình không co thời gian để test. Nhìn chung thì chắc nó sẽ có vài nhược điểm như mình đã nói ở bài trước, song nếu bạn chịu khó test thì sẽ tìm ra các lỗi và mới có thể khắc phục...
>>

Hề hề hề,
Sau một hồi vọc vạch cái yêu cầu của bạn, mình làm thử cái này để bạn coi xem thế nào nhé. Hãy cố gắng test thử với nhiều loại khối đặc đặt ở các vị trí khác nhau xem nhé vì mình không co thời gian để test. Nhìn chung thì chắc nó sẽ có vài nhược điểm như mình đã nói ở bài trước, song nếu bạn chịu khó test thì sẽ tìm ra các lỗi và mới có thể khắc phục được. Mình chỉ làm hoàn toàn theo cảm tính và suy nghĩ cá nhân nên có thể không chuẩn mực như bạn cần được, bạn phải tự kiểm tra và nếu cần thì post lên chứ mình không thể hiểu hết mọi yêu cầu của bạn.
Hy vọng rằng nó sẽ giúp bạn được chút gì trong công việc của bạn

Chúc bạn vui và chóng thành tài nhé.
PS: cái này có sử dụng nguyên liệu chính của bác SSG, nếu bạn thấy ngon miệng thì đừng quên cám ơn bác ấy nhé.
<<

Filename: 185548_secor.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 185468
Tên lệnh: ch2w
Làm sao để thay thế (đối tượng bằng wipeout) ?

Hề hề hề,
Đúng như bạn Chiron đã nói, mình có thể xử lý việc này bằng lisp được, nhưng trước hết bạn hãy mở topic này bên lisp box đã nhé. Như vậy đúng với quy định của diễn đàn và sẽ thuận lợi hơn cho những người khác theo dõi và quan tâm tới vấn đề này. Hãy chịu khó một chút vì quyền lợi chung của mọi người tham gia diễn đàn bạn nhé. Có thể khi bạn post xong topic...
>>

Hề hề hề,
Đúng như bạn Chiron đã nói, mình có thể xử lý việc này bằng lisp được, nhưng trước hết bạn hãy mở topic này bên lisp box đã nhé. Như vậy đúng với quy định của diễn đàn và sẽ thuận lợi hơn cho những người khác theo dõi và quan tâm tới vấn đề này. Hãy chịu khó một chút vì quyền lợi chung của mọi người tham gia diễn đàn bạn nhé. Có thể khi bạn post xong topic thì đã có bài trả lời rồi đó.
Hề hề hề,
Đất chả chịu giời thì giời chịu đất vậy. Mình giúp bạn lần này chuyển bài viết về box mới và sửa tiêu đề topic cho đúng với quy định của diễn đàn, mong rằng lần sau bạn sẽ tự thực hiện đúng với quy định nhé.
Hãy dùng thử cái lisp này xem có đúng cái bạn cần không nhé. Lưu ý rằng các vòng tròn của bạn sau khi dùng lisp này sẽ không còn là circle nữa mà là các wipeout tương tự như cái mẫu trong bản vẽ của bạn post. Vì thế chớ có ngạc nhiên khi thấy nó không được tròn vành vạnh nhé.
Trong lisp này mình có nhón một khúc lisp của bác SSG về để xào nấu lại. Vì thế hãy cám ơn bác ấy nhé. Không có bác ấy thì cái lisp này sẽ chả dùng được đâu.
Hề hề hề

Hề hề hề,
Chúc bạn vui
<<

Filename: 185468_ch2w.lsp
Tác giả: ketxu
Bài viết gốc: 185078
Tên lệnh: btk
Thống kê chiều dài đối tượng

- Thống kê chiều dài đối tượng chọn
- Xuất ra bảng CAD - Excel
- Phiên bản kiểm tra đầu trùng trong cách quy định From To. Nếu có 1 đầu trùng với đoạn thẳng trước đó, đầu đó sẽ được tính là điểm bắt đầu Line


Filename: 185078_btk.lsp
Tác giả: 18011985
Bài viết gốc: 123514
Tên lệnh: cd bd
Không cắt được đường kích thước

Đọc chưa hết bài nhưng mình có lsp cắt được dim có chênh cao Z spam lên cho các bạn khì khì.

Filename: 123514_cd_bd.lsp
Tác giả: Tue_NV
Bài viết gốc: 185761
Tên lệnh: vec
Làm sao để thay thế (đối tượng bằng wipeout) ?

Lisp bác Bình khi di chuyển thì mất tính năng "đè"
Quick code cho bạn
Bạn thử xem :

Chú ý : Vòng tròn, Line và Text trong vòng tròn nằm ở Layer "STT"

Filename: 185761_vec.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 185795
Tên lệnh: rvds
Rải và đánh số thứ tự cọc

Hề hề hề,
Bạn dùng thử cái lisp này xem sao nhé. Mình viết nó cho hai trường hợp: 1 là đánh số theo đường ziczac từ trái qua phải và bắt đầu từ góc dưới bên trái, 2 là đánh số theo đường xoắn trôn ốc theo chiều kim đồng hồ bắt đầu từ góc dưới bên trái.
Cả hai trường hợp này đều sử dụng cho việc array theo dạng lưới ô vuông (khoảng cách cột và khoảng cách hàng...
>>

Hề hề hề,
Bạn dùng thử cái lisp này xem sao nhé. Mình viết nó cho hai trường hợp: 1 là đánh số theo đường ziczac từ trái qua phải và bắt đầu từ góc dưới bên trái, 2 là đánh số theo đường xoắn trôn ốc theo chiều kim đồng hồ bắt đầu từ góc dưới bên trái.
Cả hai trường hợp này đều sử dụng cho việc array theo dạng lưới ô vuông (khoảng cách cột và khoảng cách hàng là bằng nhau.
Các trường hợp khác bạn có thể tự bổ sung dựa trên cái lisp này nhé (tỷ như xoắn theo ngược chiều kim đồng hồ hay ziczac từ phải qua trái, từ trên xuống dưới.....).
Hiện mình chưa làm tca1ch đánh số theo đường xoắn từ trong ra ngoài do mình chưa hiểu cách chọn điểm bắt đầu đánh số của bạn. Nếu điểm này là bất kỳ thì không hề dễ dàng chút nào bạn ạ, vì khi đó có thể cái đường xoắn nó không thể chạy hết vùng bạn muốn. Rất mong bạn nói rõ mới được.
Hãy dùng thử và ch ý kiến nhé.

Chúc bạn vui
<<

Filename: 185795_rvds.lsp
Tác giả: girl
Bài viết gốc: 184022
Tên lệnh: hdim
Lisp thay đổi chiều cao text của dimstyle cực nhanh !

Lisp này quả thật rất hữu ích, nhưng còn một trường hợp lisp chưa xét đến, em sử dụng mới phát hiện ra. Đó là với các Dimstyle mà được FIX cứng chiều cao của text trong mục text style thì lisp không thay đổi được chiều cao, và em muốn có thêm cái tính năng lưu giá trị chiều cao vừa nhập của lần trước ạ. Anh ketxu này giúp em nhé
;; free lisp from cadviet.com
;;; this lisp was downloaded...
>>
Lisp này quả thật rất hữu ích, nhưng còn một trường hợp lisp chưa xét đến, em sử dụng mới phát hiện ra. Đó là với các Dimstyle mà được FIX cứng chiều cao của text trong mục text style thì lisp không thay đổi được chiều cao, và em muốn có thêm cái tính năng lưu giá trị chiều cao vừa nhập của lần trước ạ. Anh ketxu này giúp em nhé
;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=53208&pid=183218&st=0&#entry183218
(defun c:hdim (/ lstDstyle tH i ss ent dstyle)
(grtext -1 "Free lisp from Cadviet @Ketxu")
(command "undo" "be")
(setvar "cmdecho" 0)
(setq tH (getreal "\n Text Height :") i 0 ss (ssget (list (cons 0 "DIMENSION"))))
(while (setq ent (ssname ss i))
(if (setq dstyle (cdr (assoc 3 (entget ent))))
(if (not (vl-position dstyle lstDstyle))
(progn
(setq lstDstyle (cons dstyle lstDstyle))
(command "DIMSTYLE" "R" dstyle)(setvar "DIMTXT" (/ tH (getvar "DIMSCALE")))
(command "DIMSTYLE" "S" dstyle "Y")
)
)
)
(setq i (1+ i))
)
(command "undo" "en")
)


<<

Filename: 184022_hdim.lsp
Tác giả: lp_hai
Bài viết gốc: 185825
Tên lệnh: jl
Nhờ các bro giúp về offset
Có 3 cách giải quyết:
1-Người cần cù (hoặc hơi rãnh như mình) thì muốn thằng nào offset thằng đó, xong rồi fillet lại
2-Người kỹ thuật hơn thì Joint chúng lại bằng lệnh Pedit rồi offset phát một
3-Người lười biếng thì dùng lisp Joint lại (thực ra là gom các bước ở trong lệnh Pedit lại để làm một lần cho gọn), rồi Offset
Nếu bạn là người thứ 3 thì mình cho bạn lisp này...
>>
Có 3 cách giải quyết:
1-Người cần cù (hoặc hơi rãnh như mình) thì muốn thằng nào offset thằng đó, xong rồi fillet lại
2-Người kỹ thuật hơn thì Joint chúng lại bằng lệnh Pedit rồi offset phát một
3-Người lười biếng thì dùng lisp Joint lại (thực ra là gom các bước ở trong lệnh Pedit lại để làm một lần cho gọn), rồi Offset
Nếu bạn là người thứ 3 thì mình cho bạn lisp này để joint các đối tượng thành một Pline rồi offset

(defun c:JL(/ dt)
(setq dt (ssget))
(command "pedit" "m" dt "" "y" "j" "1" "")
)

<<

Filename: 185825_jl.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 24253
Tên lệnh: dbl
Viết Lisp theo yêu cầu


Tên lệnh là DBL (Devide by Line)

Filename: 24253_dbl.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 185908
Tên lệnh: ha
Lisp lọc các block cùng tên


Đây bạn! Hình như bạn đã là lần thứ 3 post y/c thì phải, và 2 lần đầu bị xoá vì sai quy định. Lần này thì tương đối đúng.

Filename: 185908_ha.lsp
Tác giả: ssg
Bài viết gốc: 5563
Tên lệnh: ell cll mll
Tìm hiểu cấu trúc một chương trình lisp

Bạn dùng thử, nếu cần bổ sung thì cho ý kiến:


Filename: 5563_ell_cll_mll.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 185852
Tên lệnh: ha

Trang 70/330

70