-
Số lượng nội dung
548 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
46
Bài đăng được đăng bởi ndtnv
-
-
Nhờ chỉnh sửa Lisp
trong AutoLisp
Sao không dùng copy paste toàn bộ taphop
(vl-cmdf "_.copybase" "_none" '(0 0 0) taphop "")
-
2
-
-
Tôi thấy cách làm trên có vẽ ngược quy trình.
Chiều dài cạnh tam giác tính được từ các node chứ trong thực tế khó có trường hợp cạnh => node
trừ khi các tam giác = nhau hoặc có thể tổ hợp các đa giác thành hình hoàn chỉnh như quả bóng
Theo cách của các chương trình kết cấu, từ bảng tọa độ node và bảng danh sách các tam giác với các đỉnh tương ứng
=> vẽ tự động hoàn toàn là dễ nhất
-
Có thể cải tiến tốc độ và độ chính xác bằng phép chia nhị phân.
Xem đường cong kín là đường cong hở có điểm đầu = cuối
1. Tìm đường tròn qua tất cả các đỉnh
2. Nếu là đường cong, tìm gđ với đường tròn, nếu có 0 hoặc 1 gđ: đường cong nằm trong.
a. Nếu 2 gđ: xét tđ đoạn cong nếu nằm trong chứng tỏ 2 gđ tiếp xúc đường tròn, nếu nằm ngoài tìm đường tròn mới bao trung điểm của đoạn cong.
b. Nếu có nhiều gđ, xét từng đoạn 2 gđ kề nhau, nếu trung điểm nằm trong: đoạn đó nằm trong đường tròn.Nếu trung điểm nằm ngoài, xét như a.
Sau đó tìm đường tròn bao trung điểm các đoạn
3. Lặp lại bước 2 đến độ chính xác cần thiết
-
Khai báo là:
Dim dimaligned1 As AcadDimAligned
ObjectName là "AcDbRotatedDimension"
thì làm sao chạy đúng được
-
1
-
-
Cao kiến thì không dám, nhưng làm không theo lệ là ĐC // TN thì bên A chưa chắc chấp nhận.
Tốt nhất là đợi quocmanh04tt online hoặc gửi mail đến Quocmanh04trungtiet@gmail.com rồi xin hoặc trả 1 ít phí vì lisp của bạn ấy đã được chấp nhận.
Cách của bạn là ngoại suy thì ĐC không // TN như lệ thường nên có khả năng bên A không chịu.
Nếu gấp thì đợi DuongTrungHuy đi công tác về chỉnh lisp hoặc kêu bên KS nói điểm vô lý để họ sửa vì họ ăn tiền để làm việc này
-
1
-
-
Xem kỹ bản vẽ thì thấy khảo sát địa chất quá lụi:
- Copy đường TN => đường đc
- Đường TN vẽ từ kq đo đạc nên chính xác 2 số lẻ (cm). Đường ĐC chính xác trên 8 số lẻ: công nghệ nano chăng?
- Sau khi thi công, đường đc lại song song với nền đường : vô lý.
Có lẽ bạn và quocmanh04tt thuê cùng 1 cty khảo sát.
Theo cách làm thì trong phạm vi đường
- Trong video bạn quocmanh04tt nội suy đường ĐC cũ. Nhưng không có bản vẽ nên không rõ mc 3 và 7 đường ĐC dưới làm theo cách nào
- Trong bản vẽ letu_cds ngoại suy đường ĐC cũ theo bên trái và phải mc cọc H6, nhưng 2 m/c kia thì không theo tiêu chí này.
Nếu xác định rõ cách làm, bản vẽ đưa lên có DIM nên chỉ cần quét 1 lần là xong
-
1
-
-
Trong youtube có link bên dưới, chỉ là fas chứ không phải lisp
https://drive.google.com/file/d/0B2LetfHDljPGSGlINW9RUkctdW8/view?usp=sharing
-
Dùng các hàm:
vla-get-Color , vla-put-Color
vla-get-Linetype , vla-put-Linetype
vla-get-LineWeight , vla-put-LineWeightBiến hệ thống tương ứng:
CECOLOR , CELTYPE , CELWEIGHT
-
1
-
-
Tôi chỉ sửa lỗi vòng lặp, còn kết quả khi không có dxf 11 ra thế nào thì bạn tự sửa
(if (setq ss (ssget '((0 . "TEXT")))) (progn (setq ssl (acet-ss-to-list ss)) (setq ssl (vl-sort ssl '(lambda (x y) ( > (caddr (assoc 11 (entget x))) (caddr (assoc 11 (entget y))))))) ;;; (setq h (cdr(assoc 40 (entget (car ssl))))) ;;; i 1 p0 p1 ) (foreach dt ssl ;;; (command "text" "j" "mc" (list (+ (car p0) (* 3 h)) (- (cadr p0) h)) h 0 (cdr (assoc 1 (entget dt)))) ;;; (command "rectangle" p0 (list (+ (car p0) (* 6 h)) (- (cadr p0) (* 2 h)))) ;;; (setq p0 (list (+ (car p0) (* 6 h)) (cadr p0))) (setq str (strcat str "\t" (cdr(assoc 1 (entget dt))) "\n")) );;;foreach (SetClipBoardText str) ) ;;; (setq p1 (list (car p1) (- (cadr p1) (* 2 h)))) )
-
-
Chuyên môn tôi không phải cơ khí, nhìn hình đoán là độ dốc.
Lấy đó làm keyword, gg ra từ chuyên môn là độ côn
-
1
-
-
14 giờ trước, dungpham01 đã nói:cho em hỏi chuyển (vlax-ename->vla-object) rồi dùng (vlax-get obj '...) thì có nhanh hơn entget không ạ
Muốn biết hàm nào nhanh thì cứ viết hàm test. Vẽ 1 circle
(defun test (n / el eg o t0 t1 t2) (setq el (entlast)) (setq t0 (getvar "MILLISECS")) (repeat n (setq eg (entget el)) (dxf 10 eg)) (setq t1 (getvar "MILLISECS")) (repeat n (setq o (vlax-ename->vla-object el)) (vla-get-Center o)) (setq t2 (getvar "MILLISECS")) (list (- t1 t0) (- t2 t1) (/ (- t1 t0 0.0) (- t2 t1))) ) (test 50000)
Test trên máy tôi, hàm entget+dxf nhanh hơn khoảng trên 10%
Nếu cho (setq eg (entget el)) và (setq o (vlax-ename->vla-object el)) ra trên dòng (setq t0 (getvar "MILLISECS"))
hàm dxf nhanh hơn vla-get-Center khoảng 25-30 lần
-
Có lẽ hàm dxf có chứa entget nên chạy chậm, trong khi đó acet-dxf không chứa entget.
Nếu sửa như sau:
(defun dxf (k e) (cdr (assoc k e)))
Tạo 1 đối tượng có dxf 10
(setq el (entget(entlast))) (defun test (n / t0 t1 t2) (setq t0 (getvar "MILLISECS")) (repeat n (dxf 10 el)) (setq t1 (getvar "MILLISECS")) (repeat n (acet-dxf 10 el)) (setq t2 (getvar "MILLISECS")) (list (- t1 t0) (- t2 t1) (/ (- t1 t0 0.0) (- t2 t1))) ) (test 1000000)
Sau đó đổi vị trí cho dxf nằm sau acet-dxf
test thử trong cả 2 trường hợp dxf vẫn nhanh hơn acet-dxf
-
2
-
-
Dùng command cho 2d
(command ".pline";start "pline" command (repeat (length pt-list);repeat for each point (command (nth cnt pt-list));enter current point (setq cnt (1+ cnt));counter to next point "";return value to close "pline" command );end point repeat );end command
nếu 3d point phải đổi về ucs mới
Dùng entmake (2D)
(entmakex (append '((0 . "LWPOLYLINE") (100 . "AcDbEntity") (100 . "AcDbPolyline")) (list (cons 90 (length pt-list)) (cons 70 isclose)) (mapcar ''((x) (cons 10 x)) pt-list)) )
-
1
-
-
-
Dùng lệnh -VISUALSTYLES mới được
Command: -VISUALSTYLES
Enter an option [set Current/Saveas/Rename/Delete/?]: c
Enter an option [2dwireframe/3dwireframe/3dHidden/Realistic/Conceptual/Other]
<2dwireframe>: rPS: Bạn thử để trạng thái No selection xem có Visual style hay không?
-
Trong Properties thay đổi Visual style thành Realistic
-
Dùng tạm
(setq g (entget ent))
(entmod (subst (cons 1 "{\\W0.3;\\C6;Ph\U+1EA7n thi\U+1EBFt b\U+1ECB l\U+1EAFp \U+0111\U+1EB7t}") (assoc 1 g) g))Phần xử lý dxf 1 có lẽ không phức tạp lắm đối với bạn
-
1
-
-
Vào lúc 12/2/2020 tại 05:55, 790312 đã nói:Cảm ơn bác đã bỏ thời gian check. Nhưng bác sử dụng lisp này vẽ mũi tên xong, sau đó bác zoom nhỏ hình lại và vẽ đoạn thẳng khác dài hơn thì nó sẽ bị lỗi là chỉ vẽ mũi tên ở một đầu thôi bác ah. E gửi bác lisp e down ở bài 12 từ trên xuống của chính chủ, bác check như e nói xem. Cảm ơn bác nhiều.
;; free lisp from cadviet.com ;; this lisp was downloaded from https://www.cadviet.com/forum/topic/47541-%C4%91%C3%A3-xong-lisp-v%E1%BA%BD-pline-m%C5%A9i-t%C3%AAn-2-%C4%91%E1%BA%A7u/ (defun c:sline (/ loop p1 p2 lstPnt) (grtext -1 "Free from Cadviet.com @Ketxu") (setq lstPnt '()) (if (not asize) (setq asize 1)) (if (not PThk) (setq PThk 0.01)) (defun GETR (val msg / tm) (setq tm (getreal (strcat msg " <" (rtos val 2 4) ">: "))) (cond ((= (type tm) 'REAL) (eval tm)) ((= tm nil) (eval val)) (t (princ "\007 *error* Nh\U+1EADp sai lo\U+1EA1i d\U+1EEF li\U+1EC7u") (eval val)) ) ) (defun loop () (cond ((and(setq p2 (getpoint p1 "\n\U+0110i\U+1EC3m ti\U+1EBFp theo : "))(setq lstPnt (append (list p2) lstPnt))) (command p2) (setq p0 p1) (setq p1 p2) (loop)) ( t (command "u" (polar p1 (angle p1 p0) asize) "w" (/ asize 3) 0.0 p1 "")))) (setq asize (getr asize "\nK\U+00EDch th\U+01B0\U+1EDBc m\U+0169i t\U+00EAn :")) (setq PThk (getr PThk "\n B\U+1EC1 r\U+1ED9ng PLine :")) (setq p1 (getpoint "\n\U+0110i\U+1EC3m b\U+1EAFt \U+0111\U+1EA7u : ")) (setq lstPnt (append (list p1) lstPnt)) (command "pline" p1 "w" 0.0 0.0) (setq p2 (getpoint p1 "\n\U+0110i\U+1EC3m ti\U+1EBFp theo : ")) (setq lstPnt (append (list p2) lstPnt)) (command "w" 0.0 (/ asize 3) (polar p1 (angle p1 p2) asize) "w" PThk PThk p2) (setq p1 p2) (loop) (if (ST:Geo-ListLinear lstPnt) (foreach pt (cdr (vl-remove (last lstPnt) lstPnt)) (ST:Entmake-Circle pt 50)) ) (eval "Done") ) (defun ST:Geo-Linear ( p1 p2 p3 fuzz) ( (lambda ( a b c ) (or (equal (+ a B) c fuzz) (equal (+ b c) a fuzz) (equal (+ c a) b fuzz) ) ) (distance p1 p2) (distance p2 p3) (distance p1 p3) ) ) (defun ST:Geo-ListLinear (lst / tmp) (setq i 2) (cond ((and (= (length lst) 3)(ST:Geo-Linear(car lst)(cadr lst)(caddr lst) 1e-8))(setq tmp T)) (T (while (and (< i (1- (length lst))) (setq tmp (ST:Geo-Linear (nth 0 lst)(nth 1 lst) (nth (setq i (1+ i)) lst) 1e-8))) tmp ) ) ) tmp ) (defun ST:Entmake-Circle ( Pt Rad )(entmakex (list '(0 . "CIRCLE") (cons 10 pt)(cons 40 Rad))))
Test thử thì thấy có tình trạng như trên
Có lẽ lỗi do bắt điểm nhưng xem code thì không hiểu tại sao. Sửa thế này và test nhiều lần nhưng chưa thấy lỗi xảy ra
Tìm đến đoạn này và thêm như sau:
( t (command "u" (polar p1 (angle p1 p0) asize)
"w" (/ asize 3) 0.0 "none" p1 ""))-
1
-
-
PLINEGEN
Sets how linetype patterns generate around the vertices of a 2D polyline.
Does not apply to polylines with tapered segments.
0 Generates polylines to start and end with a dash at each vertex
1 Generates the linetype in a continuous pattern around the vertices of the polyline
Nếu linetype /= continuous sẽ thấy khác biệt
-
1
-
-
Tôi dùng vẫn được.
Tạo 1 layout tên Số 1, vẽ 2 line.
(setq LayoutName (getvar "CTAB")) -> "S\U+1ED1 1" (setq ss (ssget "X" '((0 . "LINE") (410 . "S\U+1ED1 1")))) -> <Selection set: 7b4f> (sslength ss) -> 2
Tuy nhiên nếu dùng vla thì tên ra dấu ? nên không dùng được
-
BLOCKNAME phải là string thì mới dùng (command "_.INSERT" BLOCKNAME ..)
(setq BLOCKNAME (cdr (assoc 2 (entget(car(entsel "\nSelect Block:"))))))
-
1
-
-
Lisp của quansla
Nếu lọc '(4 3 2) thì chọn cả dim angular
Nếu lọc '(4 3 2 5) thì bỏ mất arc length dim
Hàm tính bit N có thể rút gọn (rem N 32)
Tham khảo cách lọc dim :
Nếu quansla chưa làm được, tôi sẽ viết nếu rãnh
-
2
-
-
Help của CAD
SNAPSTYL Sets the snap style for the current viewport.
0 Standard (rectangular snap) Dùng Khi vẽ 2D
1 Isometric snap: Dùng khi vẽ 2.5D
-
1
-
[Hỏi]Đố vui với LISP
trong AutoLisp
Đã đăng · Trả lời báo cáo
Các DIMENSION có chân dim (POINT) hoặc text... nằm hoàn toàn trong windown có 2 điểm góc là p1 và p2 nhưng các thành phần khác của DIM (text, line, extension còn lại... ) nằm ngoài màn hình
Các đối tượng có nhiều đối tượng con khác như BLOCK... nếu 1 phần nằm hoàn toàn trong p1p2, các phần còn lại nằm ngoài màn hình cũng bị chọn