hung1608
-
Số lượng nội dung
155 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
6
Bài đăng được đăng bởi hung1608
-
-
Up thêm cái, có ai làm cho minh đi
Mà viết thêm cho mình cái chọn đôi tượng bổ sung thêm đối tượng ATT nhé
Thanks
- 1
-
Dear All
Mình có 2 lisp căn lề text, công dụng 2 lisp gần như nhau mình muốn tổng hợp lại làm 1 , bạn nào viét cho mình nhé
Mình muốn lấy lisp : Text - Can chinh Text( FT- DF - DFX - DX ) làm chủ đạo
+Lisp Text - Can chinh Text( FT- DF - DFX - DX ), khi căn lề text thì chọn 1 text làm chuẩn
Lisp TEXT - Canh Le Text thì chọn 1 điểm làm chuẩn để căn lề
* Yêu cầu cụ thể mình như sau :
+ Mình muốn lisp Text - Can chinh Text( FT- DF - DFX - DX ) có thêm tính năng chọn 1 điểm bất kỳ để căn lề như lisp TEXT - Canh Le Text .
+ Và bổ sung thêm tính năng CLN như lisp TEXT - Canh Le Text
http://www.mediafire.com/download/yos8gwcx0h52ioh/Lisp_Can_Le.rar
Thanks
- 1
-
Mình đã xem qua ý tưởng của bạn rất hay
Nhưng nếu mình muốn can thiệp trực tiếp vào cad để thay phím P, theo bạn có được không
Mình nghĩ đây là lệnh thì sẽ có các hàm kèm theo, ta cần tìm được vị trí cài đặt lệnh Copy, move chẳng hạn thì ta có thể thay đổi được chứ
Thanks
-
Dear all
Khi dùng lệnh copy hay move có thể dung phím P để chọn lại đối tượng trước đó
Mình muốn đổi phím P sang phím khác, bạn nào biết cánh chỉ mình cái
Thanks
- 1
-
Mình đang dùng cad2017. Không cần (VL-load-com) vì không dung VL.
Không chạy được? Cad nó báo như thế nào? Dự đoán là lại down chứ không phải là copy.
1 lệnh, chạy ra tất cả những gì bạn cần.
đúng rùi bạn ah, mình copy lại thì dùng được
1 lệnh được tất cả những gì mình yêu cầu, có vẻ lisp này đã đáp ứng được điều đó
bạn nếu thấy cần cái tiến gì thì làm luôn cho mình nhé :)
- 1
-
CAD 2016 của tôi chạy được Lisp này.
Chắc bạn thiếu (vl-load-com)
vl-load-com thêm vào ở đâu bạn
Mà bạn viết được lisp này tổng hợp các lệnh mình cần được không
-
Lisp không dùng được bạn ơi, mình dung cad 2016
Bạn xem có thể viết cả 3 yêu cầu của mình vào 1 lisp được không ban
-
đúng vậy bạn viết hộ mình được không
-
Mình tìm rùi bạn ah, link die với nó không thỏa mãn hết các điều kiện mình ghi ở trên bạn àh
Bạn làm hộ 1 mình một lisp thỏa mãn hết các đièu kiện trên được không bạn
Thanks
-
Dear All
Mình muốn nhờ các bạn viết hộ mình 1 lisp tính tổng các dim để mình thống kê chiều đai đối tượng, lisp mình có 1 chút lựa chọn sau:
+ Quét toàn bộ dim sẽ tính được tổng chiều dai tất cả các dim
+ Quét toàn bộ dim sẽ thống kê chiều dài Dim theo các Style
+ Chọn 1 dim làm mẫu quét Dim sẽ thống kê được chiều dài của Dim theo Style đó
Thanks các bạn
- 1
-
tại sao phải dùng lisp. Dùng lệnh PEDIT rồi chọn option Reverse để đổi chiều đường pline
Thanks bạn nhiều
- 1
-
Bạn nào sửa giúp mình lisp này có tác dụng vơi đường PL cái
- 1
-
Để chọn được cả line và pline thì thay
(setq ss (ssget '((0 . "LINE"))))
(setq ss (ssget '((0 . "POLYLINE"))))
thành
(setq ss (ssget '((0 . "*LINE"))))
Còn chạy được hay ko thì là chuyện khác nhé
không chạy bạn ah, nếu được bạn sửa luôn giúp minh đi
- 1
- 1
-
-
Lisp này của mình chỉ chọn được đối tượng là Line, bạn nào sủa hộ để nó chọn thêm được đối tượng là PL giúp mình cái.
;; free lisp from cadviet.com;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/153713-xoay-o-n-th-ng/(defun c:9 ( / cmd ss ename info dxf10 dxf11)(setq cmd (getvar 'cmdecho))(setvar 'cmdecho 0)(prompt "\nChon (cac) LINE,POLYLINE muon xoay 180 do !")(setq ss (ssget '((0 . "LINE"))))(setq ss (ssget '((0 . "POLYLINE"))))(if ss(repeat (sslength ss)(setq info (entget (setq ename (ssname ss 0)))dxf10 (cdr (assoc 10 info))dxf11 (cdr (assoc 11 info))info (subst (cons 10 dxf11) (assoc 10 info) info)info (subst (cons 11 dxf10) (assoc 11 info) info))(entmod info)(ssdel ename ss))(alert "\n*** Khong chon duoc thang nao ca ^|^ ***"))(setvar 'cmdecho cmd)(princ))- 1
-
Thank bác! nhưng bí quá em mới dùng command.
+ Lsp ở dưới có lẽ đạt được cả Y/c 2 và 3 (do chưa hiểu lắm về ý đồ của chủ thớt trong Y/c 3).
+ Yêu cầu Leader phải có 2 đoạn gấp khúc trở lên (2 Segment).
+ Có 1 leader mẫu trước và dùng kiểu offset như lsp trước.
+ Các Segment trước (về phía mũi tên) có chung cùng khoảng cách offset, Segment cuối cùng có khoảng cách khác.
(defun c:tt (/ AT:Offset LWPoly ang1 ang2 clr dis dis2 ele ent epe ept i lma lpl lsp nepe nept nle npl obj ole opl pee pt1 pte sll) (defun AT:Offset (O D P / _pt p1 p2 c D g) (setq _pt (lambda (s) (vlax-curve-getPointAtDist O (s (vlax-curve-getDistAtPoint O p1) 0.00001)))) (if (and (setq p1 (vlax-curve-getclosestpointtoprojection O (trans P 1 0) '(0 0 1))) (or (setq p2 (setq c (_pt +))) (setq p2 (_pt -))) (if (minusp (- (* (- (car p2) (car p1)) (- (cadr (trans P 1 0)) (cadr p1))) (* (- (cadr p2) (cadr p1)) (- (car (trans P 1 0)) (car p1))))) (if (vl-position (vla-get-objectname O) '("AcDbLine" "AcDbXline")) (setq D (- (abs D))) (setq D (abs D))) (if (vl-position (vla-get-objectname O) '("AcDbLine" "AcDbXline")) (setq D (abs D)) (setq D (- (abs D))))) (or c (setq D (- D))) (not (vl-catch-all-error-p (setq g (vl-catch-all-apply 'vla-offset (list O D)))))) (car (vlax-safearray->list (vlax-variant-value g))))) (defun LWPoly (lst) (entmakex (append (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline") (cons 90 (length lst)) (cons 70 0)) (mapcar (function (lambda (p) p)) lst)))) (princ "\nSelect a Leader...!") (if (setq ele (ssget "_+.:E:S" '((0 . "LEADER")))) (progn (setq ent (ssname ele 0) ole (vlax-ename->vla-object ent) clr (vla-get-DimensionLineColor ole) lsp (vl-remove-if-not '(lambda (x) (member (car x) '(10))) (entget ent)) pte (cdr (last lsp)) lma (vl-remove-if '(lambda (x) (member (car x) '(-1 5 10))) (entget ent))) (if (> (length lsp) 2) (progn (setq opl (LWPoly lsp) obj (vlax-ename->vla-object opl)) (vla-put-color obj clr) (if (and (setq dis (getdist "\nOffset distance: ")) (or (setq dis2 (getreal (strcat "\nOffset Distance last Segment <" (rtos (* dis 1.5)) ">: "))) (setq dis2 (* dis 1.5))) (setq sll (getint "\nNumber of Leader:")) (setq pt1 (getpoint "\nSelect side to offset to: "))) (progn (setq i 1) (repeat sll (if (AT:Offset obj (* dis i) pt1) (progn (setq npl (entlast) lpl (vl-remove-if-not '(lambda (x) (member (car x) '(10))) (entget npl)) epe (cdr (nth (- (length lsp) 2) lpl)) pee (cdr (nth (- (length lsp) 3) lpl)) ept (cdr (last lpl)) ang1 (angle epe ept) ang2 (angle pte ept)) (and (setq nept (polar pte (angle pte ept) (* dis2 i)) nepe (inters pee epe nept (polar nept ang1 (distance ept epe)) nil)) (setq lpl (append (reverse (cddr (reverse lpl))) (list (cons 10 nepe) (cons 10 nept)))) (setq nle (vlax-ename->vla-object (entmakex (append lma lpl))))) (if nle (progn nle (vla-put-arrowheadsize nle (vla-get-arrowheadsize ole)) (vla-put-DimensionLineColor nle clr))) (entdel npl))) (setq i (1+ i))))) (vla-erase obj)) (Acet-ui-message "Lisp chi thuc hien voi Line-Leader co so Segment > 1!" "Thong bao!" (+ 0 16 768))))) (princ))
Cảm ơn bạn, có lisp đáp ứng đúng nhu cầu của mình rui
Thanks bạn nhiều
-
Yêu cầu 2: (Chọn 1 leader nhập khoảng cách offset, số lượng, phía để tạo các leader mới theo kiểu offset)
(defun c:tt (/ LWPoly ang clr ele ent i lma lpl lsp nle npl obi obj ole dis opl pt1 pt2 sll) (defun LWPoly (lst) (entmakex (append (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline") (cons 90 (length lst)) (cons 70 0)) (mapcar (function (lambda (p) p)) lst)))) (princ "\nSelect a Leader...!") (if (setq ele (ssget "_+.:E:S" '((0 . "LEADER")))) (progn (setq ent (ssname ele 0) ole (vlax-ename->vla-object ent) clr (vla-get-DimensionLineColor ole) lsp (vl-remove-if-not '(lambda (x) (member (car x) '(10))) (entget ent)) lma (vl-remove-if '(lambda (x) (member (car x) '(-1 5 10))) (entget ent))) (setq opl (LWPoly lsp) obj (vlax-ename->vla-object opl)) (vla-put-color obj clr) (if (and (setq dis (getdist "\nOffset distance: ")) (setq sll (getint "\nNumber of Leader:")) (setq pt1 (getpoint "\nSelect side to offset to: "))) (progn (setq pt2 (vlax-curve-getclosestpointto obj pt1 t) ang (angle pt1 pt2)) (if (< pi ang (* pi 2)) (setq dis (- dis))) (setq i 0) (repeat sll (setq obi (vla-offset obj (* dis (setq i (1+ i)))) npl (entlast) lpl (vl-remove-if-not '(lambda (x) (member (car x) '(10))) (entget npl))) (setq nle (vlax-ename->vla-object (entmakex (append lma lpl)))) (vla-put-arrowheadsize nle (vla-get-arrowheadsize ole)) (vla-put-DimensionLineColor nle clr) (entdel npl)) (vla-erase obj))))) (princ))
Bị lỗi bạn ơi load xong nó báo lỗi luôn
Command: AP
APPLOAD Leaner - Offset Le ( CEE ).lsp successfully loaded.
Command: ; error: syntax error
Thanks
- 1
-
Code trên tôi viết tổng quát cho việc tạo và xóa objects Le. Có thể một lúc nào đó bạn tự viết cho mình trường hợp 2 và 3 nếu bạn có danh sách các points :D .
Trường hơp 1 có thể rút gọn lại cho Le theo chiều khác hay các huong khac nhau :) :
(defun c:Ele (/ doc p1 s l l1 lst p3 p4 a p2 pg lm) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) (princ "\nChon cac Leaders...") (if (and (ssget '((0 . "LEADER"))) (setq p1 (getpoint "\nPick chon diem chuan cho cac diem goc cua Leaders...")) ) (progn (vlax-for le (setq s (vla-get-ActiveSelectionSet doc)) (setq l (vlax-get le 'Coordinates) l1 (reverse (cdddr (reverse l)))) (repeat (/ (length l) 3) (setq lst (cons (list (car l) (cadr l) (caddr l)) lst)) (setq l (cdddr l))) (setq p3 (car lst) p4 (cadr lst) a (angle p4 p3) p2 (polar p1 (+ a (* pi 0.5)) 1) pg (inters p1 p2 p3 p4 nil)) (setq lm (append l1 pg)) (vlax-put le 'Coordinates lm) ) (vla-delete s) )) (princ))
Thanks bạn.
Về 2 trường hợp kia, thì bạn xem hộ mình nếu lisp chọn điệm làm mốc ( điểm cho trước ) theo các thứ tụ mình chọn, sau đó chọn góc theo chiều mình quay LE, cuối cùng là chọn khoảng cách giua các chân goc quay được không bạn
-
Nguyện vọng 1 đây :) :
(defun c:Ele (/ getXdata SaVa dxf2va SetXdata doc ms p1 p2 s l l1 lst p3 p4 pg lm type pt te pts obj lx) (defun getXdata (obj / typ val) (vla-getxdata obj "" 'typ 'val) (if (and typ val) (apply 'mapcar (cons 'cons (list (vlax-safearray->list typ) (mapcar 'vlax-variant-value (vlax-safearray->list val)))))) ) (defun SaVa (mode lst) (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray mode (cons 0 (1- (length lst)))) lst)) ) (defun dxf2va (lst *typ *val / d) (set *typ (SaVa vlax-vbInteger (mapcar 'car lst))) (set *val (SaVa vlax-vbVariant (mapcar '(lambda (x) (if (listp (setq d (cdr x))) (vlax-3D-point d) (vlax-make-variant d))) lst))) ) (defun SetXdata (obj lst) (dxf2va lst 'typ 'val) (vla-SetXData obj typ val) ) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)) ms (vla-get-ModelSpace doc)) (princ "\nChon cac Leaders...") (if (and (ssget '((0 . "LEADER"))) (setq p1 (getpoint "\nPick chon diem chuan cho cac diem goc cua Leaders...") p2 (polar p1 (* pi 0.5) 1)) ) (progn (vlax-for le (setq s (vla-get-ActiveSelectionSet doc)) (setq l (vlax-get le 'Coordinates) l1 (reverse (cdddr (reverse l)))) (repeat (/ (length l) 3) (setq lst (cons (list (car l) (cadr l) (caddr l)) lst)) (setq l (cdddr l))) (setq p3 (car lst) p4 (polar p3 pi 1) pg (inters p1 p2 p3 p4 nil)) (setq lm (append l1 pg)) (setq type (vla-get-type le) pt (vlax-3d-point pg) te (vla-AddMText ms pt 1 "") pts (SaVa 5 lm)) (setq obj (vla-AddLeader ms pts te type)) (vla-Erase te) (if (setq lx (getXdata le)) (SetXdata obj lx) ) (vla-put-Coordinate obj 2 pt) (vla-put-StyleName obj (vla-get-StyleName le)) (vla-put-layer obj (vla-get-layer le)) (vla-put-arrowheadsize obj (vla-get-arrowheadsize le)) (vla-put-DimensionLineColor obj (vla-get-DimensionLineColor le)) (vla-Erase le)) (vla-delete s) )) (princ))
Lisp nay chỉ theo 1 chiều đuoc thôi, nêu Le theo chiều khác hay các huong khac nhau thì không đươc.Bạn có thể viết cho phuong bất kỳ của Le được không
-
Nguyện vọng 1 đây :) :
(defun c:Ele (/ getXdata SaVa dxf2va SetXdata doc ms p1 p2 s l l1 lst p3 p4 pg lm type pt te pts obj lx) (defun getXdata (obj / typ val) (vla-getxdata obj "" 'typ 'val) (if (and typ val) (apply 'mapcar (cons 'cons (list (vlax-safearray->list typ) (mapcar 'vlax-variant-value (vlax-safearray->list val)))))) ) (defun SaVa (mode lst) (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray mode (cons 0 (1- (length lst)))) lst)) ) (defun dxf2va (lst *typ *val / d) (set *typ (SaVa vlax-vbInteger (mapcar 'car lst))) (set *val (SaVa vlax-vbVariant (mapcar '(lambda (x) (if (listp (setq d (cdr x))) (vlax-3D-point d) (vlax-make-variant d))) lst))) ) (defun SetXdata (obj lst) (dxf2va lst 'typ 'val) (vla-SetXData obj typ val) ) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)) ms (vla-get-ModelSpace doc)) (princ "\nChon cac Leaders...") (if (and (ssget '((0 . "LEADER"))) (setq p1 (getpoint "\nPick chon diem chuan cho cac diem goc cua Leaders...") p2 (polar p1 (* pi 0.5) 1)) ) (progn (vlax-for le (setq s (vla-get-ActiveSelectionSet doc)) (setq l (vlax-get le 'Coordinates) l1 (reverse (cdddr (reverse l)))) (repeat (/ (length l) 3) (setq lst (cons (list (car l) (cadr l) (caddr l)) lst)) (setq l (cdddr l))) (setq p3 (car lst) p4 (polar p3 pi 1) pg (inters p1 p2 p3 p4 nil)) (setq lm (append l1 pg)) (setq type (vla-get-type le) pt (vlax-3d-point pg) te (vla-AddMText ms pt 1 "") pts (SaVa 5 lm)) (setq obj (vla-AddLeader ms pts te type)) (vla-Erase te) (if (setq lx (getXdata le)) (SetXdata obj lx) ) (vla-put-Coordinate obj 2 pt) (vla-put-StyleName obj (vla-get-StyleName le)) (vla-put-layer obj (vla-get-layer le)) (vla-put-arrowheadsize obj (vla-get-arrowheadsize le)) (vla-put-DimensionLineColor obj (vla-get-DimensionLineColor le)) (vla-Erase le)) (vla-delete s) )) (princ))
Mình thử rùi dùng rất tuyệt, bạn viết giúp mình 2 ý còn lại nhé
Thanks
- 1
-
Không hiểu ý bạn muốn ji ? Cắt Le tại gốc hay đâu ? :)
bạn xem giúp mình file mình gửi mình có ghi đầy đủ yêu cầu
http://www.mediafire.com/download/84hcefvboj2c8q3/Lisp+Le.dwg
bạn xem làm được thì giúp mình viết 1 cái lisp như thế này nhé
thanks
-
Ít thế tiếp đi chứ
- 2
-
An tiếp đi, anh chiều các chú
- 5
-
Không giúp thì thôi mà cứ ấn dislike vậy
Mà mấy bạn cần thêm thông tin gì để viết lisp này không mà sao k ai viết hộ vây
- 6
Chỉnh Lisp Căn Lề Text
trong AutoLisp
Đã đăng · Trả lời báo cáo
Lâu thế bạn , làm cho mình đi