vantuan18nd 5 Báo cáo bài đăng Đã đăng Tháng 12 26, 2011 Mình có nhờ Anh Vo Quang Tue ( hay Võ Quang Tuệ gì gì đấy :mellow: ) làm cho Lisp đo khoảng cách rất hay như sau -chọn điểm thứ nhất -chọn điểm thứ hai -Kết quả thay cho một số có sẵn (defun C:TL3( / ss L te p1 p2) (while (and (setq p1 (getpoint "\n Chon diem thu nhat :")) (setq p2 (getpoint p1 "\n Chon diem thu hai :")) ) (setq L (distance p1 p2)) (setq te (entget(car(entsel"\n Chon Text de gan ket qua :"))) te (subst (cons 1 (rtos L 2 2)) (assoc 1 te) te)) (entmod te) ) ) -> Enter để kết thúc lệnh - Bây giờ mình muốn kết quả tìm được phải ghi ra nơi mình chọn, không phải là thay cho một số có sẵn như trước. Nhờ mọi người sửa giúp. 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
ketxu 3000 Báo cáo bài đăng Đã đăng Tháng 12 26, 2011 Bạn đã đọc nội quy, vậy hãy cố cho code vào thẻ code nhé. Lần đầu này mình sửa hộ bạn (defun c:tl3 (/) (vl-load-com) (vla-addtext (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (rtos (getdist (getpoint "\nP1 :") "\nP2 :") 2 2) (vlax-3d-point (getpoint "\nDiem dat KQ :")) (* (getvar "dimtxt")(getvar "dimscale")) ) (princ)) 2 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
Chiron 94 Báo cáo bài đăng Đã đăng Tháng 12 26, 2011 Mình đang tập tành mót LISP. Mặc định, mình đo theo mét, nếu không thích thì mình sẽ bỏ đi đơn vị. Hi vọng cái này đúng ý bạn: (defun C:TL3 (/ L p1 p2 txtht pnt) (while (and (setq p1 (getpoint "\n Chon diem thu nhat :")) (setq p2 (getpoint p1 "\n Chon diem thu hai :")) ) (setq L (distance p1 p2)) ;;; (setq te (entget (car (entsel"\n Chon Text de gan ket qua :"))) ;;; te (subst (cons 1 (rtos L 2 2)) (assoc 1 te) te)) ;;; (entmod te) (setq pnt (getpoint "\nChon diem chen text:")) (setq txtht (getdist (strcat "\nChieu cao text <" (rtos (getvar "textsize") 2 2) ">: "))) (if (null txtht) (setq txtht (getvar "textsize"))) (command "text" "m" pnt txtht 0 (strcat (rtos(/ L 1000) 2 2) "m")) ) ) 3 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
Tue_NV 3915 Báo cáo bài đăng Đã đăng Tháng 12 26, 2011 Mình có nhờ Anh Vo Quang Tue ( hay Võ Quang Tuệ gì gì đấy :mellow: ) làm cho Lisp đo khoảng cách rất hay như sau -chọn điểm thứ nhất -chọn điểm thứ hai -Kết quả thay cho một số có sẵn (defun C:TL3( / ss L te p1 p2 ) (while (and (setq p1 (getpoint "\n Chon diem thu nhat :")) (setq p2 (getpoint p1 "\n Chon diem thu hai :")) ) (setq L (distance p1 p2)) (setq te (entget(car(entsel"\n Chon Text de gan ket qua :"))) te (subst (cons 1 (rtos L 2 2)) (assoc 1 te) te)) (entmod te) ) ) -> Enter để kết thúc lệnh - Bây giờ mình muốn kết quả tìm được phải ghi ra nơi mình chọn, không phải là thay cho một số có sẵn như trước. Nhờ mọi người sửa giúp. Tue_NV là nick của Võ Quang Tuệ. Võ Quang Tuệ lập ra nick Tue_NV .. hề hề Yêu cầu của bạn đây : (defun C:TL3( / ss L te p1 p2 hei P) (while (and (setq p1 (getpoint "\n Chon diem thu nhat :")) (setq p2 (getpoint p1 "\n Chon diem thu hai :")) ) (setq L (distance p1 p2)) (initget "T") (setq p (getpoint "\nPick diem chen hoac go T de chon Text :")) (if (/= p "T") (progn (if (not hei) (setq hei (getreal "\nNhap chieu cao Text:"))) (entmake (list (cons 0 "TEXT") (cons 1 (rtos L 2 2)) (cons 40 hei) (cons 10 p) (cons 11 p))) ) (progn (setq te (entget(car(entsel"\n Chon Text de gan ket qua :"))) te (subst (cons 1 (rtos L 2 2)) (assoc 1 te) te)) (entmod te) ) ) ) ) Bạn chú ý : Text trong trường hợp mà bạn pick chọn lấy theo Style hiện hành Tue_NV đã lập ra 2 trường hợp : Bạn thích pick vào Text thì gõ T thích chọn điểm chèn cho Text thì pick chọn điểm chèn cho Text Đúng ý rồi nhé 1 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
vantuan18nd 5 Báo cáo bài đăng Đã đăng Tháng 12 26, 2011 Bạn đã đọc nội quy, vậy hãy cố cho code vào thẻ code nhé. Lần đầu này mình sửa hộ bạn (defun c:tl3 (/) (vl-load-com) (vla-addtext (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (rtos (getdist (getpoint "\nP1 :") "\nP2 :") 2 2) (vlax-3d-point (getpoint "\nDiem dat KQ :")) (* (getvar "dimtxt")(getvar "dimscale")) ) (princ)) Cảm ơn nhé . mình đang rất cần. Đúng ý mình rùi đấy 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
vantuan18nd 5 Báo cáo bài đăng Đã đăng Tháng 12 26, 2011 Tue_NV là nick của Võ Quang Tuệ. Võ Quang Tuệ lập ra nick Tue_NV .. hề hề Yêu cầu của bạn đây : (defun C:TL3( / ss L te p1 p2 hei P) (while (and (setq p1 (getpoint "\n Chon diem thu nhat :")) (setq p2 (getpoint p1 "\n Chon diem thu hai :")) ) (setq L (distance p1 p2)) (initget "T") (setq p (getpoint "\nPick diem chen hoac go T de chon Text :")) (if (/= p "T") (progn (if (not hei) (setq hei (getreal "\nNhap chieu cao Text:"))) (entmake (list (cons 0 "TEXT") (cons 1 (rtos L 2 2)) (cons 40 hei) (cons 10 p) (cons 11 p))) ) (progn (setq te (entget(car(entsel"\n Chon Text de gan ket qua :"))) te (subst (cons 1 (rtos L 2 2)) (assoc 1 te) te)) (entmod te) ) ) ) ) Bạn chú ý : Text trong trường hợp mà bạn pick chọn lấy theo Style hiện hành Tue_NV đã lập ra 2 trường hợp : Bạn thích pick vào Text thì gõ T thích chọn điểm chèn cho Text thì pick chọn điểm chèn cho Text Đúng ý rồi nhé Cái của bác Tuệ ấy - Khi nhấn T thì nó báo Invalid Point , không được rùi. -còn cái chọn điểm pick ấy. sao Bác không làm thế này: +chọn điểm cần ghi +Kết quả : Chọn cái text để mình "ma" cho nó giống, thay vì phải nhập chiều cao chữ, mà chiều cao chữ thì lại phải đi tìm. hơn nữa Text của bác lại không giống bản vẽ em đang dù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
Tue_NV 3915 Báo cáo bài đăng Đã đăng Tháng 12 26, 2011 Cái của bác Tuệ ấy - Khi nhấn T thì nó báo Invalid Point , không được rùi. -còn cái chọn điểm pick ấy. sao Bác không làm thế này: +chọn điểm cần ghi +Kết quả : Chọn cái text để mình "ma" cho nó giống, thay vì phải nhập chiều cao chữ, mà chiều cao chữ thì lại phải đi tìm. hơn nữa Text của bác lại không giống bản vẽ em đang dùng Theo ý bạn đây : (defun C:TL3( / ss L te p1 p2 textmau P) (while (and (setq p1 (getpoint "\n Chon diem thu nhat :")) (setq p2 (getpoint p1 "\n Chon diem thu hai :")) ) (setq L (distance p1 p2)) (initget "T") (setq p (getpoint "\nPick diem chen hoac go T de chon Text :")) (if (/= p "T") (progn (if (not textmau) (setq textmau (car(entsel "\nChon Text mau:")))) (entmake (list (cons 0 "TEXT") (cons 1 (rtos L 2 2)) (assoc 40 (entget textmau)) (cons 10 p) (cons 11 p) (assoc 7 (entget textmau)) )) ) (progn (setq te (entget(car(entsel"\n Chon Text de gan ket qua :"))) te (subst (cons 1 (rtos L 2 2)) (assoc 1 te) te)) (entmod te) ) ) ) ) 2 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
vantuan18nd 5 Báo cáo bài đăng Đã đăng Tháng 12 26, 2011 có thế chứ. thanks bác nhiều lắm em dùng được rồ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
vantuan18nd 5 Báo cáo bài đăng Đã đăng Tháng 12 26, 2011 Bác tue_vn, em nhờ tí nữa, bác sang topic [Yêu cầu]Tính cao độ một điểm bất kỳ khi có cao độ cho trước Lam hộ em 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
hamster2102 21 Báo cáo bài đăng Đã đăng Tháng 7 15, 2012 gửi lời cảm ơn đến bác @Tue_NV. lisp tl3 của bác viết giúp em nhiều lắm, em giờ sau khi dùng lệnh dal đo và ghi kích thước xong lại dung tl3 để lấy số liệu kích thước đó chuyển vào bảng nếu cải tiến cho 2 cái gộp làm 1 thì còn giảm cho em thêm hơn 1/5 thời gian nữa ^^ 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
Tue_NV 3915 Báo cáo bài đăng Đã đăng Tháng 7 15, 2012 gửi lời cảm ơn đến bác @Tue_NV. lisp tl3 của bác viết giúp em nhiều lắm, em giờ sau khi dùng lệnh dal đo và ghi kích thước xong lại dung tl3 để lấy số liệu kích thước đó chuyển vào bảng nếu cải tiến cho 2 cái gộp làm 1 thì còn giảm cho em thêm hơn 1/5 thời gian nữa ^^ Mới trả lời xong cho bạn ở chủ đề bên kia rồi. Lần sau nhớ search trước khi post bài nhé 2 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
hamster2102 21 Báo cáo bài đăng Đã đăng Tháng 7 16, 2012 cập nhật thêm chức năng nữa tương tự lệnh này các bạn nhé lệnh bác Tue có đổi thành dkt ( đây là lisp bác Tue_NV viết cho em ^^ ) cái này có thể đo và ghi kích thước 2 điểm bất kỳ đồng thời copy con số kích thước dưới dạng text thẳng đứng ngay tại con trỏ cho ta đặt ở vị trí khác bất kỳ ^^ lệnh rất nhanh và gọn không có động tác giả nào^^ http://www.cadviet.com/upfiles/3/52440_dkt.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
knguienn 0 Báo cáo bài đăng Đã đăng Tháng 6 9, 2013 Cám ơn bác Tue_NV, lisp rất hay ! rất hữu dụng :D 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
trangnhung 3 Báo cáo bài đăng Đã đăng Tháng 11 5, 2014 em thấy líp rất hay. Nhưng e có 1 vấn đề cần các bác giúp. lisp của bác Tue_NV chỉ đo đc đường chéo và đường thẳng. Trong trường hơpk của e, đường thẳng cần đo là 1 đường spl thì ko dùng đc. Rất mong bác giúp đỡ. nếu đc bác sửa lại là: chọn đường cần đo, điểm 1, điểm 2. Ghi kết quả ra text có sẵn. E chân thành cảm ơ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
trangnhung 3 Báo cáo bài đăng Đã đăng Tháng 11 5, 2014 Bác Tue_NV giúp e với. lisp tl3 rất hay. nhưng nó chỉ đo đc đường chéo và đường thẳng. Trường hợp của e là đo khoảng cách của đường cong, hay đường spl. Bác có thể chỉnh lisp giúp e như sau đc không ạ: chọn đường cần đo. Pick điểm 1, điểm 2, ghi kết quả ra text có sẵn. E chân thành cảm ơn !. Chúc bác mạnh giỏ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
nhoclangbat 392 Báo cáo bài đăng Đã đăng Tháng 11 5, 2014 - hi nhoc góp vui tí ^^, các dạng đường cong nhoc nghĩ chỉ có cách chọn mới tính đc chiều dài của nó, nhoc mót đc của mấy anh, viết lại để tính riêng cho dạng đường cong, bạn dùng thử xem, còn gộp 2 cái của anh Tue lun thì suy nghĩ thêm ^^ ;;;-------------------------------------------------------------------- (defun Length1(e) (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e))) ;;;-------------------------------------------------------------------- (defun C:TLC(/ L edd ss1 e) (prompt "Chon duong cong mun tinh kich thuoc") (while (setq ss1 (ssget "+.:E:S" (list (cons 0 "ARC,CIRCLE,ELLIPSE,SPLINE")))) (progn (setq L 0.0) (while (setq e (ssname ss1 0)) (setq L (+ L (length1 e))) (ssdel e ss1)) (setq edd (entget (car (entsel "\nchon text ghi ket qua:")))) (entmod (subst (cons 1 (rtos L 2 2)) (assoc 1 edd) edd)) ) ) (princ "\n") (princ "xong") (princ) ) 3 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
ketxu 3000 Báo cáo bài đăng Đã đăng Tháng 11 5, 2014 Like ủng hộ nhoclangbat đã. P/s : Yêu cầu của bạn trangnhung khác với của nhoclangbat viết 1 chút, k phải tính toàn bộ length mà tính chiều dài 2 điểm trên đối tượng đó. Mấy hôm trước vừa có người hỏi trong topic Hỏi về thuật toán hay sao ý 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
nhoclangbat 392 Báo cáo bài đăng Đã đăng Tháng 11 5, 2014 - ? nếu chỉ tính chiều dài 2 điểm pick thì nhoc thấy lsp anh Tue đâu quan tâm nó dạng thẳng hay dạng cong nhỉ ^^ - 1 chỗ nữa thì lsp TL3 của anh Tue hình như thiếu hay sao ấy nhoc thấy nó ngộ ngộ ở dòng này ^^ (setq te (entget(car("\n Chon Text de gan ket qua :"))) - sao ko có entsel sau car nhỉ, nhoc chạy thử nguyên bản báo lỗi, nên thêm entsel vào thì ok 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
ketxu 3000 Báo cáo bài đăng Đã đăng Tháng 11 5, 2014 Chắc diễn đàn đang bị lỗi view :) Đến giờ nghỉ rồi, quick code cho nhoc phần 2 point length này, nhóc hoàn thành yêu cầu cho cứng tay. :) (defun _d2p(e p1 p2) ;Getdist along curve by : Ename P1 P2 (abs (apply '- (mapcar '(lambda(x)(vlax-curve-getDistAtPoint e (trans (vlax-curve-getclosestpointto e x) 1 0))) (list p1 p2)))) ) 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
Doan Van Ha 3210 Báo cáo bài đăng Đã đăng Tháng 11 5, 2014 - ? nếu chỉ tính chiều dài 2 điểm pick thì nhoc thấy lsp anh Tue đâu quan tâm nó dạng thẳng hay dạng cong nhỉ ^^ - 1 chỗ nữa thì lsp TL3 của anh Tue hình như thiếu hay sao ấy nhoc thấy nó ngộ ngộ ở dòng này ^^ - sao ko có entsel sau car nhỉ, nhoc chạy thử nguyên bản báo lỗi, nên thêm entsel vào thì ok 1). Chắc Tue_NV sơ ý viết thiếu, như hôm qua DVH cũng sơ ý và có Nhoc cứu đó. 2). Chủ top muốn lấy khoảng cách giữa 2 điểm thuộc đường cong Nhoc à. 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
nhoclangbat 392 Báo cáo bài đăng Đã đăng Tháng 11 5, 2014 - nhoc vẫn chưa hiểu í bạn đó lắm sao phải chọn rùi pick 2 điểm nữa nhỉ đê test thử hàm anh Ket xem thế nào ^^ 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
trangnhung 3 Báo cáo bài đăng Đã đăng Tháng 11 5, 2014 Cảm ơn các bác. e đang làm vê ks e cân do kc giữa điểm. trên tuyên mà tuyến thì dạng spl. nen e muốn đo kc giữa 2 điểm A, B trên tuyen. 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
trangnhung 3 Báo cáo bài đăng Đã đăng Tháng 11 5, 2014 Tiện đây e muôn hỏi 1 vấn đề: e có 1 đường gấp khúc ABCDE, công việc của e là đo kc từng đoạn thẳng AB, BC,..và các góc giữa các đoạn thẳng. Liệu có lisp nào có thể thống kê luôn chiều dài các đoạn thẳng và góc các đoạn thẳng không ạ. Mong các bác giúp 1 tay. e chân thành cảm ơn ! http://www.cadviet.com/upfiles/3/83858_vidu.dwg 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
nhoclangbat 392 Báo cáo bài đăng Đã đăng Tháng 11 5, 2014 - ah vậy ý bạn đó là lấy khoảng cách 2 điểm bất kỳ thuộc đường đã chọn ^^, theo gợi ý anh Ket nhoc viết lại thế này xem bạn đó vừa ý chưa hì :) ;======================= (defun _d2p(e p1 p2) ;Getdist along curve by : Ename P1 P2 (abs (apply '- (mapcar '(lambda(x)(vlax-curve-getDistAtPoint e (trans (vlax-curve-getclosestpointto e x) 1 0))) (list p1 p2)))) ) ;==================================== (defun C:TL3(/ ss L te p1 p2 textmau P enty old) (setq old (getvar 'osmode)) (setvar 'osmode 545) (prompt "chon doi tuong") (while (and (setq ss (ssget "+.:E:S" (list (cons 0 "*LINE,ARC,CIRCLE,ELLIPSE,SPLINE")))) (setq p1 (getpoint "\n Chon diem thu nhat :")) (setq p2 (getpoint p1 "\n Chon diem thu hai :")) ) (setq enty (ssname ss 0)) (setq L (_d2p enty p1 p2)) (setq p (getpoint "\nPick diem chen hoac enter bo qua de chon Text :")) (cond ((/= p nil) (if (not textmau) (setq textmau (car(entsel "\nChon Text mau:")))) (entmake (list (cons 0 "TEXT") (cons 1 (rtos L 2 2)) (assoc 40 (entget textmau)) (cons 10 p) (cons 11 p) (assoc 7 (entget textmau)) )) ) ((= p nil) (setq te (entget (car (entsel "\n Chon Text de gan ket qua :"))) te (subst (cons 1 (rtos L 2 2)) (assoc 1 te) te)) (entmod te) ) ) (princ "\n") (prompt "chon doi tuong") ) (setvar 'osmode old) (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
trangnhung 3 Báo cáo bài đăng Đã đăng Tháng 11 5, 2014 Cảm ơn bác nha. Chúc bác vui vẻ và khỏe mạ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