Nguyen Hoanh 4670 Báo cáo bài đăng Đã đăng Tháng 7 3, 2007 Bác N Hoanh có thể viết 1 lisp này dùm mình được ko? Cám ơn trước nhé.Sau khi load Số liệu nhập từ notepad, qua Cad chọn điểm gốc rồi Vẽ biểu đồ SPT và in ra luôn số liệu nhập. Độ sâu (SPT) SPT1 SPT2 SPT3, số liệu dùng để vẽ SPT (Đường Line) là N30 = SPT2 + SPT3 và độ sâu. Tỷ lệ bản vẽ trong Cad là 1/250. Ví dụ như: Độ sâu (SPT) SPT1 SPT2 SPT3 2.5 2 3 4 5.5 5 6 7 8.5 7 6 8 Bạn upload 1 file CAD là kết quả của file text trên đi! Tôi chưa hiểu kết quả cuối cùng bạn cần gì. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
xuanhai 6 Báo cáo bài đăng Đã đăng Tháng 7 3, 2007 Gởi Bác N Hoanh. Mình đã upload file hinhtrukhoanmay.dwg lên rồi. Bác xem rồi viết giùm nhé. thank Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
xuanhai 6 Báo cáo bài đăng Đã đăng Tháng 7 3, 2007 Gởi Bác N Hoanh. Mình đã upload file hinhtrukhoanmay.dwg lên rồi. Bác xem rồi viết giùm nhé. thank http://www.cadviet.com/upfiles/Hinhtrukhoanmay_1.dwg Mình quên đườn dẫn. xin upload lại nha. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
thanhlamct 70 Báo cáo bài đăng Đã đăng Tháng 7 3, 2007 Bác Hoành viết hộ em cái lisp cộng các giá trị của đường dim với, cộng cả các đường dim đã bị explode thì càng tốt. Thanks bác Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
kts.ngocquan 37 Báo cáo bài đăng Đã đăng Tháng 7 3, 2007 Xin chaò các anh em ! Lâu rôì mơí có dịp để nhờ các cao thủ Auto Lips đây , 1.Khi tôi vẽ hoặc chỉnh sưả bản vẽ cuả ngươì khác thi rất hay bị tình trạng CÁC ĐÔÍ TƯỢNG KHÔNG ĐỒNG PHẲNG, vâỵ anh em có thể cho tôi biết taị sao bị như thế , cách phòng chống hiện tượng đó và cách sưả các bản vẽ hhư thế ko ? (Tôi biết ở CAD có lệnh Flatten trong Express thì phaỉ .) 2.Anh em mình ai có lệnh nào tự động saveas bản vẽ trong 1 thơì gian định trước thì cho tôi xin luôn Trước đay tôi có lệnh naỳ , cho nó autoload và nó tự động lưu theo định dạng Ten-ban-ve_ngay-gio nhưng mất tiêu rôì Giúp tôi vơí nhé Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
duy782006 1592 Báo cáo bài đăng Đã đăng Tháng 7 4, 2007 1.Khi tôi vẽ hoặc chỉnh sưả bản vẽ cuả ngươì khác thi rất hay bị tình trạng CÁC ĐÔÍ TƯỢNG KHÔNG ĐỒNG PHẲNG, vâỵ anh em có thể cho tôi biết taị sao bị như thế , cách phòng chống hiện tượng đó và cách sưả các bản vẽ hhư thế ko ? (Tôi biết ở CAD có lệnh Flatten trong Express thì phaỉ .) Có cái này hôm trước thấy trên diễn đàn này nhưng bây giờ ko nhớ chổ để chỉ cho bác. Mạn phép tác giả tôi đưa lại lên cho bác dùng. Lệnh là VE0 (về không) nhớ là số 0 chứ không phải chử 0. (defun c:ve0 () (defun suadinhPl(thongtin / index doituong doituongmoi toado) (setq doituong (assoc '38 thongtin) doituongmoi (cons 38 0.) ) (subst doituongmoi doituong thongtin) ) (defun suadinh (thongtin / index doituong doituongmoi toado) (setq thongtinmoi nil) (foreach doituong thongtin (if (and (>= (car doituong) 10) (<= (car doituong) 36) ) (setq doituongmoi (list (car doituong) (cadr doituong) (caddr doituong) 0.0 ) ) (setq doituongmoi doituong) ) (setq thongtinmoi (append thongtinmoi (list doituongmoi))) ) (setq thongtinmoi thongtinmoi) ) (defun tendoituong (ssdt /) (cdr (assoc '0 (entget ssdt))) ) ;;--------------------------------------------- (setq tapdoituong (ssget) sodt (sslength tapdoituong) index 0 ta (chr 8) stxoa (strcat ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta ta) stxuly "Xu ly duoc: " ptcu nil ) (repeat sodt (setq ssdt (ssname tapdoituong index) pt (* (/ (* index 1.0) sodt) 100.0) index (1+ index) ) (if (/= pt ptcu) (progn (princ (strcat stxoa stxuly (rtos pt 2 0) "%")) (setq ptcu pt) ) ) (if (or (= (tendoituong ssdt) "SPLINE") (= (tendoituong ssdt) "LINE") (= (tendoituong ssdt) "CIRCLE") (= (tendoituong ssdt) "ARC") (= (tendoituong ssdt) "POLYLINE") (= (tendoituong ssdt) "ELLIPSE") (= (tendoituong ssdt) "TEXT") (= (tendoituong ssdt) "DIMENSION") (= (tendoituong ssdt) "ATTDEF") (= (tendoituong ssdt) "SOLID") (= (tendoituong ssdt) "INSERT") (= (tendoituong ssdt) "ATTRIB") (= (tendoituong ssdt) "HATCH") ) (progn (setq thongtin (entget ssdt) thongtin (suadinh thongtin) ) (entmod thongtin) ) ) (if (= (tendoituong ssdt) "LWPOLYLINE") (progn (setq thongtin (entget ssdt) thongtin (suadinhPL thongtin) ) (entmod thongtin) ) ) (princ) ) ) Còn vì sao mà cao độ không bằng nhau thì thường do các bác địa hình. Bản vẽ của các bác ấy có cao độ theo địa hình. Rồi anh em mình nhiều lấn sao chép. bắt điểm nên dính tùm lum. 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
duy782006 1592 Báo cáo bài đăng Đã đăng Tháng 7 4, 2007 1.Khi tôi vẽ hoặc chỉnh sưả bản vẽ cuả ngươì khác thi rất hay bị tình trạng CÁC ĐÔÍ TƯỢNG KHÔNG ĐỒNG PHẲNG, vâỵ anh em có thể cho tôi biết taị sao bị như thế , cách phòng chống hiện tượng đó và cách sưả các bản vẽ hhư thế ko ? (Tôi biết ở CAD có lệnh Flatten trong Express thì phaỉ .) dùng CAD thì như thế này Command: change Select objects: Command: CHANGE Select objects: 1 found Select objects: Properties/<Change point>: p Change what property (Color/Elev/LAyer/LType/ltScale/Thickness) ? *Cancel* Command: *Cancel* Command: *Cancel* Command: *Cancel* Command: *Cancel* Command: change Select objects: Other corner: 2 found Select objects: Properties/<Change point>: p Change what property (Color/Elev/LAyer/LType/ltScale/Thickness) ? el New elevation <0.0000>: 0.0 Change what property (Color/Elev/LAyer/LType/ltScale/Thickness) ? Nhưng chỉ chỉnh được cho các đối tượng có cao độ các điểm khác 0 nhưng bằng nhau thôi. (nghĩa là đối tượng đó nằm trên 1 mặt pẳng ngang ) nhưng thường thì cao độ các điểm trong đối tượng bị khác nhau nên không hiệu quả. 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
kts.ngocquan 37 Báo cáo bài đăng Đã đăng Tháng 7 4, 2007 Cảm ơn duy782006 nhé Nhưng tôi ko lấy lisp của bạn đc Nếu có thể bạn up file .lsp lên hộ tôi nhé Cảm ơn Thế còn tự đông saveas thì sao nhỉ Có ai giúp tôi với Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
duy782006 1592 Báo cáo bài đăng Đã đăng Tháng 7 5, 2007 Cảm ơn duy782006 nhéNhưng tôi ko lấy lisp của bạn đc Nếu có thể bạn up file .lsp lên hộ tôi nhé Cảm ơn Thế còn tự đông saveas thì sao nhỉ Có ai giúp tôi với Xin nhắc lại đây không khải là líp của em mà là trên CADVIET em load về. Lần sau bác chịu khó tìm trên diễn đàn có chưa rồi hãy hỏi. Vấn đề lấy lisp trong bài vừa rồi cũng đã có hướng dẩn trên diển đàn.Em nói lại như thế này. Bác chọn toàn bộ nội dung lisp trong bài vừa rồi. copy dán vào trong msword rồi từ đây mới copy dán vào trong notepad và lưu lại dưới đuôi *.lisp. Cứ nhắc lại mấy cái đã nói thế này có khi BQT lại giận thì gay. 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
xaydung 12 Báo cáo bài đăng Đã đăng Tháng 7 5, 2007 Bạn có thể post yêu cầu về autolisp ở topic này. anh hoanh ơi , em đang cần 1 lisp giống như lệnh matchprop nhưng ở dạng sau: khi chọn 1 đừơng line đã có độ dày (width) và khi chọn đừơng khác thì những đường đó sẽ có độ dày đúng như độ dày của đường đích ban đầu, trong khi đó lệnh ma không làm được như thế, anh có thể giúp em được không? Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Nguyen Hoanh 4670 Báo cáo bài đăng Đã đăng Tháng 7 6, 2007 anh hoanh ơi , em đang cần 1 lisp giống như lệnh matchprop nhưng ở dạng sau: khi chọn 1 đừơng line đã có độ dày (width) và khi chọn đừơng khác thì những đường đó sẽ có độ dày đúng như độ dày của đường đích ban đầu, trong khi đó lệnh ma không làm được như thế, anh có thể giúp em được không? Xin nói lại 1 chút: line không bao giờ có width, chỉ có pline mới có width. Lệnh MA của các ACAD đời mới đều matchprop được cả bề dày (tôi đang sử dụng ACAD2007). Bạn nên cài ACAD đời mới nhất. Vì nếu tắt các chức năng về hiển thị màu mè, mờ ảo, nó vẫn nhẹ như ACAD2000, nhưng nhiều tính năng mới hơn. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
ssg 1104 Báo cáo bài đăng Đã đăng Tháng 7 6, 2007 anh hoanh ơi , em đang cần 1 lisp giống như lệnh matchprop nhưng ở dạng sau: khi chọn 1 đừơng line đã có độ dày (width) và khi chọn đừơng khác thì những đường đó sẽ có độ dày đúng như độ dày của đường đích ban đầu, trong khi đó lệnh ma không làm được như thế, anh có thể giúp em được không? Bạn dùng thử cái này. Lệnh là CTN, không phân biệt đời Acad, hoạt động y chang MA, chỉ có tác dụng với Width và chỉ với Pline (như bác Hoành đã nói). ;;;------------------------------------------------------------- (defun getthick (e) (cdr (assoc 43 (entget e)))) ;;;------------------------------------------------------------- (defun setthick (e th) (setq data (entget e) old (assoc 43 data) new (cons 43 th) ) (entmod (subst new old data)) ) ;;;------------------------------------------------------------- (defun C:CTN() (setq th (getthick (car (entsel "\nSelect source object:")))) (while (setq e (car (entsel "\nSelect destination object:"))) (if e (setthick e th)) ) ) ;;;------------------------------------------------------------- Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
kts.ngocquan 37 Báo cáo bài đăng Đã đăng Tháng 7 6, 2007 Bạn nên cài ACAD đời mới nhất. Vì nếu tắt các chức năng về hiển thị màu mè, mờ ảo, nó vẫn nhẹ như ACAD2000, nhưng nhiều tính năng mới hơn. Cái này làm thế nào hả NH , có thể tạo thành 1 lisp rồi cho nó autoload ko ? Nwếu đc bác cho xin nhé Tôi cưỡi la già nhưng muốn phi như ngựa Bác giúp tôi nhé Thanks Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
thanhlamct 70 Báo cáo bài đăng Đã đăng Tháng 7 6, 2007 anh hoanh ơi , em đang cần 1 lisp giống như lệnh matchprop nhưng ở dạng sau: khi chọn 1 đừơng line đã có độ dày (width) và khi chọn đừơng khác thì những đường đó sẽ có độ dày đúng như độ dày của đường đích ban đầu, trong khi đó lệnh ma không làm được như thế, anh có thể giúp em được không? Tôi có lisp này bạn xem co dùng dược không. dùng lệnh pw hay wp để thay đổi độ dày của đối tượng. http://www.cadviet.com/upfiles/ChangeW.lsp Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
xaydung 12 Báo cáo bài đăng Đã đăng Tháng 7 6, 2007 cám ơn thanhlamct, tôi đã thử lisp của bác rùi nhưng có 1 vấn đề nảy sinh đó là : nếu chọn lại đường đó để thay 1 width khác thì lúc đó lisp mất tác dụng bác ạ (tức là chỉ có tác dụng 1 lần với đường đó thui), nhân tiện cám ơn bác Hoanh và ssg đã trả lời giúp tui. 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Jin Yong 337 Báo cáo bài đăng Đã đăng Tháng 7 7, 2007 Jin muốn có một lisp với tính năng sau: - Cho phép chọn một tập hợp điểm (points) bằng chuột. - Chỉ định số bắt đầu. - Lisp sẽ tự động đánh số thứ tự theo chiều tăng dần của X rồi đến Y, nghĩa là từ trái qua phải rồi từ dưới lên trên. Mọi người giúp Jin với nhé! Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Nguyen Hoanh 4670 Báo cáo bài đăng Đã đăng Tháng 7 8, 2007 Jin muốn có một lisp với tính năng sau:- Cho phép chọn một tập hợp điểm (points) bằng chuột. - Chỉ định số bắt đầu. - Lisp sẽ tự động đánh số thứ tự theo chiều tăng dần của X rồi đến Y, nghĩa là từ trái qua phải rồi từ dưới lên trên. Mọi người giúp Jin với nhé! Lệnh P2T: (defun c:P2T (/ sst lstent pp p soht strht) (defun ss2ent (ss / sodt index lstent) (setq sodt (cond (ss (sslength ss)) (t 0) ) index 0 ) (repeat sodt (setq ent (ssname ss index) index (1+ index) lstent (cons ent lstent) ) ) (reverse lstent) ) (defun getp (ent) (cdr (assoc 10 (entget ent))) ) (defun sosanh (ent1 ent2 / p1 p2 x1 y1 x2 y2) (setq p1 (getp ent1) x1 (car p1) y1 (cadr p1) p2 (getp ent2) x2 (car p2) y2 (cadr p2) ) (or ( (and (= x1 x2) ( ) ) ;;------------- Main ------------------------------- (princ "\nPoint to Text © 2007 CADViet.com") (setq sst (ssget '((0 . "POINT"))) caochu (getdist "\nVao chieu cao text: ") soht (1- (getint "\nVao so bat dau danh: ")) lstent (vl-sort (ss2ent sst) 'sosanh) ) (foreach pp lstent (setq soht (1+ soht) strht (itoa soht) p (getp pp) ) (entmake (list (cons 0 "TEXT") (cons 10 P) (cons 40 caochu) (cons 1 strht) ) ) ) (princ) ) (princ "\nSu dung lenh P2T bat dau") 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
duy782006 1592 Báo cáo bài đăng Đã đăng Tháng 7 9, 2007 vấn đề nảy sinh đó là : nếu chọn lại đường đó để thay 1 width khác thì lúc đó lisp mất tác dụng bác ạ (tức là chỉ có tác dụng 1 lần với đường đó thui), nhân tiện cám ơn bác Hoanh và ssg đã trả lời giúp tui. Tôi có cái này lệnh là MAW tác dụng với PL ;line ;ARC chỉ cần chọn pl có độ rộng làm chuẩn sau đó chọn các đối tượng khác. (DEFUN C:MAW(/ SSET NET SSL M) (prompt "\nChon PLINE mau.") (setq DTD (car (entsel))) (setq DT (entget DTD)) (setq NDT (cdr (assoc 40 DT))) (Princ "\nHay chon cac doi tuong muon chinh :") (Setq sset (Ssget)) (if (Null sset) (princ "\nKhong chon duoc doi tuong nao") ) (IF (/= NIL SSET) (PROGN (SETQ SSL (SSLENGTH SSET)) (INITGET 4) ;(SETQ NDT (GETREAL "\nNhap do rong : ")) (IF (/= NIL NDT) (WHILE (> SSL 0) (SETQ M (SSNAME SSET (SETQ SSL (- SSL 1)) )) (IF (= (CDR (ASSOC '0 (ENTGET M))) "LINE") (COMMAND "PEDIT" M "Y" "W" NDT "") ) (IF (= (CDR (ASSOC '0 (ENTGET M))) "LWPOLYLINE") (COMMAND "PEDIT" M "W" NDT "") ) (IF (= (CDR (ASSOC '0 (ENTGET M))) "ARC") (COMMAND "PEDIT" M "Y" "W" NDT "") ) ) ))) (PRINC) ) 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
interwar1283 216 Báo cáo bài đăng Đã đăng Tháng 7 10, 2007 Cảm ơn bác SSQ, mình dang cần ham Sum của bác. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
xaydung 12 Báo cáo bài đăng Đã đăng Tháng 7 11, 2007 Tôi có cái này lệnh là MAW tác dụng với PL ;line ;ARC chỉ cần chọn pl có độ rộng làm chuẩn sau đó chọn các đối tượng khác. Chào bác Duy782006, cái lisp của bác đúng ý em rùi chỉ tiếc không chạy báo lỗi như sau: APPLOAD maw.lsp successfully loaded. Command: ; error: malformed list on input Mong bác xem lại cho em, em cám ơn nhiều ! Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Nguyen Hoanh 4670 Báo cáo bài đăng Đã đăng Tháng 7 11, 2007 Chào bác Duy782006, cái lisp của bác đúng ý em rùi chỉ tiếc không chạybáo lỗi như sau: APPLOAD maw.lsp successfully loaded. Command: ; error: malformed list on input Mong bác xem lại cho em, em cám ơn nhiều ! Chạy ngon mà, Xaydung xem lại đi! Lỗi mà ACAD của Xaydung thông báo là do bạn bị thiếu (hoặc thừa) dấu ngoặc trong file lisp. Có thể bạn đã copy chưa chính xác đoạn code của Duy782006. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
conghoa 136 Báo cáo bài đăng Đã đăng Tháng 7 13, 2007 Cho mình xin cái lisp có tính năng: - Khi vẽ tường thì cần vẽ tim tương rồi nhập vào giá trị tường (ví dụ 220) là nó tự động offset sang 2 bên (mỗi bên 110) rồi xoá luôn cái tim tường mà mình vẽ. - Khi có 2 đường thẳng song song nhau, ta vẽ một đoạn vuông góc với 2 đường thẳng đó, rồi nhập giá trị (ví dụ 1200) là nó tự động offset sang 2 bên (mỗi bên 600) rồi trim luôn đoạn thẳng giữa 2 đường vừa được offset và xoá cái đoạn thẳng mà ta vẽ lúc đầu đi. (dùng để cắt lỗ cửa sổ). - Khi có 2 đường thẳng song song nhau, ta vẽ một đoạn vuông góc với 2 đường thẳng đó, rồi nhập 2 giá trị (ví dụ : 110 và 800) là nó tự động offset đoạn thẳng ta vẽ lúc đầu thành hai đoạn thẳng có khoảng cách như sau: Đoạn đầu tiên cách đoạn ta vẽ 110, đoạn thứ 2 cách đoạn ta vẽ là 110+800, rồi nó tự trim đoạn thẳng ở giữa 2 đoạn vừa được offset rồi xoá đoạn ta vẽ đi. (chiều offset do ta lựa chọn) Cảm ơn các bạn nhiều! Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Jin Yong 337 Báo cáo bài đăng Đã đăng Tháng 7 13, 2007 Jin vẽ mặt bằng kết cấu, các tầng giống nhau nên copy lên rồi sửa text theo tầng rất mệt. Jin muốn có một lisp để edit một text với yêu cầu: - Chọn text - Nhập số tầng Chẳng hạn: có sẵn một text là D2-16 (22x50) Thì số 2 ở đây là tầng 2, bây giờ Jin muốn một lisp cho phép chọn text trên, nhập tên tầng là 3, thì text mới sẽ thành: D3-16(22x50), nhập tầng là 13 thì text sẽ thành: D13-16(22x50) Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Nguyen Hoanh 4670 Báo cáo bài đăng Đã đăng Tháng 7 13, 2007 Cho mình xin cái lisp có tính năng:- Khi vẽ tường thì cần vẽ tim tương rồi nhập vào giá trị tường (ví dụ 220) là nó tự động offset sang 2 bên (mỗi bên 110) rồi xoá luôn cái tim tường mà mình vẽ. - Khi có 2 đường thẳng song song nhau, ta vẽ một đoạn vuông góc với 2 đường thẳng đó, rồi nhập giá trị (ví dụ 1200) là nó tự động offset sang 2 bên (mỗi bên 600) rồi trim luôn đoạn thẳng giữa 2 đường vừa được offset và xoá cái đoạn thẳng mà ta vẽ lúc đầu đi. (dùng để cắt lỗ cửa sổ). - Khi có 2 đường thẳng song song nhau, ta vẽ một đoạn vuông góc với 2 đường thẳng đó, rồi nhập 2 giá trị (ví dụ : 110 và 800) là nó tự động offset đoạn thẳng ta vẽ lúc đầu thành hai đoạn thẳng có khoảng cách như sau: Đoạn đầu tiên cách đoạn ta vẽ 110, đoạn thứ 2 cách đoạn ta vẽ là 110+800, rồi nó tự trim đoạn thẳng ở giữa 2 đoạn vừa được offset rồi xoá đoạn ta vẽ đi. (chiều offset do ta lựa chọn) Cảm ơn các bạn nhiều! Có 3 lệnh dưới đây đáp ứng được 3 yêu cầu của bạn: 1. lệnh CVT: vẽ tường cân từ một line hoặc pline. Đầu vào: đối tượng (poly)line, chiều dày tường. 2. lệnh CVTL: vẽ tường lệch từ một line hoặc pline và bề dày. Đầu vào: đối tượng (poly)line, phía offset, khoảng cách offset, chiều dày tường. 3. lệnh CVTRIM: cắt bỏ đoạn line giao nhau giữa 2 tường. Đầu vào: 4 đường, chia làm 2 cặp. Mỗi cặp thể hiện một tường. Như vậy, lệnh CVTL tuy có khác so với yêu cầu thứ 2 của bạn, nhưng nó điển hình hơn. Khi bạn muốn làm như yêu cầu thứ 2 của bạn, bạn kết hợp lệnh CVTL và lệnh CVTRIM là được. (defun luuos () (setq HOANH_OSMODE (getvar "OSMODE") HOANH_AUTOSNAP (getvar "AUTOSNAP") ) ) (defun traos () (if HOANH_OSMODE (setvar "OSMODE" HOANH_OSMODE) ) (if HOANH_AUTOSNAP (setvar "AUTOSNAP" HOANH_AUTOSNAP) ) ) (defun sudung (ham ss / sodt index entdt soapp) (setq sodt (cond (ss (sslength ss)) (t 0) ) soapp 0 index 0 ) (repeat sodt (setq entdt (ssname ss index) index (1+ index) ) (if (ham entdt) (setq soapp (1+ soapp)) ) ) soapp ) (defun GiaoDT (ent1 ent2) (setq ob1 (vlax-ename->vla-object ent1) ob2 (vlax-ename->vla-object ent2) ) (setq g (vlax-variant-value (vla-IntersectWith ob1 ob2 acExtendNone) ) ) (if (/= (vlax-safearray-get-u-bound g 1) -1) (setq g (vlax-safearray->list g)) (setq g nil) ) (if g (progn (setq kq nil sd (fix (/ (length g) 3)) ) (repeat sd (setq kq (append kq (list (list (car g) (cadr g) (caddr g)))) g (cdddr g) ) ) kq ) nil ) ) (defun c:CVT () (defun getfp (ent) (cdr (assoc 10 (entget ent))) ) (defun getlp (ent / tt) (setq tt (entget ent)) (if (= "LINE" (cdr (assoc 0 tt))) (cdr (assoc 11 tt)) (cdr (assoc 10 (cdr (member (assoc 10 tt) tt)))) ) ) (defun offone (ent) (setq p1 (getfp ent) p2 (getlp ent) pg1 (polar p1 (+ (angle p2 p1) (/ pi 2.0)) 100.0) pg2 (polar p1 (- (angle p2 p1) (/ pi 2.0)) 100.0) ) (command ".offset" dist ent pg1 "") (command ".offset" dist ent pg2 "") (command ".erase" ent "") ) (princ "\nOffset Line thanh tuong can © CADViet.com") (princ "\nVao doi tuong can offset (Pline hoac Line)") (setq ss (ssget '((-4 . " (0 . "LINE") (0 . "LWPOLYLINE") (-4 . "OR>") ) ) dist (/ (getdist "\nVao khoang cach: ") 2.0) ) (sudung offone ss) (princ) ) (defun c:CVTRIM () (princ "\nCat 2 doan tuong giao nhau © CADViet.com") (princ "\nChon 2 duong dau tien: ") (setq ssa (ssget) enta1 (ssname ssa 0) enta2 (ssname ssa 1) ) (princ "\nChon 2 duong tiep theo: ") (setq ssb (ssget) entb1 (ssname ssb 0) entb2 (ssname ssb 1) ) (setq ga1b1 (GiaoDT enta1 entb1) ga1b2 (GiaoDT enta1 entb2) ga2b1 (GiaoDT enta2 entb1) ga2b2 (GiaoDT enta2 entb2) ) (if (and (= (length ga1b1) 1) (= (length ga1b2) 1) (= (length ga2b1) 1) (= (length ga2b2) 1) ) (progn (setq ga1b1 (car ga1b1) ga1b2 (car ga1b2) ga2b1 (car ga2b1) ga2b2 (car ga2b2) ) (luuos) (setvar "osmode" 0) (command ".break" enta1 ga1b1 ga1b2) (command ".break" enta2 ga2b1 ga2b2) (command ".break" entb1 ga1b1 ga2b1) (command ".break" entb2 ga1b2 ga2b2) (traos) ) (princ "\nCac duong ban chon khong dung!") ) (princ) ) (defun c:CVTL () (princ "\nOffset (Poly)Line thanh tuong lech © CADViet.com") (setq sel (entsel "\nChon doi tuong can offset: ") ent (car sel) pg (cadr sel) p (getpoint "\nPhia de offset: ") gt1 (getdist pg "\nNhap khoang cach offset: ") gt2 (getdist "\nNhap be day tuong: ") gt2 (+ gt2 gt1) ) (luuos) (setvar "osmode" 0) (command ".offset" gt1 sel p "") (command ".offset" gt2 sel p "") (command ".erase" sel "") (traos) (princ) ) (vl-load-com) (princ "\nLisp xu ly tuong © CADViet.com") (princ) 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
conghoa 136 Báo cáo bài đăng Đã đăng Tháng 7 13, 2007 Jin vẽ mặt bằng kết cấu, các tầng giống nhau nên copy lên rồi sửa text theo tầng rất mệt. Jin muốn có một lisp để edit một text với yêu cầu:- Chọn text - Nhập số tầng Chẳng hạn: có sẵn một text là D2-16 (22x50) Thì số 2 ở đây là tầng 2, bây giờ Jin muốn một lisp cho phép chọn text trên, nhập tên tầng là 3, thì text mới sẽ thành: D3-16(22x50), nhập tầng là 13 thì text sẽ thành: D13-16(22x50) Bạn dùng lệnh find trong cad, sẽ làm được việc bạn yêu cầu :s_dead: Khi muốn chuyển toàn bộ D2 thành D.. thì bạn chọn lệnh Find, sau đó nhập D2 vào dòng bên trên D... vào dòng dưới, rồi chọn vùng của bản vẽ muốn chuyển. Sau đó ấn Repleace All. Thế là Ok :ph34r: @NguyenHoanh mình đã sử dụng được cái lisp bạn viết. Cảm ơn bạn nhiều! Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác