![](https://www.cadviet.com/forum/uploads/set_resources_1/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://www.cadviet.com/forum/uploads/monthly_2017_09/T.png.0cc7bc065a3d1d5219a2d79a91353252.png)
Tot77
-
Số lượng nội dung
934 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
60
Bài đăng được đăng bởi Tot77
-
-
Làm dùm bác, hơi lỉnh kỉnh nhưng xài tạm.
<code>
(defun test()
(setq l '(a b 0 0 c d e 0 0 0 f g 0 h 0 0 i j))
(setq l1 (cons 1 (append l (list 1))))
(setq l1 (reverse (cdr (reverse (cdr (vl-remove-if '(lambda(x) (if (and (setq vt (vl-position x l1)) (/= 0 vt) (/= vt (length l1)))
(and (/= 0 (nth (1- vt) l1)) (/= 0 (nth (1+ vt) l1)) ))) l1))))))
(setq i 0
l2 nil
lc nil)
(repeat (length l1)
(cond ((and (= 0 (nth i l1)) (/= 0 (nth (1+ i) l1)))
(setq l2 (append l2 (list (nth i l1) (nth (1+ i) l1)))
lc (append lc (list l2))
l2 nil))
((and (/= 0 (nth i l1)) (/= 0 (nth (1+ i) l1))))
(t (setq l2 (append l2 (list (nth i l1)))))
)
(setq i (1+ i))
)
lc
)</code>
-
1
-
-
Ý Tưởng Mới
trong Lập trình khác
Ý tưởng của bạn cũng không có gì gọi là mới, nhưng sở dĩ bạn không thấy có công ty nào làm cái việc như bạn nói là vì không có công ty nào sống nổi với cái nghề lập trình lisp, vba, .net trên nền cad đâu bạn à!!
-
1
-
-
Chắc Bee nhầm với ai khác chứ tôi chẳng bao gio chơi cờ, chắc ai đó thấy nick Tot77 qúa đẹp nên lấy chăng?
-
Bỏ bớt block cây đi.
-
Bạn tìm cái file lisp nào tự động load khi bật cad, xóa mấy cái (defun *error*....) trong đó thôi. Dĩ nhiên bạn phải biết những file đó là file nào.
-
Bạn cứ làm như bác Hạ : (setq *error* nil) , rồi xóa hết các định nghĩa (defun *error* ...) trong máy, tắt cad, bật lại cad, test thử (/ 1 0) xem nó báo sao.
-
Dùng lệnh MVIEW ON
-
1
-
-
Những cái đường đó là line hay cái gì? regen có hết không? đem cái file bị lỗi qua máy khác thì sao? có thể gửi file lỗi lên đây không?
-
-
Đường tròn ngoại tiếp thì tâm là tổng 2 bán kính, còn nội tiếp thì là hiệu 2 bk.
Bạn vẽ 1 vt tâm trùng với vt bên trên và bk là 114-33 và 1 vt tâm trùng với vt bên dưới với bk là 114-52, giao của 2 vt này là tâm của vt nội tiếp.
-
Vậy chắc bạn chưa xài Unikey rồi. Bạn vào google down cái đó về, bật lên, đưa con chuột vào cái icon của Unikey ở góc dưới bên phải màn hình, nhấp nút phải, hiện lên cái bảng. nhấp nút trái vào chữ TCVN3(ABC). Sau đó mở file cad, find bình thường.
-
em gõ theo TCVN 3 nhưng ko gõ được bác à,chỉ gõ được unicode thôi!
Sao lạ vậy? Nếu bạn dùng unikey thì có đủ các kiếu font mà.
-
Vẩn Find được, nhưng vì text của bạn là font ABC nên khi find bạn cũng phải để trình gõ tiếng Việt là ABC thì mới khớp.
-
Bạn thử cái này, có điều tôi không hiểu là file text xep theo thứ tự y x z chứ không phải x y z.
(defun c:tes(/ dong toado file) (defun dxf (id v) (cdr (assoc id (entget v)))) (setvar 'dimzin 2) (prompt "\nChon file text:") (setq file (open (getfiled "Open file" (getvar "dwgprefix") "txt" 4) "r")) (if (not txtmau) (setq txtmau (car (entsel "\nChon text mau:")))) (while (setq dong (read-line file)) (while (vl-string-search "\t" dong) (setq dong (vl-string-subst " " "\t" dong))) (setq toado (cdr (read (strcat "(" dong ")"))) toado (list (cadr toado) (car toado) (last toado))) (entmakex (list (cons 0 "TEXT") (cons 10 toado) (cons 11 toado) (cons 62 (dxf 62 txtmau)) (cons 40 (dxf 40 txtmau)) (cons 41 (dxf 41 txtmau)) (cons 7 (dxf 7 txtmau)) (cons 72 (dxf 72 txtmau)) (cons 73 (dxf 73 txtmau)) (cons 50 0) (cons 1 (rtos (last toado) 2 2)) (cons 8 (dxf 8 txtmau)))) ) (close file) )
-
Lỗi bản quyền, xóa sạch rồi cài lại.
-
Vẫn "tác dụng" bình thường mà bạn. Chắc tại bạn không down file gốc :
http://www.cadviet.com/upfiles/6/127168_layerdirectorv16.lsp
-
Bạn nào biết xin giúp mình thuật toán giải quyết vấn đề dưới đây nhé*Giả sử có một danh sách phức hợp(setq li ‘((3 a) (2 b (5 c) (6 a) (3 b (6 d) (3 c) (3 b (7 a)))-Trong đó (3 a), (2 b, (5 c),… là các danh sách conVới 3, 2 , 5,… là các ký hiệu số thực bất kỳ ứng với từng danh sách con trong đóVà a, b, c,…là các chữ cái bất kỳ ứng với từng danh sách con trong đó*Bài toán: xắp xếp lại danh sách li trên theo kiểu-trật tự danh sách trên không được thay đổi-ký hiệu của danh sách con đầu tiên sẽ được đánh số 1 ( (3 a) thành (1 a))- các ký hiệu trên được đánh số tăng dần theo cấp số cộng (+1)-các chữ cái giống nhau sẽ được đánh số ký hiệu giống nhauNhư ví dụ trên sau khi giải quyết sẽ có dạng giống như‘((1 a) (2 B) (3 c) (1 a) (2 B) (4 d) (3 c) (2 B) (1 a))Diễn đạt có gì lủng củng các bạn bỏ qua nhé. Cám ơn các bạn nhéBạn thử cái này, có điều nếu là chữ cái thì phải nằm trong dấu "".
(defun test(/ L1 L2 L3 L4 LI N) (setq li '((3 "a") (2 "b") (5 "c") (6 "a") (3 "b") (6 "d") (3 "c") (3 "b") (7 "a")) n 1 l1 (mapcar 'last li) l2 nil ; dict 1 l3 nil ; dict 2 l4 nil ; kq ) (foreach v l1 (if (not (member v l2)) (setq l2 (cons v l2) l3 (cons (list v n) l3) l4 (cons (list n v) l4) n (1+ n)) (setq l4 (cons (reverse (assoc v l3)) l4))) ) (reverse l4) )
-
1
-
-
Tôi xin đính chính là lsp này không phải của tôi, chỉ là tôi sửa lại thôi.
Bạn đưa bản vẽ cái mẫu chữ của bạn lên mới biết lỗi ở chỗ nào.
-
1
-
-
Gọi Thím có vẻ xa cách quá, gọi Dì đi cho nó thân mật.
-
Bạn làm như sau:
(defun tra (a lst) (while (or (< a (car lst)) (> a (last lst))) (setq a (getreal (strcat "\nNhap gia tri trong khoang " (rtos (car lst)) "->" (rtos (last lst)) " :")))) (if (member a lst) (vl-position (car (vl-remove-if-not '(lambda(x) (= x a)) lst)) lst) (list (setq c (1- (vl-position a (vl-sort (cons a lst) '<)))) (1+ c))) ) ;;; test (tra 0 '(1 2 3 4 5.2 6.3)) (tra 7.2 '(1 2 3 4 5.2 6.3)) (tra 4.0 '(1 2 3 4 5.2 6.3)) (tra 4.5 '(1 2 3 4 5.2 6.3))
Tuy vl-position phân biệt real và int nhưng hàm member lại không phân biệt.
Các hàm vl- khá nhiều, chắc chẳng ai rảnh mà dịch hết ra tiếng Việt, nếu có thì chắc là viết sách bán thôi.
Tuy vậy bạn cũng chẳng cần biết tiếng anh làm gì, đọc help chỉ cần chú ý mấy cái ví dụ để biết cách sử dụng là được rồi.
-
1
-
-
Cũng nên chú ý là (vl-position 3.0 '(1 2 3 4 5)) sẽ trả về nil, cho nên nhiều khi (setq c (vl-position a lst)) không cho kết quả đúng.
-
1
-
-
Thử lệnh LIMITS>>OFF
-
-
Cách sử dụng Lisp !
trong AutoLisp
1/ Trong Cad đánh lệnh VLIDE.
2/ Mở cái file vừa down, thấy có những ký tự như hình trên (hoặc tương tự nếu có).
3/ Xóa nó đi và save file, load lại file.
[ Nhờ Viết Lisp intersect_addVertex ]
trong AutoLisp
Đã đăng · Trả lời báo cáo
Thật ra bạn đã "sưu tầm" đầy đủ các hàm cần thiết, nhưng bạn chưa vận dụng hết thôi.
(defun c:AV(/ OBJ PARAMPT PL SS)
(if
(and
(setq pl (car (entsel "\n Chon Polyline can them Node : ")))
(= (cdr (assoc 0 (entget pl))) "LWPOLYLINE")
(setq obj (vlax-ename->vla-object pl))
(princ "\nChon Polyline cat:")
(setq ss (ssget))
)
(foreach pt (LM:intersectionsinset (ssadd pl ss))
(or
(setq ParamPt (vlax-curve-getParamAtPoint pl pt))
(setq ParamPt (vlax-curve-getParamAtPoint pl (vlax-curve-getClosestPointTo pl pt) ))
)
(if (> (- ParamPt (fix ParamPt)) 0.001); bo qua t/hop diem Pt trung voi dinh cua PLINE
(vlax-invoke obj 'AddVertex (1+ (fix ParamPt)) (list (car pt) (cadr pt)))
)
)
) (princ)
)