tien2005
-
Số lượng nội dung
512 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
59
Bài đăng được đăng bởi tien2005
-
-
@Htn02Bạn không đọc bài của tôi viết à "offset trong/ngoài, trái/phải là do người vẽ và định nghĩa của cad"
Bạn thử vẽ 2 pline (có thể khép kín) theo 2 chiều khác nhau rồi chạy lisp để thấy kết quả
-
@Htn02 offset trong/ngoài, trái/phải là do người vẽ và định nghĩa của cad. lisp sau là của @ketxu thì phải, mình sửa lại chút thôi
;======== OFFSET VE 2 PHIA ==================== (defun c:oo( / offlst #cayer) (or #d (setq #d 1)) (setq #d (cond ((getdist (strcat "\nKhoang cach Offset < " (vl-princ-to-string #d) " > :")))(#d))) (princ "\n Chon doi tuong :") (if (ssget (list (cons 0 "Ellipse,Lwpolyline,Spline,Line,Xline,Circle,Arc,Pline"))) (PROGN (vlax-for x (vla-get-activeselectionset(vla-get-activedocument(vlax-get-acad-object))) (vl-every '(lambda (d / o) (if (not (vl-catch-all-error-p (setq o (vl-catch-all-apply 'vlax-invoke (list x 'Offset d))) ) ) (setq offlst (cons (car o) offlst)) ) ) ;(list #d (- #d)) (list #d ) ) ) (SETQ #cayer (getvar "clayer")) (mapcar '(lambda (x) (vla-put-layer x #cayer) (vla-put-color x 256) ) offlst) ) ) (PRINC) ) -
-
-
-
-
1
-
-
19 giờ trước, xuandat268 đã nói:bạn có thể share lại lips này được không
của Bạn đay nhé
(defun c:imf () ;;;Insert Multi Files by Nguyen Hoanh ( bo tat ca ban ve vao 1 file rieng, roi nhan lenh, chon ban ve dau tien ) (setq pathname (vl-filename-directory (getfiled "Hay chon file dwg bat ky thuoc thu muc" "" "dwg" 0) ) filelist (vl-sort (vl-directory-files pathname "*.dwg") '<) p (getpoint "\nDiem chen: ") xht (car p) yht (cadr p) ) (setq oldos (getvar "osmode")) (setvar "osmode" 0) (foreach filename filelist (command "-insert" (strcat pathname "/" filename) (list xht yht) 1.0 1.0 0.0 ) (vla-getboundingbox (vlax-ename->vla-object (entlast)) 'p1 'p2 ) (setq p1 (vlax-safearray->list p1) p2 (vlax-safearray->list p2) xht (+ xht (abs (car (mapcar '- p2 p1))) 1000 ) blname (cdr (assoc 2 (entget (entlast)))) ) (command ".explode" (entlast) "") (command "-purge" "Block" blname "N") ) (setvar "osmode" oldos) (princ) ) (defun c:exf () ;;;EXtract Files by Nguyen Hoanh (defun filenamevalid (str) (vl-list->string (vl-remove-if '(lambda (x) (member x (vl-string->list "\\/:?>|"))) (vl-string->list str) ) ) ) (defun getboundingbox (ent / p1 p2) (vla-getboundingbox (vlax-ename->vla-object ent) 'p1 'p2) (list (setq p1 (vlax-safearray->list p1)) (setq p2 (vlax-safearray->list p2)) ) ) (defun ss2ent (ss / sodt index lstent) (setq sodt (if ss (sslength ss) 0 ) index 0 ) (repeat sodt (setq ent (ssname ss index) index (1+ index) lstent (cons ent lstent) ) ) (reverse lstent) ) (defun dxf (ent code) (cdr (assoc code (entget ent)))) (defun gettag (ent / entbl lst) (setq entbl ent) (while (and (setq entbl (entnext entbl)) (= (dxf entbl 0) "ATTRIB") ) (setq lst (append lst (list (cons (dxf entbl 2) (dxf entbl 1))))) ) lst ) (setq entbl (car (entsel "\nHay pick vao block khung ten")) blname (dxf entbl 2) taglst (gettag entbl) index 0 ) (princ "\nCac tag trong block:") (foreach pp taglst (princ (strcat "\n" (itoa index) ": " (car pp))) (setq index (1+ index)) ) (textscr) (setq tag (car (nth (getint "\nHay nhan 0,1,2... de chon tag: ") taglst) ) ) (graphscr) (command ".zoom" "e") (setq oldos (getvar "osmode")) (setvar "osmode" 0) (setq ss (ssget "x" (list (cons 0 "INSERT") (cons 2 blname))) lst (ss2ent ss) lst (mapcar '(lambda (e) (append (list e (cdr (assoc tag (gettag e)))) (getboundingbox e) ) ) lst ) ) (foreach pp lst (setq e (nth 0 pp) f (strcat (getvar "dwgprefix") (filenamevalid (nth 1 pp)) ".dwg" ) p1 (nth 2 pp) p2 (nth 3 pp) ss (ssget "_w" p1 p2) ss (ssadd e ss) ) (command ".wblock" f) (if (setq fh (open f "r")) (progn (close fh) (command "y")) ) (command "" p1 ss "") (command ".oops") ) (setvar "osmode" oldos) (command ".zoom" "p") (princ) )
-
1
-
-
@linhnguyen7894 Bạn dùng lệnh TEXTTOFRONT thử xem. Nó đưa các đối tượng text, dim lên trên tất cả các dối tượng khác
-
-
Ý bạn là muốn chọn leader, dim có dimstyle A chuyển thành dimstyle B là chuẩn cty ?
-
5 giờ trước, enscap đã nói:Mình tìm được lisp trên 1 web lisp này thay đổi kiểu dim
Nhưng không có phần chọn dim, chỉ hiện lên các dim hiện có.
Vậy nhờ các bạn biết về lisp xem giúp và thêm phần chọn kiểu dim để thay đội .
xin chân thành cám ơn !
(defun c:CHDM (/ sclst dms dmlst dcl_id wri)
(setq dmlst '()
obj (vlax-get-acad-object)
doc (vla-get-activedocument obj)
dms (vla-get-dimstyles doc))
(vlax-for x dms (setq dmlst (cons (vla-get-name x) dmlst)))
(setq dcl_id (vl-filename-mktemp nil nil ".dcl")
wri (open dcl_id "w"))
(foreach x '(
"dimsty : dialog"
"{label = \"DimStyle List\";"
":list_box {key = \"dmstyle\";" "multiple_select = false; height=10;}"
"ok_cancel;"
"}"
)
(write-line x wri))
(setq wri (close wri))
(< 0 (setq dcl-load (load_dialog dcl_id))
(if (not (new_dialog "dimsty" dcl-load))(exit)))
(start_list "dmstyle")(mapcar 'add_list dmlst)(end_list)
(action_tile "dmstyle" "(setq sclst (get_tile \"dmstyle\"))")
(action_tile "accept" "(done_dialog)(setq clk t)")
(action_tile "cancel" "(done_dialog)(setq clk nil)")
(start_dialog)
(unload_dialog dcl-load)
(if clk
(if sclst
(progn
(setq secstl (nth (atoi sclst) dmlst))
(vla-put-activedimstyle doc (vla-item (vla-get-Dimstyles doc) secstl)))))
(princ)) lisp trên của bạn giống như chức năng đã có trên cad
thêm phần chọn kiểu dim để thay đội: chưa rõ ý này. Cần thiết thì đưa hình minh hoạ hoặc file cad mô tả cụ thể
-
-
Vào lúc 3/8/2024 tại 16:19, quanghuy0812 đã nói:Thanks bạn đã chia sẻ lisp.
Mình có cái muốn hỏi là Lisp này không nhận nét in trong cùng folder File Cad muốn in đúng ko bác? Do mình thấy mục Plotstyle chỉ hiện nét in trong thư mục mặc định nét in của Cad
trong mục Plotstyle Bạn chọn ADD Plotstyle rồi chỉ đến thư mục chứa plotstyle của Bạn thì lisp sẽ copy các plotstyle có trong thư mục vào thư mục mặc định của cad, đồng thời cũng hiện trong danh sách chọn của lisp
-
Bạn gửi file và lisp in lên đây để mọi người bắt bệnh cho nhanh
-
2 giờ trước, limfx đã nói:Em tìm ra phương án rồi ạ: Lấy 2 điểm trên đối tượng, kiểm tra khoảng cách đến đường màu tím, nếu bằng nhau thì đường đó song song!
12 phút trước, limfx đã nói:Cẩm ơn a tannguyen291 và amateurday: Thêm kiểm tra góc giữa 2 đường nữa là OK. Thanks!
trên polyline tính góc phức tạp hơn. Có thể kiểm tra thêm khoảng cách: p1p3 = p2p4 và p1p2 = p3p4
-
2 giờ trước, amateurday đã nói:Các bác ạ, tình hình là bản vẽ thường xuyên copy qua lại, dẫn đến việc nhiều nét trùng và lệch nhau tí tẹo (phải zoom 1000x mới thấy).
Khi dùng lisp tính tổng chiều dài thì trùng tè le.
Do đó, nhờ các bác giúp cho công cụ xóa trùng, xóa gần, hoặc giúp đánh dấu vị trí trùng để mò xóa bằng tay (chứ cứ quét đối tượng rồi thấy Properties > 1 rồi xóa thì phải dò từng chỗ mệt quá).
Ví dụ như file kèm là chỉ có 100 đường thôi. Em đã thử Overkill bó tay.
Bạn tìm hiểu lệnh overkill
-
1
-
-
-
3 giờ trước, duy782006 đã nói:Trong thực tế bài toán chia đoạn tường rào theo đường cong là có thiệt. Nhưng mình thì rải đuổi 1 đầu, thiếu đủ anh cuối chịu tuỳ thực tế chứ ít chơi cả 2 đầu chịu lắm, và cũng hiếm khi không đủ lại lấy bên đường thẳng qua vì như vậy mất chút đất của ranh thẳng chủ đầu tư sẽ bắt đền đấy.
@duy782006 thực tế làm hàng rào theo ranh đất là không có vid ranh đất là các đoạn thẳng, chia hàng rào thì phải tính thêm khe lún (khe co dãn) giữa các phân đoạn rào
Vào lúc 24/4/2024 tại 16:40, thuyen mai đã nói:@thuyen mai trong video trên của mình chỉ cần nhập các số liệu: 3 điểm xác định góc, chiều dài đoạn, góc lệch giữa các đoạn liền kề ( hoặc nhập số phân đoạn ). Cách làm của Bạn là vẽ cung tròn rồi chia đoạn trên cung, bánh kính cung tròn để vẽ đã đúng chưa, đầu vào không đúng thì kết quả ra không đúng
@All làm cách nào để đưa video từ youtube vào cadviet mà không phải là đường link
-
15 giờ trước, tien2005 đã nói: -
-
@kul.for98 Bạn chọn "Plot to file" để chọn thư mục lưu file sau khi in (nếu chọn cancel thì file được lưu tại thư mục chứa file CAD)
-
@Duong Nhat Duy Bạn nên dùng hàm vl-filename-mktemp để tạo file dcl, file sẽ tự xóa khi kết thúc lisp. Dùng (getvar 'roamablerootprefix) để tạo file dcl có khả năng sẽ không tạo được file
-
1
-
-
thay dòng lệnh trong DT2: (command "-HATCH" "P" "S") bằng 2 dòng sau:
- (setvar "hpname" "SOLID,N") để cài đặt solid normal
- (command "-HATCH" "A" "I" "Y" "") để chọn island detection
-
1
-
-
Đã cập nhật tại bài #1: thêm các lựa chọn sắp xếp khi in, lưu cấu hình của giao diện ra file (trước khi in Bạn phải chọn máy in, giấy và nét in cho phù hợp), fix lỗi
-
2
-
1
-



Tạo giúp mình lisp tạo layer có độ dày nét
trong AutoLisp
Đã đăng · Trả lời báo cáo
(defun c:DoLayers () (mapcar 'MkLay '( "_Center" "_Dim" "_Hatch" "_Hiden" "_Steel" "_Stirrup" "_Text") ; Name [Str] '( 9 1 8 2 3 6 4 ) ; Colours [Int] '("CENTER" nil nil "HIDDEN" nil nil nil ) ; LineType [Str] '( "013" "013" "013" "015" "050" "040" nil ) ; LineWeight [Str] 0.18 = "018" '( T T T T T T T ) ; Plottable (T or nil) '( nil nil nil nil "Thep chiu luc" "Thep dai" nil ) ; Description [Str] ) (princ) ) (defun MkLay (Nme Col lTyp lWgt Plt des / lays lay) (vl-load-com) (setq lays (vla-get-layers (vla-get-ActiveDocument (vlax-get-acad-object) ) ) lay (cond ((tblsearch "LAYER" Nme) (vla-item lays Nme) ) (t (vla-add lays Nme)) ) ) (and Col (vla-put-Color lay Col)) (and lTyp (or (tblsearch "LTYPE" lTyp) (vla-load (vla-get-Linetypes (vla-get-ActiveDocument (vlax-get-acad-object) ) ) lTyp (if (zerop (getvar 'measurement)) "acad.lin" "acadiso.lin") ) ) (vla-put-Linetype lay lTyp) ) (and lWgt (vl-catch-all-apply 'vla-put-LineWeight (list lay (eval (read (strcat "acLnWt" lWgt))))) ) (and (not Plt) (vla-put-Plottable lay :vlax-false)) (and des (/= "" des) (vla-put-Description lay des)) )Bạn khai báo chi tiết cho layer mới sẽ được tạo bên trong c:DoLayers nhé