ngokiet
-
Số lượng nội dung
404 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
43
Bài đăng được đăng bởi ngokiet
-
-
thử set CÓNTRAINTINFER là 0 thử xem
- 1
-
1 giờ} trướ}c, huunhantvxdts đã nói:Rãnh rỗi viết tí cho vui
bạn test thế nào nhé
(defun c:dempoint (/ sspoint sopoint text) (prompt "\nChon point can dem") (While (setq sspoint (acet-ss-to-list (ssget '((0 . "POINT"))))) (setq sopoint (length sspoint)) (setq text (car (entsel "\nChon text thay the:"))) (vla-put-textstring (vlax-ename->vla-object text) (rtos sopoint 2 0)) ) (princ) )
Bác đúng là rảnh thật. Sao ko dùng sslength mà đổi qua dùng length list. và itoa thay rtos?
-
Oh. Mình đọc cái tiêu đễ.
-
Sửa lại 1 chút là được mà
(defun c:DC ()
(SSSETFIRST nil (ssget '((-4 . "<OR")(-4 . "<AND") (0 . "TEXT") (1 . "*%%U*")(-4 . "AND>")(-4 . "<AND") (0 . "MTEXT") (1 . "*\\L*")(-4 . "AND>")(-4 . "OR>"))))) -
Có bác nào gởi lisp lên https://apps.autodesk.com/en bán không?
Mình thấy có app mplot của vn đấy. Bác nào có lisp gì hay thì để lên bán.
Hay làm cái apps.cadviet đi. Mấy bác cứ viết lisp free như thế thì có mấy ai thèm học lisp. Nếu bạn nào học lisp mình rất thích việc diễn đàn bổ sung, chia sẻ kinh nghiệm lập trình. Còn lisp free thì mình thấy không nên. Đồ nghề cho việc kiếm tiền cúa mình mà đòi free
- 2
-
lệnh array. chọn path bạn.
-
Mã dxf 210 là pháp vecto của mặt phẳng chứa block đó.
Nếu thay đổi mặt phẳng thì nó thay đổi vị trí.
Do block nó nằm nghiêng nên thay đổi code 210 sẽ lỗi thôi
Code 210 có 3 giá trị tổng bình phương là 1.
Bạn muốn lấy giá trị thì bạn phải dùng chuyển trục toạ độ thôi.
Bạn thử tham khảo https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/dxf-codes-10-and-210-formula/td-p/1132777/page/2
Mình ko trên máy nên chưa test.
- 1
- 1
-
12 phút trước, Ngo Van Tam đã nói:Em Cảm ơn Các bác đã trợ giúp ạ. Em chưa hiểu lắm về ename của đối tượng.
Em ví dụ code của em vẽ line ntn thì ename của nó là vcd1 đúng không ak
Mong bác ngokiet giúp đỡ
(setq vcd1 (ssadd))
(command "line" v3 v4 "")
(ssadd (entlast) vcd1)Ename là (entlast) sau lệnh command đó.
- 1
-
Thử dùng code sau:
(setq p (polar cen (/ pi 4) rad))
(command "dimdiameter" (list ent p) "non" p)
Trong đó cen : là tâm vòng tròn, rad : Bán kính vòng tròn, ent: ename của vòng tròn ấy.
-
1 giờ} trướ}c, mr.thanh2610 đã nói:2 bác lỡ giúp rồi giúp em cú chót luôn được không 2 bác, tại em đang làm nhiệm vụ chỉnh lại tất cả bản vẽ của mấy anh em vẽ layer rất lung tung, đa số đổi màu nên giờ phải chỉnh lại rất mất công, nhờ vả 2 bác cú chót nhé , cảm ơn
bác có thể tắt các layer. màu khác rồi dùng lệnh mà. mấy hôm nay bận quá.
- 1
-
Cái trường hợp ngược với op2 là gì?
Mâu là gì? Bạn muốn kêt quả là gì?
Hình như bạn muốn là :
Mẫu color bylayer thuộc layer color x
Ma kết quả là các obj có color là x?
Vậy thì mẫu cũng ko dc chọn?
- 1
-
9 phút trước, mr.thanh2610 đã nói:Em mới sửa lại nội dung, sợ 2 bác không để ý nên em mạn phép Quote lại, nhờ 2 bác Biet ve Cad và Ngokiet ngâm cứu giúp nhé,:)
Lisp minh chỉ lọc màu theo 2 kiểu.
- Cái số 2,5 của bạn thỉ option B là được.
- Cái số 3 của bạn thì option A là được. đừng chọn mẫu bylayer.
Bạn cứ test thử A hay B xem cái nào đúng ý bạn. Nếu yêu cầu cùng layer thì dùng lênh layiso. Còn lại do bạn chọn mẫu mà thôi.
Nếu cần trường hợp nào thì bạn nên đưa ví dụ như
Mẫu là bylayer ở layer màu x muốn chọn các obj màu x và layer màu x.
Như vây là option B.
-
2 phút trước, Biet ve CAD đã nói:Không biết có cần lọc tuyệt đối ko vì chọn mẫu là cons 62 thì nó vẫn lấy cả truecolor ( ví dụ mẫu là RED, truecolor là 254,0,0 hoặc 255,0,0)
Nhưng theo mình nếu đã là truecolor và cons 62 vẫn phải tách riêng nhau ( nếu truecolor nó trả về gần màu cons 62 thì đành chịu )
Thì vậy. Do Cad nó bổ sung truecolor nên rắc rối vậy. Cái cons 62 chỉ có 255 màu còn truecolor nó nhiều màu hơn bao gồm cả 255 màu kia. Nhưng theo mình biết thì nó khác nhau 1 chút là nếu màu red bên truecolor thì nó in ra màu không lệ thuột màu red của nét vẽ.
-
19 phút trước, mr.thanh2610 đã nói:Cảm ơn bác, mình đã thử và 1 và 4 rất tốt.Còn 2 và 3 thì ý mình là theo của bác Ngo Kiet bên dưới, nếu gộp 2 lisp của bác lại thì hoàn chỉnh luôn và bổ sung thêm cái 4 chọn nhiều mẫu cùng 1 lúc thì hoàn hảo luôn ^_^
Cảm ơn bác, hai bác có thể gộp lại giúp em 2 cái lisp của bác với bác Biet ve CAD thì hoàn hảo :)
À mà mình góp ý 1 trường hợp nữa mà mình gọi là trường hợp 5.Chọn tất cả các color có màu tùy chon (ngược lại với cái "1. theo bylayer : miễn là color là bylayer thì sẽ chọn" của bác Biet ve CAD)
P/S: Cảm ơn anh em nhiều, anh em nhiệt tình quá, ngày nay Vote nhiều nên hết lượt nên anh em thông cảm nếu không Vote được nhé , xin cảm ơn
Bác sử dụng lisp của mình thì
- Cái số 1 . Bạn chọn object bylayer chọn option A thì giống bác Biết vẽ CAD.
- Cái số 4,5. Thì bạn chọn option B là ok.
-
9 phút trước, Biet ve CAD đã nói:Vừa chạy thử lisp, nếu mẫu là truecolor thì lọc chuẩn đối tượng truecolor, còn mẫu là màu cons 62 thì lấy luôn cả màu truecolor gần giống màu cons 62 ấy
Ok. Mình biết hơi nhầm ở chỗ nào rồi. Ở phần chọn layer có màu giống mẫu. Để suy nghĩ cách sửa.
- Đã sửa lại ở trên rồi.
-
(defun c:sscolor(/ lays objm y x420 x62 lays) (princ "\nSelect obj mau:") (or (setq objm (acet-ss-to-list (ssget))) (exit)) (initget "A B") (if (eq (getkword "Chon kieu [A Theo thuoc tinh/B Theo the hien]") "B") (progn (foreach x objm (cond ((setq y (cdr(assoc 420 (setq x (entget x))))) (or (member y x420) (setq x420 (cons y x420)))) ((setq y (cdr(assoc 62 x))) (or (member y x62) (setq x62 (cons y x62)))) ((setq y (cdr(assoc 420 (setq x (entget (tblobjname "Layer" (cdr(assoc 8 x)))))))) (or (member y x420) (setq x420 (cons y x420)))) ((setq y (cdr(assoc 62 x))) (or (member y x62) (setq x62 (cons y x62)))))) (vlax-for x (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) (setq x (entget(vlax-vla-object->ename x))) (if (or (member (cdr (assoc 420 x)) x420) (and (not (cdr (assoc 420 x))) (member (cdr (assoc 62 x)) x62))) (setq Lays (if lays (strcat lays "," (cdr(assoc 2 x))) (cdr(assoc 2 x)))))) (sssetfirst nil (ssget (append '((-4 . "<OR")) (mapcar '(lambda(a) (cons 62 a)) x62) (mapcar '(lambda(a) (cons 420 a)) x420) (if lays (list '(-4 . "<AND") (cons 8 lays) '(62 . 256) '(-4 . "AND>"))) '((-4 . "OR>")))))) (progn (foreach x objm (cond ((setq y (cdr(assoc 420 (setq x (entget x))))) (or (member y x420) (setq x420 (cons y x420)))) ((setq y (cond ((cdr(assoc 62 x))) (256))) (or (member y x62) (setq x62 (cons y x62)))))) (sssetfirst nil (ssget (append '((-4 . "<OR")) (mapcar '(lambda(a) (cons 62 a)) x62) (mapcar '(lambda(a) (cons 420 a)) x420) '((-4 . "OR>"))))))) (princ))
-
Lisp của mình chỉ lọc theo thuột tính color của autocad.
Bình thường thì lọc object này thường chỉ bật 1 layer nên mình nghĩ ko cần nhiều.
Nhưng theo bác ấy thì mình nghĩ lọc theo màu thể hiện chứ không phải màu thuột tính.
Nghĩa là
- Nếu chọn obj màu x thì chọn tất cả obj màu x và obj màu bylayer có layer màu x.
- Nếu chọn obj mau bylayer thì chọn tất cả obj màu bylayer có layer cùng màu obj và obj có màu là màu của layer obj mẫu.
Nhưng cái này mình thấy ko cần thiết lắm.
-
50 phút trước, nhoclangbat đã nói:- theo code bác #ngokiet thì chắc bỏ qua bước chọn đối tượng mẫu, quét thẳng phát lọc ra thằng nào bylayer thì chọn không phải thì nó tự loại ra mất tiêu rùi ^^
Sorry mỉnh quên thêm "\nDoi tuong mau :". Mình sửa lại rồi.
-
2 phút trước, Danh Cong đã nói:+ Bình luận tí cho xôm xôm gia đình thôi bác ơi ^^. Mà code bác tương đương bác #Nhoclangbat mà :)
+ Mà hỏi dại bác tí. (assoc 420) trả về gì vậy ạ. Em chưa làm với mấy số to to này bao giờ :v
Code 420 là truecolor. code 62 là màu 0..256 - 0 ByBlock, 256 là Bylayer. Nhưng 256 chỉ dùng cho ssget. entget không đọc được.
Mình nghĩ là chọn theo màu thôi. Nếu bylayer thì cái nào bylayer thì chọn thôi. Màu của layer không quan trọng.
- 1
-
Hình như hơi đi xa quá.
(defun c:ha(/ en) (sssetfirst nil (ssget (list (cond ((assoc 420 (setq en (entget(car(entsel "\nDoi tuong mau :")))))) ((assoc 62 en)) ((cons 62 256)))))))
- 1
-
Bác thử ở word . copy 1 dòng text nào đó rồi thử nhấn cd xem nó có dán ko?
Nếu có thì bàn phím bị kẹt phím hay lỗi phần cứng hay phần mềm keyboard.
Thử tắt các keyboard tiếng việt thử xem
Nếu ko thì do shortcut cad. không phải lệnh tắt. Shortcut trong giao diện cui của bác đó. Cái này mình ko chắc vì mình ko biét có gán 1 key dc không? Mình đang ko trên máy.
-
Bác kiểm tra bàn phím có bị lỗi không? Hay có chương trình keyboard nào chạy ngầm phím tắt không?
Nếu chỉ cad bị thôi thì kiểm tra shortcut của cad lại xem có gán nút D cho lệnh tắt nào ko?
Trường hợp này thường bàn phím lỗi thôi.
-
Bác Hà viết lisp vui nhỉ. Lưu ý text có dấu ( hay ) có thể sẽ bị lỗi nhe.
-
Nếu mấy chữ đầu giống nhau thì find replace là xong mà.
Hỏi về Lisp (thuật toán, ý tưởng, coding,...)
trong AutoLisp
Đã đăng · Trả lời báo cáo
Vla thì help có hướng dẫn mà.
https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-ActiveX/files/GUID-17F86FDD-B7FC-4F43-9F16-B4958F73A66D-htm.html