

Bee
-
Số lượng nội dung
553 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
37
Bài đăng được đăng bởi Bee
-
-
Lấy lấy kí tự
trong AutoLisp
10 giờ trước, divine kai đã nói:bạn ơi, mình cũng gặp trường hợp tương tự, nhưng sao sài lisp thì không quét được nhiều đối tượng vs quét có nhiều đối tượng khác dạng line hay text khác thì lisp không chạy, bạn có thể sửa giúp mình không...( mình chỉ có thể quét rất ít đối tượng )
Có chỉnh lại theo bản vẽ của bạn, đã test thấy chạy ok với lisp sau: sau khi gõ lệnh - TEST thì gõ all xong enter chạy bình thường ^_^ Hoặc dùng lisp Doan NV filter giá trị text cho nhanh hơn.
(defun c:test (/ ss n value pos) (if (not (tblsearch "LAYER" "@TEN")) (command "Layer" "M" "@TEN" "") ) (if (setq ss (ssget '((0 . "TEXT")))) (progn (setq n 0) (repeat (sslength ss) (if (> (strlen (cdr (assoc 1 (entget (ssname ss n))))) 6) (progn (setq value (vl-list->string (vl-remove-if (function (lambda (u) (or (< 64 u 91) (< 96 u 123)))) (vl-string->list (vl-string-subst "" "." (vl-string-subst "" " " (cdr (assoc 1 (entget (ssname ss n))))))) ) ) ) (if (setq pos (vl-string-search "/" value 1)) (entmake (list (cons 0 "TEXT") (cons 100 "AcDbText") (cons 10 (trans (cdr (assoc 10 (entget (ssname ss n)))) 1 0)) (assoc 40 (entget (ssname ss n))) (cons 1 (substr value 1 pos)) (assoc 7 (entget (ssname ss n))) (assoc 50 (entget (ssname ss n))) (cons 8 "@TEN") (cons 100 "AcDbText") ) ) ) ;if ) ) (setq n (1+ n)) ) ;repeat ) ;progn ) ;if (princ) )
-
6 giờ trước, jangboko đã nói:Bạn thử cái này xem:
(defun c:test (/ dict entsc) (if (and (setq dict (cdr (assoc 360 (entget (car (entsel "\nChon doi tuong anno: ")))))) (setq dict (dictsearch dict "AcDbContextDataManager")) (setq dict (dictsearch (cdr (assoc -1 dict)) "ACDB_ANNOTATIONSCALES")) ) (foreach n dict (if (and (= (car n) 350) (setq entsc (cdr (assoc 300 (entget (cdr (assoc 340 (entget (cdr n))))))) ) );and (setvar "CANNOSCALE" entsc) ) );foreach ) ;if (princ) )
-
1
-
-
1 giờ trước, jangboko đã nói:bạn xem bản vẽ giùm mình nhé
Bạn thay = thành < và 0.0 thành 0.0001 hoặc 0.1 sai số bn tùy bạn thử xem.
Của bạn nó rất nhỏ:
-
1
-
-
12 phút trước, jangboko đã nói:vẫn còn bạn ạ, như chưa bắt đầu :D
vậy bạn up bản vẽ lên xem thế nào.
Khả năng dim đấy có giá trị rất bé nhg không phải là 0.0
-
23 phút trước, jangboko đã nói:bạn check lại hộ mình nhé, load về nó hiện ra ntn:
Command: AP APPLOAD TEST LISP.lsp successfully loaded.
Command:
Command:
Command: TEST nilCommand:
Bạn check lại trg bản vẽ có còn dim 0.0 ?
-
1 giờ trước, jangboko đã nói:Mình có 1 vấn đề nhờ a e trên diễn đàn giúp với. Mình sử dụng lệnh Qdim ( cad minh 2020, chắc lệnh này cad đời cao mới có) nên nó xuất hiện vài dimension có giá trị bằng 0 ( measurement =0). Và click từng cái để delete đi thì lâu, dùng lệnh FI thì không lọc được đối tượng đó.
- Mình muốn delete các dimension có giá trị bằng 0 đó 1 cách nhanh nhất. ( gõ lệnh 1 phát là nó tự chọn các dimension có giá trị bằng 0, chỉ việc delete đi thôi ạ )
- Cảm ơn a e/ ( p/s: nếu lisp này đơn giản thì cho mình xin, còn nếu phức tạp thì mình xin gửi mấy cốc cafe )
Đang cafe rảnh code cho bạn không biết ok không ? Chủ thớt test nhé.
(defun c:test (/) (vl-load-com) (vlax-for x (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (if (and (member (vla-get-ObjectName x) '("AcDbRotatedDimension")) (= (vla-get-measurement x) 0.0) ) (vla-delete x) ) ) )
-
Lỗi gì vậy ?
trong Sử dụng AutoCAD
7 phút trước, Botot đã nói:Lệnh SNAP , cho số nhỏ 0.001
kkk ngon. Thanks Botot. :)
-
Lỗi gì vậy ?
trong Sử dụng AutoCAD
TưTự dưng bị cái lỗi không thao tác làm gì được trong layout file đính kèm.
Bác nào dính rồi chỉ em cách fix.
Thanks
-
10 giờ trước, monavamonava đã nói:Máy e cài autocad 2010. Khi mở xem thì thì bình thường nhưng thao tác, chọn đối tượng, hatch ... thì nó bị chậm
Máy mình cad 2019 thôi, mở chạy bình thường. Chắc phải cài lên cad đời cao cao tí thì đỡ giật lác. ^_^
-
1
-
-
9 giờ trước, monavamonava đã nói:Chào các bác. Em có bản vẽ này khi xem thì bình thường nhưng thao tác các lệnh như hatch, edit text, chọn đối tượng... thì nó bị đơ và giật lag. Mong được sự hỗ trợ từ mọi người
https://drive.google.com/open?id=1CLlmppkAKGygXEAfFNos7_myHACfg_Ww
Máy mình mở vẫn bình thường không thấy hiện tượng gì. Chắc máy bạn phải nâng cấp. ^_^
-
5 giờ trước, AUTOCAD_2019 đã nói:cái mình cần ở đây là tìm ra chỗ bị hở chứ không phải là hatch được hay không ví dụ như là nếu polyline đó chưa khép thì mình cần biết vị trí chỗ hở để bít nó lại ....
Tự tìm hiểu cách dùng nhé.
-
Lấy lấy kí tự
trong AutoLisp
10 giờ trước, AUTOCAD_2019 đã nói:.
Chủ thớt có vẻ cần ^_^
Test thử nhé.
(defun c:test (/ ss n value pos) (if (not (tblsearch "LAYER" "@TEN")) (command "Layer" "M" "@TEN" "") ) (if (setq ss (ssget '((0 . "TEXT")))) (progn (setq n 0) (repeat (sslength ss) (setq value (vl-list->string (vl-remove-if (function (lambda (u) (or (< 64 u 91) (< 96 u 123)))) (vl-string->list (vl-string-subst "" "." (vl-string-subst "" " " (cdr (assoc 1 (entget (ssname ss n))))))) ) ) ) (if (setq pos (vl-string-search "/" value 1)) (entmake (list (cons 0 "TEXT") (cons 100 "AcDbText") (cons 10 (trans (cdr (assoc 10 (entget (ssname ss n)))) 1 0)) (assoc 40 (entget (ssname ss n))) (cons 1 (substr value 1 pos)) (assoc 7 (entget (ssname ss n))) (assoc 50 (entget (ssname ss n))) (cons 8 "@TEN") (cons 100 "AcDbText") ) ) ) ;if (setq n (1+ n)) ) ;repeat ) ;progn ) ;if (princ) )
-
1
-
-
Vào lúc 24/5/2019 tại 09:01, thienxd đã nói:Cái này chia đường cong nó bị lỗi bác ah. nó ko chọn được nhiều đường một lúc.
Thế mỗi 1 pline nó nhiều segment cong thì làm sao tự động biết được chia ở segment nào nếu ko phải chủ thớt pick chọn ???? ^_^
-
Lấy lấy kí tự
trong AutoLisp
13 giờ trước, quansla đã nói:"T 34/23.3" và cú pháp "T34/23.3)
13 giờ trước, AUTOCAD_2019 đã nói:dạ tại vì lúc làm thì nhiều người làm nên họ lúc đánh có khoản cách lúc không nên em nghỉ cũng phải giải quyết luôn cái khoản cách mới bao hết vđ đc ạ
Hê hê vừa đá bóng về lướt tí mà thấy vấn đề đc xử roài.
Cái khoảng trắng xử dễ thôi mà: dùng (vl-string-subst "" " " value) thêm vào code của @quansla là xong thôi. ^_^
-
Lấy lấy kí tự
trong AutoLisp
7 giờ trước, AUTOCAD_2019 đã nói:Chào các anh em có file cad có text là : T 145/185.25 thì trong đó T là mã còn 145 là số thửa , còn sau dấu / là diện tích viết liền cùng một text, giờ em muốn lấy riêng số thửa ra thành một layer riêng, mong các anh giúp, đây là file cad, em cảm ơn trước...
Lâu lâu nghịch chút đỡ buồn. Chủ thớt test thử nhé ^_^
(defun c:test () (if (not (tblsearch "LAYER" "@TEN")) (command "Layer" "M" "@TEN" "") ) (if (setq ss (ssget '((0 . "TEXT")))) (progn (setq n 0) (repeat (sslength ss) (setq value (cdr (assoc 1 (entget (ssname ss n))))) (if (setq pos (vl-string-search "/" value 1)) (entmake (list (cons 0 "TEXT") (cons 100 "AcDbText") (cons 10 (trans (cdr (assoc 10 (entget (ssname ss n)))) 1 0)) (cons 40 (cdr (assoc 40 (entget (ssname ss n))))) (cons 1 (substr value 1 pos)) (cons 7 (cdr (assoc 7 (entget (ssname ss n))))) (cons 50 (cdr (assoc 50 (entget (ssname ss n))))) (cons 100 "AcDbText") ) ) ) ;if (setq n (1+ n)) ) ;repeat ) ;progn ) ;if ) ;defun
-
1
-
-
8 giờ trước, hoanq đã nói:Chào các bạn!
- Mình có 1 lisp sử dụng lệnh sao chép hatch (lệnh tắt là hoc), mình chèn thêm code giới hạn 2 ngày sử dụng (copy trên mạng), tuy nhiên lisp mình vẫn thực hiện lệnh nhưng không bị giới hạn ngày sử dụng(trong lisp để mặc định giới hạn 2 ngày sử dụng). Vậy các bạn giúp đỡ mình chỉnh sửa code để giới hạn được số ngày sử dụng với!
Mình cảm ơn(hi vọng các bạn sẽ trả lời mình hoặc giúp đỡ mail cho mình nqhoa89@gmail.com)
Đây là 1 hướng tham khảo:
- Check date ngày hôm nay
- Ktra key xem có chưa (đã write registry, hoặc trong 1 file txt nào đó...)
- Nếu có rồi thì so sánh ngày--> thỏa mãn dk thì cho chạy program, nếu không thì không chạy program
- Nếu chưa có thì write registry và cho chạy program.
Hê hê đây là mình đọc cái lisp của bạn kết hợp thêm suy nghĩ thoai. Còn lại thì với lisp mình chẳng phải đặt cái này ^_^ , trình còi nên không phải dùng cái này.
-
1
-
-
-
14 giờ trước, Han Tinh đã nói:Một layout có nhiều bản vẽ thì làm gì dùng được Publish chứ?
Uh nhỉ !
Mà vẽ thế thì khác gì vẽ hết bên model cho nhẹ ? Sang layout làm vài chục cái khung view mở file chờ dài cổ !
-
12 giờ trước, Doan Nguyen Van đã nói:Do em không in Layout bao giờ nên k có bản vẽ mẫu để test bác ạ
In model thì dùng cho biến đổi kiểu VN quy mô nhóm nhỏ sài cái Lsp thế này là được rồi.
In Layout sẽ kết hợp với XREF ...... hệ thống quy mô lớn khoảng vài chục đến vài trăm nhân lực cùng chạy 1 dự án. Mà cái này thì có Publish rồi nên cũng không cần viết thêm làm gì cho mất công. :)
-
-
8 giờ trước, tuanlongtl đã nói:Có 2 đối tượng, yêu cầu vẽ đường thẳng nằm ngang có độ dài cho trước tiếp với 2 đối tượng đó
Cái này vẽ thủ công cho nhanh bằng line , copy xong rồi move đến điểm giao. Chắc 2s. Lisp liếc làm gì ^_^
-
Nhờ chỉnh sửa lisp
trong AutoLisp
Cái lisp này nhằm mục đích ntn ?
Bạn mô tả rõ thì có khi viết lại còn nhanh hơn ngồi sửa và check code :)) Nhất là code copy và rename tên tác giả. !
-
8 giờ trước, Nguyễn Minh Chương đã nói:Xuất ra vị trí tùy ý khi mình dùng chuột chọn vị trí đó, VD: khi mình chọn xong các đường để đo, space rồi nhập chuột trái 1 vị trí bất kỳ thì text tổng độ dài nó xuất hiện ở vị trí đó.
Còn to nhỏ thì không thành vấn đề, chỉ cần nhìn thấy là được rồi.
Cảm ơn bạn.
Ok đã chỉnh nhé. ^_^
(defun c:cc (/ ss tl n ent itm obj l txt) (setq ss (ssget) tl 0 n (1- (sslength ss))) (while (>= n 0) (setq ent (entget (setq itm (ssname ss n))) obj (cdr (assoc 0 ent)) l (cond ((= obj "LINE") (distance (cdr (assoc 10 ent)) (cdr (assoc 11 ent)))) ((= obj "ARC") (* (cdr (assoc 40 ent)) (if (minusp (setq l (- (cdr (assoc 51 ent)) (cdr (assoc 50 ent))))) (+ pi pi l) l))) ((or (= obj "CIRCLE") (= obj "SPLINE") (= obj "POLYLINE") (= obj "LWPOLYLINE") (= obj "ELLIPSE")) (command "_.area" "_o" itm) (getvar "perimeter")) (t 0)) tl (+ tl l) n (1- n))) (entmake (list (cons 0 "TEXT") (cons 100 "AcDbText") (cons 10 (trans (getpoint "\nCh\U+1ECDn v\U+1ECB trí \U+0111\U+1EB7t text: ") 1 0)) (cons 40 (getvar 'TEXTSIZE)) (cons 1 (strcat "L= " (rtos tl 2 0) " mm")) (cons 50 0.0) (cons 62 4) ) ) (princ) )
-
11 giờ trước, Nguyễn Minh Chương đã nói:Cảm ơn bạn "Bee" rất nhiều, mình ko biết làm sao để đính kèm bình luận trên, hjhjhj
Bạn "Bee" cho mình hỏi tí, là làm sao để lệnh lisp đó nó xuất kết quả ra thành text luôn không cần phải ghi đè kết quả đó lên 1 text có sẵn.
Cảm ơn bạn rất nhiều.
Xuất thành text ở vị trí nào ? to hay nhỏ theo cỡ nào ? Phải xác định được các cái đó thì xuất text đơn giản thôi ^_^
Lấy lấy kí tự
trong AutoLisp
Đã đăng · Trả lời báo cáo
Like ^_^