Jump to content
InfoFile
Tác giả: thanhduan2407
Bài viết gốc: 221511
Tên lệnh: xt
[nhờ chỉnh sửa] lisp xóa text trong 1 miền kín


Mình tặng bạn lisp có tính năng xóa text trong vùng kín chỉ cần 1 pick Point. Hy vọng bạn hài lòng

(defun C:xt (/ p ss Tong ptLst cur L)
(setvar "hpgaptol" 50.0)
(command "_.undo" "_begin")
(setq p (getpoint "\nPick vao vung can tinh: "))
(command ".boundary" "A" "B" "E" "I" "Y" "" p "")
(setq ss ...
>>


Mình tặng bạn lisp có tính năng xóa text trong vùng kín chỉ cần 1 pick Point. Hy vọng bạn hài lòng

(defun C:xt (/ p ss Tong ptLst cur L)
(setvar "hpgaptol" 50.0)
(command "_.undo" "_begin")
(setq p (getpoint "\nPick vao vung can tinh: "))
(command ".boundary" "A" "B" "E" "I" "Y" "" p "")
(setq ss (entlast))
(setq ptLst (GetPtLst (setq cur (vlax-ename->vla-object ss))))
(setq ssInside (ssget "_WP" ptLst '((-4 . "<OR") (0 . "TEXT") (-4 . "OR>"))))
(foreach itm (vl-remove-if 'listp (mapcar 'cadr (ssnamex ssInside)))
(entdel itm)
)
(command "_.undo" "_end")
(princ)
)

(defun getbound(p /)
(setq ent (entlast))
(command ".boundary" "A" "B" "E" "I" "Y" "" p "")
(setq ent1 (entlast))
(cond
((eq ent ent1) nil)
(t ent1)
)
)
(defun GetPtLst (obj / startparam endparam anginc delta div inc pt ptlst)
(defun ZClosed (lst)
(if (and (vlax-curve-isClosed obj)
(not (equal (car lst) (last lst) 1e-6)))
(append lst (list (car lst)))
lst)
)
(or (eq (type obj) 'VLA-OBJECT)
(setq obj (vlax-ename->vla-object obj)))
(setq typ (vlax-get obj 'ObjectName))
(if (or (eq typ "AcDbCircle") (eq typ "AcDbEllipse"))
(progn
(setq param 0)
(while (< param (* pi 2))
(setq pt (vlax-curve-getPointAtParam obj param)
ptlst (cons pt ptlst)
param (+ (/ (* pi 2) 72) param)))
(reverse ptlst))
(progn
(setq param (vlax-curve-getStartParam obj)
endparam (vlax-curve-getEndParam obj)
anginc (* pi (/ 7.5 180.0)))
(setq tparam param)
(while (<= param endparam)
(setq pt (vlax-curve-getPointAtParam obj param))
(if (not (equal pt (car ptlst) 1e-12))
(setq ptlst (cons pt ptlst)))
(if (and (/= param endparam)
(setq blg (abs (vlax-invoke obj 'GetBulge param)))
(/= 0 blg))
(progn
(setq delta (* 4 (atan blg))
inc (/ 1.0 (1+ (fix (/ delta anginc))))
arcparam (+ param inc))
(while (< arcparam (1+ param))
(setq pt (vlax-curve-getPointAtParam obj arcparam)
ptlst (cons pt ptlst)
arcparam (+ inc arcparam)))))
(setq param (1+ param)))
(if (and (apply 'and ptlst)
(> (length ptlst) 1))
(ZClosed (reverse ptlst)))))
)


<<

Filename: 221511_xt.lsp
Tác giả: huunhantvxdts
Bài viết gốc: 221506
Tên lệnh: xtpl
lisp xóa text trong 1 miền kín
Đây là lisp tôi có chỉnh sửa lại đôi chút nhưng có vấn đề là chỉ xóa được các text trong miền kín nhìn thấy trên màn hình còn những text khác cũng nằm trong miên kín nhưng không thấy trên màn hình thì không xóa được mong mọi người giúp đỡ
đây là lisp

(defun c:xtpl ()
(setq dt (ssget '((0 . "LWPOLYLINE"))))
(setq n (sslength dt) i 0)
(while (< i n)
(setq dt1 (ssname...
>>
Đây là lisp tôi có chỉnh sửa lại đôi chút nhưng có vấn đề là chỉ xóa được các text trong miền kín nhìn thấy trên màn hình còn những text khác cũng nằm trong miên kín nhưng không thấy trên màn hình thì không xóa được mong mọi người giúp đỡ
đây là lisp

(defun c:xtpl ()
(setq dt (ssget '((0 . "LWPOLYLINE"))))
(setq n (sslength dt) i 0)
(while (< i n)
(setq dt1 (ssname dt i))
(setq SS (ssget "wp" (acet-geom-vertex-list dt1) (list (cons 0 "text"))))
(command ".erase" ss "")
(setq i (+ i 1))
)
(setq sdt (sslength ss))
)

<<

Filename: 221506_xtpl.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 221470
Tên lệnh: nspt
Xin lisp xuất cao độ dạng text khi pick trên bình đồ

Hề hề hề
Không biết cái này có phải cái bạn cần hay không ??? Mình viết theo suy đoán của mình, nếu chỗ nào chưa đúng ý bạn thì hãy post lên nhé mình sẽ chỉnh sửa nếu được.

Bạn lưu ý khi sử dụng lisp này như sau:
1/- Lisp chỉ chạy đúng khi các đường đồng mức chỉ cắt tuyến tại một điểm. (tức là tuyến sẽ chỉ có một chiều đi lên cao dần hay đi xuống...
>>

Hề hề hề
Không biết cái này có phải cái bạn cần hay không ??? Mình viết theo suy đoán của mình, nếu chỗ nào chưa đúng ý bạn thì hãy post lên nhé mình sẽ chỉnh sửa nếu được.

Bạn lưu ý khi sử dụng lisp này như sau:
1/- Lisp chỉ chạy đúng khi các đường đồng mức chỉ cắt tuyến tại một điểm. (tức là tuyến sẽ chỉ có một chiều đi lên cao dần hay đi xuống thấp dần).
2/- Chiếu của pline tuyến phải được vẽ đúng với tên gọi của điểm đầu và cuối tuyến (tức là điểm dầu tuyến phải là điểm bắt đầy vẽ pline tuyến)
3/- Để giảm thiểu việc nhầm lẫn các điểm cặt của pline tuyến và đường đồng mức, (do trên bản vẽ có nhiều loại đường pline khác mà không phải là đường đồng mức) mình đã sử dụng bộ lọc khi chọn đường đồng mức theo layer và màu của các đường đồng mức. Vì thế nếu bản vẽ bạn sử dụng không bố trí các đường đồng mức đúng trên các layer "-1" và "-2' cũng như không có màu là 8 thì lisp sẽ không lấy được các giao điểm của tuyến với đường đồng mức. Vì thế bạn cần sửa lại đôi chút trong bộ lọc này cho phù hợp. Code của bộ lọc là dòng này:
(list (cons 0 "*line") (cons 8 "-1,-2") (cons 62 8)) trong đó "-1,-2" là tên các layer chứa dường đồng mức trên bản vẽ bạn gửi và số 8 là tên màu của đường đồng mức trên bản vẽ đó.
Bạn dựa vào đó để điều chỉnh bộ lọc này cho phù hợp với bản vẽ bạn sử dụng.

Chúc bạn vui.
<<

Filename: 221470_nspt.lsp
Tác giả: hochoaivandot
Bài viết gốc: 221749
Tên lệnh: ttt
LISP LẤY TEXT TỪ DIM

(defun dxf (code e) (cdr (assoc code (entget e))))
(defun c:ttt (/ ss e dis dmax)
(setq ss (ssget '((0 . "DIMENSION"))) dmax 0)
(repeat (setq i (sslength ss))
(setq e (ssname ss (setq i (1- i))))
(setq dis (distance (dxf 13 e) (dxf 14 e)))
(if (> dis dmax) (setq dmax dis))
)
(entmake (list
(cons 0 "TEXT")
(cons 10 (getpoint "\nDiem ghi gia tri Dim max"))
(cons 1 (rtos...
>>

(defun dxf (code e) (cdr (assoc code (entget e))))
(defun c:ttt (/ ss e dis dmax)
(setq ss (ssget '((0 . "DIMENSION"))) dmax 0)
(repeat (setq i (sslength ss))
(setq e (ssname ss (setq i (1- i))))
(setq dis (distance (dxf 13 e) (dxf 14 e)))
(if (> dis dmax) (setq dmax dis))
)
(entmake (list
(cons 0 "TEXT")
(cons 10 (getpoint "\nDiem ghi gia tri Dim max"))
(cons 1 (rtos dmax))
(cons 40 1000)
)
)
(princ)
)

<<

Filename: 221749_ttt.lsp
Tác giả: quansla
Bài viết gốc: 221704
Tên lệnh: thu
lisp chuyển dim sang text



(defun c:thu(/ MaxDimDim i ss)
(defun themtext(str p layer )
(entmake
(list
'(0 . "TEXT")
'(100 . "AcDbEntity")
'(100 . "AcDbText")
(cons 1 str);string
(cons 7 (getvar "textstyle"));style
(cons 8 layer);layer
(cons 62 256);color
(cons 10 p);insertion point
(cons 11 p);alignment point
(cons 40 250);text height -chieu cao chu
(cons 41 1.0);text width
>>


(defun c:thu(/ MaxDimDim i ss)
(defun themtext(str p layer )
(entmake
(list
'(0 . "TEXT")
'(100 . "AcDbEntity")
'(100 . "AcDbText")
(cons 1 str);string
(cons 7 (getvar "textstyle"));style
(cons 8 layer);layer
(cons 62 256);color
(cons 10 p);insertion point
(cons 11 p);alignment point
(cons 40 250);text height -chieu cao chu
(cons 41 1.0);text width
(cons 50 0.0);1.5708 - vertical, 0.0 - horizontal
(cons 51 0.0);oblique angle
'(71 . 0);alignment
'(72 . 0);alignment
'(73 . 0);alignment
)
)
)
(setq MaxDimDim 0
ss (ssget "X" '((0 . "DIMENSION")))
i 0)
(while (< i (sslength ss))
(if (> (cdr(assoc 42 (entget (ssname ss i)))) MaxDim)
(setq MaxDim (cdr(assoc 42 (entget (ssname ss i))))))
(setq i (1+ i))
)
MaxDim
(themtext (rtos MaxDim) (getpoint "chon diem chen ket qua") (getvar "clayer"))
)

Tên lệnh là THU
Cách dùng gõ lệnh THU, enter chọn điểm chèn kết quả, text sử dụng là TextStyle hiện hành, cỡ chữ là 250, thay đổi trong code được theo ý muốn
<<

Filename: 221704_thu.lsp
Tác giả: lenhatanh
Bài viết gốc: 221764
Tên lệnh: dientich-01
lisp xuất Kết quả đo diện tích sang Excel
Mình viết một lisp đo diện tích MCN, xuất kết quả ra màn hình CAD, xuất Kq ra Excel
nhưng khi xuất kq ra Excel thì lần thứ hai lại lặp lại từ đầu (mở lại Excel và ghi vào Book mới)
Mình muốn khi xuất kq ra Excel thì lần thứ hai, ba, bốn... kết quả vẫn ghi tiếp tục vào Book1 đầu tiên.
Nhờ mọi người chỉnh sửa lisp giúp nhé.


;---------Tinh Dien Tich Dao, Dap (Cho M.cat) -...
>>
Mình viết một lisp đo diện tích MCN, xuất kết quả ra màn hình CAD, xuất Kq ra Excel
nhưng khi xuất kq ra Excel thì lần thứ hai lại lặp lại từ đầu (mở lại Excel và ghi vào Book mới)
Mình muốn khi xuất kq ra Excel thì lần thứ hai, ba, bốn... kết quả vẫn ghi tiếp tục vào Book1 đầu tiên.
Nhờ mọi người chỉnh sửa lisp giúp nhé.


;---------Tinh Dien Tich Dao, Dap (Cho M.cat) - dientich-01
;**********************************************************
(defun Get_tle (/ g:tle)
(set_tile "error" "")
(setq g:tle (get_tile "tle"))
(setq tle (atof g:tle))
)
;------------------------------------------
(defun Get_ten (/ g:ten)
(set_tile "error" "")
(setq g:ten (get_tile "ten"))
(setq ten g:ten)
)
;------------------------------------------
(defun Get_cdon (/ g:cdon)
(set_tile "error" "")
(setq g:cdon (get_tile "cdon"))
(setq cdon (atof g:cdon))
)
;------------------------------------------
;------------------------------------------
(defun Get_t1()
(set_tile "error" "")
(setq g:t1 (get_tile "t1"))
(setq t1 g:t1)
(cond
((= g:t1 "1")
(mode_tile "e1" 0)
(mode_tile "s1" 0)
(mode_tile "p1" 0)
)
(T
(mode_tile "e1" 1)
(mode_tile "s1" 1)
(mode_tile "p1" 1)
(set_tile "e1" (setq g:e1 ""))
(set_tile "s1" (STRCAT "= " (setq g:s1 (rtos 0.0 2 3)) " m2"))
)
)
)
;------------------------------------------
(defun Get_t2()
(set_tile "error" "")
(setq g:t2 (get_tile "t2"))
(setq t2 g:t2)
(cond
((= g:t2 "1")
(mode_tile "e2" 0)
(mode_tile "s2" 0)
(mode_tile "p2" 0)
)
(T
(mode_tile "e2" 1)
(mode_tile "s2" 1)
(mode_tile "p2" 1)
(set_tile "e2" (setq g:e2 ""))
(set_tile "s2" (STRCAT "= " (setq g:s2 (rtos 0.0 2 3)) " m2"))
)
)
)
;------------------------------------------
(defun Get_t3()
(set_tile "error" "")
(setq g:t3 (get_tile "t3"))
(setq t3 g:t3)
(cond
((= g:t3 "1")
(mode_tile "e3" 0)
(mode_tile "s3" 0)
(mode_tile "p3" 0)
)
(T
(mode_tile "e3" 1)
(mode_tile "s3" 1)
(mode_tile "p3" 1)
(set_tile "e3" (setq g:e3 ""))
(set_tile "s3" (STRCAT "= " (setq g:s3 (rtos 0.0 2 3)) " m2"))
)
)
)
;------------------------------------------
(defun Get_t4()
(set_tile "error" "")
(setq g:t4 (get_tile "t4"))
(setq t4 g:t4)
(cond
((= g:t4 "1")
(mode_tile "e4" 0)
(mode_tile "s4" 0)
(mode_tile "p4" 0)
)
(T
(mode_tile "e4" 1)
(mode_tile "s4" 1)
(mode_tile "p4" 1)
(set_tile "e4" (setq g:e4 ""))
(set_tile "s4" (STRCAT "= " (setq g:s4 (rtos 0.0 2 3)) " m2"))
)
)
)
;------------------------------------------
(defun Get_t5()
(set_tile "error" "")
(setq g:t5 (get_tile "t5"))
(setq t5 g:t5)
(cond
((= g:t5 "1")
(mode_tile "e5" 0)
(mode_tile "s5" 0)
(mode_tile "p5" 0)
)
(T
(mode_tile "e5" 1)
(mode_tile "s5" 1)
(mode_tile "p5" 1)
(set_tile "e5" (setq g:e5 ""))
(set_tile "s5" (STRCAT "= " (setq g:s5 (rtos 0.0 2 3)) " m2"))
)
)
)
;------------------------------------------
(defun Get_t6()
(set_tile "error" "")
(setq g:t6 (get_tile "t6"))
(setq t6 g:t6)
(cond
((= g:t6 "1")
(mode_tile "e6" 0)
(mode_tile "s1" 0)
(mode_tile "p6" 0)
)
(T
(mode_tile "e6" 1)
(mode_tile "s6" 1)
(mode_tile "p6" 1)
(set_tile "e6" (setq g:e6 ""))
(set_tile "s6" (STRCAT "= " (setq g:s6 (rtos 0.0 2 3)) " m2"))
)
)
)
;------------------------------------------
(defun Get_t7()
(set_tile "error" "")
(setq g:t7 (get_tile "t7"))
(setq t7 g:t7)
(cond
((= g:t7 "1")
(mode_tile "e7" 0)
(mode_tile "s7" 0)
(mode_tile "p7" 0)
)
(T
(mode_tile "e7" 1)
(mode_tile "s7" 1)
(mode_tile "p7" 1)
(set_tile "e7" (setq g:e7 ""))
(set_tile "s7" (STRCAT "= " (setq g:s7 (rtos 0.0 2 3)) " m2"))
)
)
)
;------------------------------------------
(defun Get_t8()
(set_tile "error" "")
(setq g:t8 (get_tile "t8"))
(setq t8 g:t8)
(cond
((= g:t8 "1")
(mode_tile "e8" 0)
(mode_tile "s8" 0)
(mode_tile "p8" 0)
)
(T
(mode_tile "e8" 1)
(mode_tile "s8" 1)
(mode_tile "p8" 1)
(set_tile "e8" (setq g:e8 ""))
(set_tile "s8" (STRCAT "= " (setq g:s8 (rtos 0.0 2 3)) " m2"))
)
)
)
;------------------------------------------
(defun Get_t9()
(set_tile "error" "")
(setq g:t9 (get_tile "t9"))
(setq t9 g:t9)
(cond
((= g:t9 "1")
(mode_tile "e9" 0)
(mode_tile "s9" 0)
(mode_tile "p9" 0)
)
(T
(mode_tile "e9" 1)
(mode_tile "s9" 1)
(mode_tile "p9" 1)
(set_tile "e9" (setq g:e9 ""))
(set_tile "s9" (STRCAT "= " (setq g:s9 (rtos 0.0 2 3)) " m2"))
)
)
)
;------------------------------------------
(defun Get_t10()
(set_tile "error" "")
(setq g:t10 (get_tile "t10"))
(setq t10 g:t10)
(cond
((= g:t10 "1")
(mode_tile "e10" 0)
(mode_tile "s10" 0)
(mode_tile "p10" 0)
)
(T
(mode_tile "e10" 1)
(mode_tile "s10" 1)
(mode_tile "p10" 1)
(set_tile "e10" (setq g:e10 ""))
(set_tile "s10" (STRCAT "= " (setq g:s10 (rtos 0.0 2 3)) " m2"))
)
)
)
;------------------------------------------
;------------------------------------------
(defun Get_e1()
(set_tile "error" "")
(setq g:e1 (get_tile "e1"))
(setq e1 g:e1)
)
;------------------------------------------
(defun Get_e2()
(set_tile "error" "")
(setq g:e2 (get_tile "e2"))
(setq e2 g:e2)
)
;------------------------------------------
(defun Get_e3()
(set_tile "error" "")
(setq g:e3 (get_tile "e3"))
(setq e3 g:e3)
)
;------------------------------------------
(defun Get_e4()
(set_tile "error" "")
(setq g:e4 (get_tile "e4"))
(setq e4 g:e4)
)
;------------------------------------------
(defun Get_e5()
(set_tile "error" "")
(setq g:e5 (get_tile "e5"))
(setq e5 g:e5)
)
;------------------------------------------
(defun Get_e6()
(set_tile "error" "")
(setq g:e6 (get_tile "e6"))
(setq e6 g:e6)
)
;------------------------------------------
(defun Get_e7()
(set_tile "error" "")
(setq g:e7 (get_tile "e7"))
(setq e7 g:e7)
)
;------------------------------------------
(defun Get_e8()
(set_tile "error" "")
(setq g:e8 (get_tile "e8"))
(setq e8 g:e8)
)
;------------------------------------------
(defun Get_e9()
(set_tile "error" "")
(setq g:e9 (get_tile "e9"))
(setq e9 g:e9)
)
;------------------------------------------
(defun Get_e10()
(set_tile "error" "")
(setq g:e10 (get_tile "e10"))
(setq e10 g:e10)
)
;------------------------------------------
;------------------------------------------
(defun Get_p1()
(set_tile "error" "")
(dientich)
; (alert (strcat "\n tri so g:btct = " g:btct))
)
;------------------------------------------
(defun Get_p2()
(set_tile "error" "")
(dientich)
)
;------------------------------------------
(defun Get_p3()
(set_tile "error" "")
(dientich)
)
;------------------------------------------
(defun Get_p4()
(set_tile "error" "")
(dientich)
)
;------------------------------------------
(defun Get_p5()
(set_tile "error" "")
(dientich)
)
;------------------------------------------
(defun Get_p6()
(set_tile "error" "")
(dientich)
)
;------------------------------------------
(defun Get_p7()
(set_tile "error" "")
(dientich)
)
;------------------------------------------
(defun Get_p8()
(set_tile "error" "")
(dientich)
)
;------------------------------------------
(defun Get_p9()
(set_tile "error" "")
(dientich)
)
;------------------------------------------
(defun Get_p10()
(set_tile "error" "")
(dientich)
)
;------------------------------------------
;;;mode_tile - 0 = an (Tat), 1 = Hien (mo)
;------------------------------------------
(defun Setloc()
(if (not tle) (setq tle 50.0))
(set_tile "tle" (setq g:tle (rtos tle 2 0)))

(if (not ten) (setq ten "A-A"))
(set_tile "ten" (setq g:ten ten))

(if (not cdon) (setq cdon 0.0))
(set_tile "cdon" (setq g:cdon (rtos cdon 2 2)))

(if (not e1) (setq e1 ""))
(set_tile "e1" (setq g:e1 e1))

(if (not e2) (setq e2 ""))
(set_tile "e2" (setq g:e2 e2))

(if (not e3) (setq e3 ""))
(set_tile "e3" (setq g:e3 e3))

(if (not e4) (setq e4 ""))
(set_tile "e4" (setq g:e4 e4))

(if (not e5) (setq e5 ""))
(set_tile "e5" (setq g:e5 e5))

(if (not e6) (setq e6 ""))
(set_tile "e6" (setq g:e6 e6))

(if (not e7) (setq e7 ""))
(set_tile "e7" (setq g:e7 e7))

(if (not e8) (setq e8 ""))
(set_tile "e8" (setq g:e8 e8))

(if (not e9) (setq e9 ""))
(set_tile "e9" (setq g:e9 e9))

(if (not e10) (setq e10 ""))
(set_tile "e10" (setq g:e10 e10))

(if (not dt1) (setq dt1 0.0))
(set_tile "s1" (STRCAT "= " (setq g:s1 (rtos dt1 2 3)) " m2"))

(if (not dt2) (setq dt2 0.0))
(set_tile "s2" (STRCAT "= " (setq g:s2 (rtos dt2 2 3)) " m2"))

(if (not dt3) (setq dt3 0.0))
(set_tile "s3" (STRCAT "= " (setq g:s3 (rtos dt3 2 3)) " m2"))

(if (not dt4) (setq dt4 0.0))
(set_tile "s4" (STRCAT "= " (setq g:s4 (rtos dt4 2 3)) " m2"))

(if (not dt5) (setq dt5 0.0))
(set_tile "s5" (STRCAT "= " (setq g:s5 (rtos dt5 2 3)) " m2"))

(if (not dt6) (setq dt6 0.0))
(set_tile "s6" (STRCAT "= " (setq g:s6 (rtos dt6 2 3)) " m2"))

(if (not dt7) (setq dt7 0.0))
(set_tile "s7" (STRCAT "= " (setq g:s7 (rtos dt7 2 3)) " m2"))

(if (not dt8) (setq dt8 0.0))
(set_tile "s8" (STRCAT "= " (setq g:s8 (rtos dt8 2 3)) " m2"))

(if (not dt9) (setq dt9 0.0))
(set_tile "s9" (STRCAT "= " (setq g:s9 (rtos dt9 2 3)) " m2"))

(if (not dt10) (setq dt10 0.0))
(set_tile "s10" (STRCAT "= " (setq g:s10 (rtos dt10 2 3)) " m2"))
(if (not g:t1) (setq g:t1 "1"))
(set_tile "t1" g:t1)
(cond
((= g:t1 "1")
(mode_tile "e1" 0)
(mode_tile "s1" 0)
(mode_tile "p1" 0)
)
(T
(mode_tile "e1" 1)
(mode_tile "s1" 1)
(mode_tile "p1" 1)
)
)
(if (not g:t2) (setq g:t2 "0"))
(set_tile "t2" g:t2)
(cond
((= g:t2 "1")
(mode_tile "e2" 0)
(mode_tile "s2" 0)
(mode_tile "p2" 0)
)
(T
(mode_tile "e2" 1)
(mode_tile "s2" 1)
(mode_tile "p2" 1)
)
)
(if (not g:t3) (setq g:t3 "0"))
(set_tile "t3" g:t3)
(cond
((= g:t3 "1")
(mode_tile "e3" 0)
(mode_tile "s3" 0)
(mode_tile "p3" 0)
)
(T
(mode_tile "e3" 1)
(mode_tile "s3" 1)
(mode_tile "p3" 1)
)
)
(if (not g:t4) (setq g:t4 "0"))
(set_tile "t4" g:t4)
(cond
((= g:t4 "1")
(mode_tile "e4" 0)
(mode_tile "s4" 0)
(mode_tile "p4" 0)
)
(T
(mode_tile "e4" 1)
(mode_tile "s4" 1)
(mode_tile "p4" 1)
)
)
(if (not g:t5) (setq g:t5 "0"))
(set_tile "t5" g:t5)
(cond
((= g:t5 "1")
(mode_tile "e5" 0)
(mode_tile "s5" 0)
(mode_tile "p5" 0)
)
(T
(mode_tile "e5" 1)
(mode_tile "s5" 1)
(mode_tile "p5" 1)
)
)
(if (not g:t6) (setq g:t6 "0"))
(set_tile "t6" g:t6)
(cond
((= g:t6 "1")
(mode_tile "e6" 0)
(mode_tile "s1" 0)
(mode_tile "p6" 0)
)
(T
(mode_tile "e6" 1)
(mode_tile "s6" 1)
(mode_tile "p6" 1)
)
)
(if (not g:t7) (setq g:t7 "0"))
(set_tile "t7" g:t7)
(cond
((= g:t7 "1")
(mode_tile "e7" 0)
(mode_tile "s7" 0)
(mode_tile "p7" 0)
)
(T
(mode_tile "e7" 1)
(mode_tile "s7" 1)
(mode_tile "p7" 1)
)
)
(if (not g:t8) (setq g:t8 "0"))
(set_tile "t8" g:t8)
(cond
((= g:t8 "1")
(mode_tile "e8" 0)
(mode_tile "s8" 0)
(mode_tile "p8" 0)
)
(T
(mode_tile "e8" 1)
(mode_tile "s8" 1)
(mode_tile "p8" 1)
)
)
(if (not g:t9) (setq g:t9 "0"))
(set_tile "t9" g:t9)
(cond
((= g:t9 "1")
(mode_tile "e9" 0)
(mode_tile "s9" 0)
(mode_tile "p9" 0)
)
(T
(mode_tile "e9" 1)
(mode_tile "s9" 1)
(mode_tile "p9" 1)
)
)
(if (not g:t10) (setq g:t10 "0"))
(set_tile "t10" g:t10)
(cond
((= g:t10 "1")
(mode_tile "e10" 0)
(mode_tile "s10" 0)
(mode_tile "p10" 0)
)
(T
(mode_tile "e10" 1)
(mode_tile "s10" 1)
(mode_tile "p10" 1)
)
)
)
;---------------
(defun Restore()
(command "LUPREC" 2 "color" "bylayer" "osmode" 97)
(setq *ERROR* Olderr)
(setvar "BLIPMODE" Oldblp) (setvar "CMDECHO" Oldech)
(setvar "PICKBOX" 4) (setvar "DIMZIN" 8)
)
;----------------------------------------------------------------------------
(defun C:dientich-01 (/ Oldblp Oldech Olderr Dial nhim What_next ten cdon sdo
t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10
p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 dt1 dt2 dt3 dt4 dt5 dt6 dt7 dt8 dt9 dt10
g:e1 g:e2 g:e3 g:e4 g:e5 g:e6 g:e7 g:e8 g:e9 g:e10
g:s1 g:s2 g:s3 g:s4 g:s5 g:s6 g:s7 g:s8 g:s9 g:s10)
(setq Oldblp (getvar "BLIPMODE") Oldech (getvar "CMDECHO") Olderr *ERROR*)
(setvar "BLIPMODE" 0) (setvar "DIMZIN" 0) (setvar "PICKBOX" 0) (setvar "CMDECHO" 0)
(COMMAND "LUPREC" 4 "osnap" "None" "UCS" "W")
;----------------------------------------------
(defun *ERROR* (Msg)
(princ "\nError: ") (princ Msg)
(unload_dialog Dial)
(Restore)
(princ)
)
;---------------------------------------------
(setq Dial (load_dialog "Dien_tich_01.DCL"))
(setq What_next 2)
(while (> What_next 1)
(if (not (new_dialog "Dientich01" Dial))
(progn (Restore) (exit))
)
(Setloc)
(action_tile "tle" "(Get_tle)")
(action_tile "ten" "(Get_ten)")
(action_tile "cdon" "(Get_cdon)")

(action_tile "t1" "(Get_t1)")
(action_tile "t2" "(Get_t2)")
(action_tile "t3" "(Get_t3)")
(action_tile "t4" "(Get_t4)")
(action_tile "t5" "(Get_t5)")
(action_tile "t6" "(Get_t6)")
(action_tile "t7" "(Get_t7)")
(action_tile "t8" "(Get_t8)")
(action_tile "t9" "(Get_t9)")
(action_tile "t10" "(Get_t10)")

(action_tile "e1" "(Get_e1)")
(action_tile "e2" "(Get_e2)")
(action_tile "e3" "(Get_e3)")
(action_tile "e4" "(Get_e4)")
(action_tile "e5" "(Get_e5)")
(action_tile "e6" "(Get_e6)")
(action_tile "e7" "(Get_e7)")
(action_tile "e8" "(Get_e8)")
(action_tile "e9" "(Get_e9)")
(action_tile "e10" "(Get_e10)")

(action_tile "p1" "(done_dialog 2)")
(action_tile "p2" "(done_dialog 3)")
(action_tile "p3" "(done_dialog 4)")
(action_tile "p4" "(done_dialog 5)")
(action_tile "p5" "(done_dialog 6)")
(action_tile "p6" "(done_dialog 7)")
(action_tile "p7" "(done_dialog 8)")
(action_tile "p8" "(done_dialog 9)")
(action_tile "p9" "(done_dialog 10)")
(action_tile "p10" "(done_dialog 11)")
(action_tile "excel" "(done_dialog 12)")
(action_tile "Accept" "(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
(setq What_next (start_dialog))
(cond
((= What_next 1) (Go))
((= What_next 2) (Get_p1))
((= What_next 3) (Get_p2))
((= What_next 4) (Get_p3))
((= What_next 5) (Get_p4))
((= What_next 6) (Get_p5))
((= What_next 7) (Get_p6))
((= What_next 8) (Get_p7))
((= What_next 9) (Get_p8))
((= What_next 10) (Get_p9))
((= What_next 11) (Get_p10))
((= What_next 12) (if (vlax-get-or-create-object "Excel.Application")
(WriteToExcel)
))
)
)
(unload_dialog Dial)
(Restore)
(princ)
)
;;;---------------------------------------------------------------
(defun dientich (/ bli cmd E Eo En do diem s name Ename oldcolor)
(setq do nil s nil Ename (ssadd))
(setq E "P") (initget 128 "P S")
(setq Eo (getkword "\nSelect Entity or Pick Point (S/<P>) : "))
(if Eo (setq E Eo))
(cond
((= E "P")
(command "color" 6 "linetype" "S" "hidden" "" "osmode" 0)
(while
(setq diem (getpoint "\n Pick point...(<Retern>to end) :"))
(command "boundary" diem "" "area" "E" "L")
(setq s (getvar "area"))
(setq name (entlast))
(setq do (cons s do))
(setq Ename (ssadd name Ename))
)
(setq Sdo (eval (cons + do)))
(command "erase" Ename "" "color" "Bylayer" "linetype" "S" "continuous" "")u
)
(T
(setq En (ssget))
(command "area" "E" En)
(setq Sdo (getvar "area"))
)
)
(setq tile (/ tle 100))
(cond
((= What_next 2) (setq dt1 (* Sdo tile tile)))
((= What_next 3) (setq dt2 (* Sdo tile tile)))
((= What_next 4) (setq dt3 (* Sdo tile tile)))
((= What_next 5) (setq dt4 (* Sdo tile tile)))
((= What_next 6) (setq dt5 (* Sdo tile tile)))
((= What_next 7) (setq dt6 (* Sdo tile tile)))
((= What_next 8) (setq dt7 (* Sdo tile tile)))
((= What_next 9) (setq dt8 (* Sdo tile tile)))
((= What_next 10) (setq dt9 (* Sdo tile tile)))
((= What_next 11) (setq dt10 (* Sdo tile tile)))
)
)
;;;-------------------------------------------
(defun Go ()
(SETQ P (GETPOINT "\nStart point...: "))
(setq oblist (ssadd))
(if (> dt1 0)
(progn
(command "text" "J" "R" p "0" (strcat "S " e1 " (m2) ="))
; (setq obl (entlast) oblist (ssadd obl oblist))
(command "text" (polar p 0.0 (getvar "Textsize")) "0" (rtos dt1 2 3))
; (setq obl (entlast) oblist (ssadd obl oblist))
; (command "attdef" "" e1 e1 dt1 (polar p 0.0 (getvar "Textsize")) "")
; (setq obl (entlast) oblist (ssadd obl oblist))
(setq p (polar p (- (/ pi 2)) (* (getvar "Textsize") 2.0)))
)
)
(if (> dt2 0)
(progn
(command "text" "J" "R" p "0" (strcat "S " e2 " (m2) ="))
(command "text" (polar p 0.0 (getvar "Textsize")) "0" (rtos dt2 2 3))
(setq p (polar p (- (/ pi 2)) (* (getvar "Textsize") 2.0)))
)
)
(if (> dt3 0)
(progn
(command "text" "J" "R" p "0" (strcat "S " e3 " (m2) ="))
(command "text" (polar p 0.0 (getvar "Textsize")) "0" (rtos dt3 2 3))
(setq p (polar p (- (/ pi 2)) (* (getvar "Textsize") 2.0)))
)
)
(if (> dt4 0)
(progn
(command "text" "J" "R" p "0" (strcat "S " e4 " (m2) ="))
(command "text" (polar p 0.0 (getvar "Textsize")) "0" (rtos dt4 2 3))
(setq p (polar p (- (/ pi 2)) (* (getvar "Textsize") 2.0)))
)
)
(if (> dt5 0)
(progn
(command "text" "J" "R" p "0" (strcat "S " e5 " (m2) ="))
(command "text" (polar p 0.0 (getvar "Textsize")) "0" (rtos dt5 2 3))
(setq p (polar p (- (/ pi 2)) (* (getvar "Textsize") 2.0)))
)
)
(if (> dt6 0)
(progn
(command "text" "J" "R" p "0" (strcat "S " e6 " (m2) ="))
(command "text" (polar p 0.0 (getvar "Textsize")) "0" (rtos dt6 2 3))
(setq p (polar p (- (/ pi 2)) (* (getvar "Textsize") 2.0)))
)
)
(if (> dt7 0)
(progn
(command "text" "J" "R" p "0" (strcat "S " e7 " (m2) ="))
(command "text" (polar p 0.0 (getvar "Textsize")) "0" (rtos dt7 2 3))
(setq p (polar p (- (/ pi 2)) (* (getvar "Textsize") 2.0)))
)
)
(if (> dt8 0)
(progn
(command "text" "J" "R" p "0" (strcat "S " e8 " (m2) ="))
(command "text" (polar p 0.0 (getvar "Textsize")) "0" (rtos dt8 2 3))
(setq p (polar p (- (/ pi 2)) (* (getvar "Textsize") 2.0)))
)
)
(if (> dt9 0)
(progn
(command "text" "J" "R" p "0" (strcat "S " e9 " (m2) ="))
(command "text" (polar p 0.0 (getvar "Textsize")) "0" (rtos dt9 2 3))
(setq p (polar p (- (/ pi 2)) (* (getvar "Textsize") 2.0)))
)
)
(if (> dt10 0)
(progn
(command "text" "J" "R" p "0" (strcat "S " e10 " (m2) ="))
(command "text" (polar p 0.0 (getvar "Textsize")) "0" (rtos dt10 2 3))
(setq p (polar p (- (/ pi 2)) (* (getvar "Textsize") 2.0)))
)
)
; (command "Block" "Du" "Y" p oblist "")
(COMMAND "LUPREC" 4 "osmode" 33 "linetype" "S" "Continuous" "" "OOPS")
)
;;;-----------------------------------------------------
(defun WriteToExcel (/ col row x xlApp xlCells)
(setq lst_data '())
(setq lst_data (cons ten lst_data) lst_data (cons (rtos cdon 2 2) lst_data))
(if (> dt1 0) (setq lst_data (cons (rtos dt1 2 3) lst_data)))
(if (> dt2 0) (setq lst_data (cons (rtos dt2 2 3) lst_data)))
(if (> dt3 0) (setq lst_data (cons (rtos dt3 2 3) lst_data)))
(if (> dt4 0) (setq lst_data (cons (rtos dt4 2 3) lst_data)))
(if (> dt5 0) (setq lst_data (cons (rtos dt5 2 3) lst_data)))
(if (> dt6 0) (setq lst_data (cons (rtos dt6 2 3) lst_data)))
(if (> dt7 0) (setq lst_data (cons (rtos dt7 2 3) lst_data)))
(if (> dt8 0) (setq lst_data (cons (rtos dt8 2 3) lst_data)))
(if (> dt9 0) (setq lst_data (cons (rtos dt9 2 3) lst_data)))
(if (> dt10 0) (setq lst_data (cons (rtos dt10 2 3) lst_data)))
(setq lst_data (reverse lst_data))
(vl-load-com)
(setq xlApp (vlax-get-or-create-object "Excel.Application")
xlCells (vlax-get-property
(vlax-get-property
(vlax-get-property
(vlax-invoke-method
(vlax-get-property xlApp "Workbooks")
"Add")
"Sheets")
"Item" 1)
"Cells"))

(vlax-put-property xlCells 'Item 1 1 "M.cat")
(vlax-put-property xlCells 'Item 1 2 "C.Don")
(if (> dt1 0) (vlax-put-property xlCells 'Item 1 3 e1))
(if (> dt2 0) (vlax-put-property xlCells 'Item 1 4 e2))
(if (> dt3 0) (vlax-put-property xlCells 'Item 1 5 e3))
(if (> dt4 0) (vlax-put-property xlCells 'Item 1 6 e4))
(if (> dt5 0) (vlax-put-property xlCells 'Item 1 7 e5))
(if (> dt6 0) (vlax-put-property xlCells 'Item 1 8 e6))
(if (> dt7 0) (vlax-put-property xlCells 'Item 1 9 e7))
(if (> dt8 0) (vlax-put-property xlCells 'Item 1 10 e8))
(if (> dt9 0) (vlax-put-property xlCells 'Item 1 11 e9))
(if (> dt10 0) (vlax-put-property xlCells 'Item 1 12 e10))

(setq row 2 col 1)
(foreach pt lst_data
(vlax-put-property xlCells 'Item row col pt)
(setq col (1+ col))
)
(vla-put-visible xlApp :vlax-true)
(mapcar
(function (lambda (x)
(vl-catch-all-apply (function (lambda ()(if x (vlax-release-object x))))))
)
(list xlCells xlApp)
)
(gc)
(gc)
)

- File *.DCL: Dien_tich_01.dcl

Dientich01 : dialog {
label = " *** - T&#221;nh Di&#214;n T&#221;ch Cho C&#184;c M&#198;t C&#190;t Ngang - Hec 13";
fixed_width = center;
:spacer { height=1; }
: row {
fixed_width = true;
children_alignment = centered;
: edit_box {
label = "Ti Le Ve MCN:";
key = "tle";
edit_width = 6;
edit_height = 1;
}
: edit_box {
label = "Ten Mat Cat:";
fixed_width = true;
key = "ten";
edit_width = 6;
edit_height = 1;
}
: edit_box {
label = "Khoang Cach C.Don:";
fixed_width = true;
key = "cdon";
edit_width = 6;
edit_height = 1;
}
}
:spacer { height=1; }
//-----------------------------
: row {
fixed_width = true;
children_alignment = Right;
: toggle {
key = "t1";
mnemonic = "b";
value = "0";
}
: edit_box {
label = "S";
key = "e1";
edit_width = 30;
}
: text {
label = "= ";
key = "s1";
edit_width = 100;
}
: button {
label = "Pick" ;
is_default = true ;
key = "p1" ;
width = 26;
}
}
//-----------------------------
: row {
fixed_width = true;
children_alignment = Right;
: toggle {
key = "t2";
mnemonic = "b";
value = "0";
}
: edit_box {
label = "S";
key = "e2";
edit_width = 30;
}
: text {
label = "= ";
key = "s2";
edit_width = 100;
}
: button {
label = "Pick" ;
is_default = true ;
key = "p2" ;
width = 26;
}
}
//-----------------------------
: row {
fixed_width = true;
children_alignment = Right;
: toggle {
key = "t3";
mnemonic = "b";
value = "0";
}
: edit_box {
label = "S";
key = "e3";
edit_width = 30;
}
: text {
label = "= ";
key = "s3";
edit_width = 100;
}
: button {
label = "Pick" ;
is_default = true ;
key = "p3" ;
width = 26;
}
}
//-----------------------------
: row {
fixed_width = true;
children_alignment = Right;
: toggle {
key = "t4";
mnemonic = "b";
value = "0";
}
: edit_box {
label = "S";
key = "e4";
edit_width = 30;
}
: text {
label = "= ";
key = "s4";
edit_width = 100;
}
: button {
label = "Pick" ;
is_default = true ;
key = "p4" ;
width = 26;
}
}
//-----------------------------
: row {
fixed_width = true;
children_alignment = Right;
: toggle {
key = "t5";
mnemonic = "b";
value = "0";
}
: edit_box {
label = "S";
key = "e5";
edit_width = 30;
}
: text {
label = "= ";
key = "s5";
edit_width = 100;
}
: button {
label = "Pick" ;
is_default = true ;
key = "p5" ;
width = 26;
}
}
//-----------------------------
: row {
fixed_width = true;
children_alignment = Right;
: toggle {
key = "t6";
mnemonic = "b";
value = "0";
}
: edit_box {
label = "S";
key = "e6";
edit_width = 30;
}
: text {
label = "= ";
key = "s6";
edit_width = 100;
}
: button {
label = "Pick" ;
is_default = true ;
key = "p6" ;
width = 26;
}
}
//-----------------------------
: row {
fixed_width = true;
children_alignment = Right;
: toggle {
key = "t7";
mnemonic = "b";
value = "0";
}
: edit_box {
label = "S";
key = "e7";
edit_width = 30;
}
: text {
label = "= ";
key = "s7";
edit_width = 100;
}
: button {
label = "Pick" ;
is_default = true ;
key = "p7" ;
width = 26;
}
}
//-----------------------------
: row {
fixed_width = true;
children_alignment = Right;
: toggle {
key = "t8";
mnemonic = "b";
value = "0";
}
: edit_box {
label = "S";
key = "e8";
edit_width = 30;
}
: text {
label = "= ";
key = "s8";
edit_width = 100;
}
: button {
label = "Pick" ;
is_default = true ;
key = "p8" ;
width = 26;
}
}
//-----------------------------
: row {
fixed_width = true;
children_alignment = Right;
: toggle {
key = "t9";
mnemonic = "b";
value = "0";
}
: edit_box {
label = "S";
key = "e9";
edit_width = 30;
}
: text {
label = "= ";
key = "s9";
edit_width = 100;
}
: button {
label = "Pick" ;
is_default = true ;
key = "p9" ;
width = 26;
}
}
//-----------------------------
: row {
fixed_width = true;
children_alignment = Right;
: toggle {
key = "t10";
mnemonic = "b";
value = "0";
}
: edit_box {
label = "S";
key = "e10";
edit_width = 30;
}
: text {
label = "= ";
key = "s10";
edit_width = 100;
}
: button {
label = "Pick" ;
is_default = true ;
key = "p10" ;
width = 26;
}
}
//-----------------------------
: row {
fixed_height = true;
children_alignment = centered;
: spacer { height=3; }
// : spacer { width=3; }
: button {
label = "Xuat sang Excel" ;
is_default = true ;
key = "excel" ;
width = 20;
}
: button {
label = "OK" ;
is_default = true ;
key = "start" ;
width = 20;
}
: button {
label = "Cancel" ;
width = 20;
is_cancel= true ;
}
// : text_part { label = "paragraph 1"; }
// : paragraph {
// : text_part { label = "paragraph 1"; }
// : spacer { height=0.1; }
// : text_part { label = "paragraph 2"; }
// : text_part { label = "paragraph 3"; }
// }
// : paragraph {
// : concatenation {
// : text_part {label = "column 1";}
// : text_part {label = "column 2";}
// : text_part {label = "column 3";}
// }
// }
:spacer { height=3; }
}
}


- Ảnh minh họa: http://www.cadviet.com/upfiles/3/88193_anh.rar
<<

Filename: 221764_dientich-01.lsp
Tác giả: hochoaivandot
Bài viết gốc: 221688
Tên lệnh: tt
Xin lisp hỗ trợ lengthen

(defun C:tt()
(defun dxf (group en) (cdr (assoc group (entget en))))
(command "lengthen" "T" (dxf 1 (car (entsel "\nSelect text"))) pause)
)


P/S: Bạn chú ý nội quy post bài tại topic autolisp bạn nhé!

Filename: 221688_tt.lsp
Tác giả: hochoaivandot
Bài viết gốc: 221909
Tên lệnh: ddd
Tác giả: Zuy782006
Bài viết gốc: 221531
Tên lệnh: xtpl
lisp xóa text trong 1 miền kín



;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=68051&pid=221519&st=0&#entry221519
(defun c:xtpl ()
(setq dt (ssget '((0 . "LWPOLYLINE"))))
(setq n (sslength dt) i 0)
(while (< i n)
(setq dt1 (ssname dt i))
(command ".zoom" "o" dt1 "")
(setq SS (ssget "wp" (acet-geom-vertex-list dt1) (list (cons...
>>



;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=68051&pid=221519&st=0&#entry221519
(defun c:xtpl ()
(setq dt (ssget '((0 . "LWPOLYLINE"))))
(setq n (sslength dt) i 0)
(while (< i n)
(setq dt1 (ssname dt i))
(command ".zoom" "o" dt1 "")
(setq SS (ssget "wp" (acet-geom-vertex-list dt1) (list (cons 0 "text"))))
(command ".erase" ss "")
(command ".zoom" "p")
(setq i (+ i 1))
)
(setq sdt (sslength ss))
)

<<

Filename: 221531_xtpl.lsp
Tác giả: nhoclangbat
Bài viết gốc: 221948
Tên lệnh: vb vv
Chương 3 - Các hàm nhập liệu
anh Ket và anh Zuy xem thử hộ em, em mới mày mò lại, cách của anh Zuy hợp với mục đích em nhưng em thấy hơi khó, em chưa làm đc ^^, em thử cách anh Ket dùng le, đúng là dễ hơn tí, chỉ có 1 xíu khó chịu là hồi đó em quen xài pline để có thể canh đc chính xác độ rộng và chiều dài mũi tên vì do mình tùy xử giúp em vẽ đúng ở các vị trí tỉ lệ khác nhau để khi in ra nhìn nó tương đồng đẹp ^^,...
>>
anh Ket và anh Zuy xem thử hộ em, em mới mày mò lại, cách của anh Zuy hợp với mục đích em nhưng em thấy hơi khó, em chưa làm đc ^^, em thử cách anh Ket dùng le, đúng là dễ hơn tí, chỉ có 1 xíu khó chịu là hồi đó em quen xài pline để có thể canh đc chính xác độ rộng và chiều dài mũi tên vì do mình tùy xử giúp em vẽ đúng ở các vị trí tỉ lệ khác nhau để khi in ra nhìn nó tương đồng đẹp ^^, dùng leader này em ko pit cách nó tính size mũi tên kiủ nào, phải dựa vào các mũi tên cũ em đã vẽ để mò xem chỉnh size thế nào thì tương đồng với mũi tên cũ em vẽ bằng pline. Anh Ket hay anh Zuy hướng dẫn hộ em cách xử theo hướng anh Zuy, em post 2 đoạn code viết theo 2 kiểu, mấy anh góp ý ^^

(defun c:vb (/ a p1 p2 p3)
(setq p1 (getpoint "\nPick diem dau:"))
(setq p2 (getpoint p1 "\nPick diem tip:"))
(command "ucs" "3p" p1 p2 "")
(command "ortho" "on")
(setq a (getreal "\nDo rong mui ten:"))
(setq p3 (getpoint p2 "\nPick diem cuoi:"))
(command ".pline" p1 "w" 0.0 0.0 p2 "w" a 0.0 p3 ^C)
(command "ortho" "off")
(command "ucs" "w" ^C)
)
;dung le
(defun c:vv (/ a p1)
(command ".layer" "m" "B-Ghichu" "c" 7 "" "")
(setq a (getreal "\nNhap size:"))
(setq p1 (getpoint "\nPick dau:"))
(command "dimstyle" "v" "ios-25" "DIMASZ" a)
(command ".layer" "s" "B-Ghichu" "")
(command "leader" p1 (getpoint p1 "\nPick cuoi:") "" "" "none")
)

Code theo kiểu anh Zuy em suy nghĩ viết vậy mà chạy ko đc hihi
<<

Filename: 221948_vb_vv.lsp
Tác giả: hieux5
Bài viết gốc: 220070
Tên lệnh: dttamgiac tbc3s tich4so lp svk s3c sdd klt kltv kltv2 convert
Chương 3 - Các hàm nhập liệu
E sửa lại ntn đã okie chưa a ket ..Thanks nhoclangbat nhé

;Tinh dien tich tam giac voi chieu cao va day nhap vao
(defun c:dttamgiac (/ h b dientich)
(setq h (getreal "\nNhap gia tri chieu cao h :"))
(setq b (getreal "\nNhap gia tri canh day b :"))
(defun dientich (h B)
(* h b 0.5)
)
(dientich h
>>
E sửa lại ntn đã okie chưa a ket ..Thanks nhoclangbat nhé

;Tinh dien tich tam giac voi chieu cao va day nhap vao
(defun c:dttamgiac (/ h b dientich)
(setq h (getreal "\nNhap gia tri chieu cao h :"))
(setq b (getreal "\nNhap gia tri canh day b :"))
(defun dientich (h B)
(* h b 0.5)
)
(dientich h B)
)
;Tinh trung binh cong 3 so
(defun c:tbc3s (/ a b c tbc)
(setq a (getreal "\nNhap so a :"))
(setq b (getreal "\nNhap so b :"))
(setq c (getreal "\nNhap so c :"))
(defun tbc (a b c)
(/ (+ a b c) 3)
)
(tbc a b c)
)
;Tich bon so
(defun c:tich4so (/ a b c d t4s)
(setq a (getreal "\nNhap so a:"))
(setq b (getreal "\nNhap so b:"))
(setq c (getreal "\nNhap so c:"))
(setq d (getreal "\nNhap so d:"))
(defun t4s (a b c d)
(* a b c d)
)
(t4s a b c d)
)
;Lap phuong cua mot so
(defun c:lp (/ a lapphuong)
(setq (getreal "\nNhap so a:"))
(defun lapphuong (a)
(* a a a)
)
(lap phuong a)
)
;Dien tich vanh khan
;r1 : Ban kinh trong
;r2 : ban kinh ngoai
(defun c:svk (/ r1 r2 vk)
(setq r1 (getreal "\nNhap ban kinh lon:"))
(setq r2 (getreal "\nNhap ban kinh nho:"))
(defun vk (r1 r2)
(* pi (+ r2 r1)(- r2 r1))
)
(vk r1 r2)
)
;Dien tich tam giac biet 3 canh
;x,y,z
(defun c:s3c (/ x y z s3)
(setq x (getreal "\nNhap do dai canh thu nhat:"))
(setq y (getreal "\nNhap do dai canh thu hai:"))
(setq z (getreal "\nNhap do dai canh thu ba:"))
(defun s3(x y z / p)
(setq p (* (+ x y z) 0.5))
(sqrt (* p (- p x)(- p y)(- p z)))
)
(s3 x y z)
)
;Mat cat thep tron
(defun c:sDD (/ d sD)
(serq d (getreal "\nNhap duong kinh thep tron:"))
(defun sD (d)
(/ (* d d pi) 4)
)
(sD d)
)
;Khoi luong mot cay thep dai 11,7
;D
(defun c:klt (/ d)
(setq d (getreal "\nNhap duong kinh thep:"))
(defun mD (d)
(* (sD d) 11.7 7850)
)
(mD d)
)
;M Thep hop vuong
;x : canh ngoai
;d : day
(defun c:kltv (/ x d y mhv1)
(setq x (getreal "\nNhap chieu dai canh ngoai x:"))
(setq d (getreal "\nNhap do day"))
(setq y (- x (* 2 d)));canh troqng
(defun mhv1 (/ x d y)
(* (- (* x x) (* y y) ) 11.7 7850)
)
(mhv1 x d y)
)
;Khoi luong thep hop vuong
;x : canh ngoai
;y : canh trong
(defun c:kltv2 (/ x y mhV2)
(setq x (getreal "\nNhap chieu dai canh ngoai x:"))
(setq y (getreal "\nNhap chieu dai canh trong y:"))
(defun mhV2 ( x y)
(* (- (* x x)(* y y)) 11.7 7850)
)
(mhV2 x y)
)
;Doi mm sang m
(defun c:convert (/ a cv)
(setq a (getreal "\nNhap so mm se doi"))
(defun cv (a)
(* (a 0.001))
)
(cv a)
)

<<

Filename: 220070_dttamgiac_tbc3s_tich4so_lp_svk_s3c_sdd_klt_kltv_kltv2_convert.lsp
Tác giả: nhoclangbat
Bài viết gốc: 221893
Tên lệnh: vb
[LI]Chương 3 - Các hàm nhập liệu

anh Ket em tập viết 1lsp đơn giản để thực hành công dụng vẽ mũi tên, ý đồ của em là chỉ cần nhập 1thộng số là độ rộng mũi tên thì nó sẽ vẽ đc ko cần dài dòng như cad, nhưng có 1 chỗ vướn, em muốn khi nhập xong độ rộng mủi tên em kéo đầu mũi tên dài bao nhiêu tùy ý và góc kéo bằng với góc đường 1 nét em vẽ ban đầu để mũi tên nó đc thẳng mà ko pit làm sao vì ko định hướng...
>>
anh Ket em tập viết 1lsp đơn giản để thực hành công dụng vẽ mũi tên, ý đồ của em là chỉ cần nhập 1thộng số là độ rộng mũi tên thì nó sẽ vẽ đc ko cần dài dòng như cad, nhưng có 1 chỗ vướn, em muốn khi nhập xong độ rộng mủi tên em kéo đầu mũi tên dài bao nhiêu tùy ý và góc kéo bằng với góc đường 1 nét em vẽ ban đầu để mũi tên nó đc thẳng mà ko pit làm sao vì ko định hướng chính xác đc đường mảnh ban đầu em vẽ, anh Ket rãnh xem hộ góp ý cho em nhé ^^, thank anh:

(defun c:vb (/ a p1 p2 p3)
(setq p1 (getpoint "\nPick diem dau:"))
(setq p2 (getpoint p1 "\nPick diem tip:"))
(setq a (getreal "\nDo rong mui ten:"))
(setq p3 (getpoint p2 "\nPick diem cuoi:"))
(command ".pline" p1 "w" 0.0 0.0 p2 "w" a 0.0 p3 ^C)
)


=> Rất tốt, tức là ý nhoclangbat muốn điểm p3 đi theo hướng vecto p1 p2 ? Nhưng tại sao không dùng qleader ?
<<

Filename: 221893_vb.lsp
Tác giả: nhoclangbat
Bài viết gốc: 214740
Tên lệnh: vv
Chương 2 - Cấu thành file lisp
em vua lam xong anh kiem dum em xem co sai va sot chổ nào khong anh ^^
nếu chia cho 2 thì giá trị trả ra sẽ không chính xác hoàn toàn vì sẽ cho ra giá trị cố định không cần thiết trong lsp này, theo em hỉu là vậy ^^
còn bt 2-1 kết quả sẽ ra 1.0e+006 vì nó vượt qua giới hạn số nguyên phải không anh,
số trên là viết tắt cho 1*10^6.


; tinh trung binh cong 2 so
(defun c:vv (/ a
>>
em vua lam xong anh kiem dum em xem co sai va sot chổ nào khong anh ^^
nếu chia cho 2 thì giá trị trả ra sẽ không chính xác hoàn toàn vì sẽ cho ra giá trị cố định không cần thiết trong lsp này, theo em hỉu là vậy ^^
còn bt 2-1 kết quả sẽ ra 1.0e+006 vì nó vượt qua giới hạn số nguyên phải không anh,
số trên là viết tắt cho 1*10^6.


; tinh trung binh cong 2 so
(defun c:vv (/ a B)
(setq a (getint "\nNhap so a:"))
(setq b (getint "\nNhap so b:"))
(trungbinhcong a B)
)
;ham trung binh cong 2 so
;doi so:
; x: integer hoac real
; y: integer hoac real
; Tra ve: trung binh cong 2 so nay
(defun trungbinhcong (x y)
(* (+ x y) 0.5)
)




;bai tap 21 kho wa
(defun c:bt (/ a b c d)
(setq a (+ 2 7))
(setq b (- 3 1.25))
(setq c 5.0)
(setq d (+ (* (- a B) 0.4) c))
(tong a b c d)
)
(defun tong ( a b c d)
(+ a b c d)
)




;Tinh dien tich tam giac vuog
(defun c:bt2 (/ a B)
(setq a 2000)
(setq b 1000)
(ketqua a B)
)
;ketqua : dien tich tam giac
(defun ketqua ( a B)
(* (* a B) 0.5)
)



;dien tich tam giac
(defun c:vd (/ a B)
(setq a (getint "\nNhap so a:"))
(setq b (getint "\nNhap so b:"))
(ketqua a B)
)
(defun ketqua (x y)
(* (* x y) 0.5)
)




;tich cua 4 so
(defun c:go (/ a b c d)
(setq a (getint "\nNhap so a:"))
(setq b (getint "\nNhap so b:"))
(setq c (getint "\nNhap so c:"))
(setq d (getint "\nNhap so d:"))
(tich a b c d)
)
(defun tich (x y z e)
(* x y z e)
)




(defun c:vvv (/ a b c)
(setq a (getreal "\nNhap so a:"))
(setq b (getreal "\nNhap so b:"))
(setq c (getreal "\nNhap so c:"))
(trungbinhcong a b c)
)
;ham trung binh cong 3 so
;doi so:
; x: integer hoac real
; y: integer hoac real
; z: integer hoac real
;Tra ve: gia tri trung binh cong 3 so nay
(defun trungbinhcong (x y z)
(* (+ x y z) 0.5)
)




; tinh lap phuong 1 so
(defun c:lp (/ a)
(setq a (getint "\nNhap so a:"))
(lapphuong a)
)
;ham lap phuong 1 so
;doi so:
; x: integer hoac real
(defun lapphuong (x)
(* x x x)
)


<<

Filename: 214740_vv.lsp
Tác giả: nhoclangbat
Bài viết gốc: 214740
Tên lệnh: bt
Chương 2 - Cấu thành file lisp

em vua lam xong anh kiem dum em xem co sai va sot chổ nào khong anh ^^
nếu chia cho 2 thì giá trị trả ra sẽ không chính xác hoàn toàn vì sẽ cho ra giá trị cố định không cần thiết trong lsp này, theo em hỉu là vậy ^^
còn bt 2-1 kết quả sẽ ra 1.0e+006 vì nó vượt qua giới hạn số nguyên phải không anh,
số trên là viết tắt cho 1*10^6.


; tinh trung binh cong 2 so
(defun c:vv (/ a
>>
em vua lam xong anh kiem dum em xem co sai va sot chổ nào khong anh ^^
nếu chia cho 2 thì giá trị trả ra sẽ không chính xác hoàn toàn vì sẽ cho ra giá trị cố định không cần thiết trong lsp này, theo em hỉu là vậy ^^
còn bt 2-1 kết quả sẽ ra 1.0e+006 vì nó vượt qua giới hạn số nguyên phải không anh,
số trên là viết tắt cho 1*10^6.


; tinh trung binh cong 2 so
(defun c:vv (/ a B)
(setq a (getint "\nNhap so a:"))
(setq b (getint "\nNhap so b:"))
(trungbinhcong a B)
)
;ham trung binh cong 2 so
;doi so:
; x: integer hoac real
; y: integer hoac real
; Tra ve: trung binh cong 2 so nay
(defun trungbinhcong (x y)
(* (+ x y) 0.5)
)




;bai tap 21 kho wa
(defun c:bt (/ a b c d)
(setq a (+ 2 7))
(setq b (- 3 1.25))
(setq c 5.0)
(setq d (+ (* (- a B) 0.4) c))
(tong a b c d)
)
(defun tong ( a b c d)
(+ a b c d)
)




;Tinh dien tich tam giac vuog
(defun c:bt2 (/ a B)
(setq a 2000)
(setq b 1000)
(ketqua a B)
)
;ketqua : dien tich tam giac
(defun ketqua ( a B)
(* (* a B) 0.5)
)



;dien tich tam giac
(defun c:vd (/ a B)
(setq a (getint "\nNhap so a:"))
(setq b (getint "\nNhap so b:"))
(ketqua a B)
)
(defun ketqua (x y)
(* (* x y) 0.5)
)




;tich cua 4 so
(defun c:go (/ a b c d)
(setq a (getint "\nNhap so a:"))
(setq b (getint "\nNhap so b:"))
(setq c (getint "\nNhap so c:"))
(setq d (getint "\nNhap so d:"))
(tich a b c d)
)
(defun tich (x y z e)
(* x y z e)
)




(defun c:vvv (/ a b c)
(setq a (getreal "\nNhap so a:"))
(setq b (getreal "\nNhap so b:"))
(setq c (getreal "\nNhap so c:"))
(trungbinhcong a b c)
)
;ham trung binh cong 3 so
;doi so:
; x: integer hoac real
; y: integer hoac real
; z: integer hoac real
;Tra ve: gia tri trung binh cong 3 so nay
(defun trungbinhcong (x y z)
(* (+ x y z) 0.5)
)




; tinh lap phuong 1 so
(defun c:lp (/ a)
(setq a (getint "\nNhap so a:"))
(lapphuong a)
)
;ham lap phuong 1 so
;doi so:
; x: integer hoac real
(defun lapphuong (x)
(* x x x)
)


<<

Filename: 214740_bt.lsp
Tác giả: nhoclangbat
Bài viết gốc: 214740
Tên lệnh: vd
Chương 2 - Cấu thành file lisp
em vua lam xong anh kiem dum em xem co sai va sot chổ nào khong anh ^^
nếu chia cho 2 thì giá trị trả ra sẽ không chính xác hoàn toàn vì sẽ cho ra giá trị cố định không cần thiết trong lsp này, theo em hỉu là vậy ^^
còn bt 2-1 kết quả sẽ ra 1.0e+006 vì nó vượt qua giới hạn số nguyên phải không anh,
số trên là viết tắt cho 1*10^6.


; tinh trung binh cong 2 so
(defun c:vv (/ a
>>
em vua lam xong anh kiem dum em xem co sai va sot chổ nào khong anh ^^
nếu chia cho 2 thì giá trị trả ra sẽ không chính xác hoàn toàn vì sẽ cho ra giá trị cố định không cần thiết trong lsp này, theo em hỉu là vậy ^^
còn bt 2-1 kết quả sẽ ra 1.0e+006 vì nó vượt qua giới hạn số nguyên phải không anh,
số trên là viết tắt cho 1*10^6.


; tinh trung binh cong 2 so
(defun c:vv (/ a B)
(setq a (getint "\nNhap so a:"))
(setq b (getint "\nNhap so b:"))
(trungbinhcong a B)
)
;ham trung binh cong 2 so
;doi so:
; x: integer hoac real
; y: integer hoac real
; Tra ve: trung binh cong 2 so nay
(defun trungbinhcong (x y)
(* (+ x y) 0.5)
)




;bai tap 21 kho wa
(defun c:bt (/ a b c d)
(setq a (+ 2 7))
(setq b (- 3 1.25))
(setq c 5.0)
(setq d (+ (* (- a B) 0.4) c))
(tong a b c d)
)
(defun tong ( a b c d)
(+ a b c d)
)




;Tinh dien tich tam giac vuog
(defun c:bt2 (/ a B)
(setq a 2000)
(setq b 1000)
(ketqua a B)
)
;ketqua : dien tich tam giac
(defun ketqua ( a B)
(* (* a B) 0.5)
)



;dien tich tam giac
(defun c:vd (/ a B)
(setq a (getint "\nNhap so a:"))
(setq b (getint "\nNhap so b:"))
(ketqua a B)
)
(defun ketqua (x y)
(* (* x y) 0.5)
)




;tich cua 4 so
(defun c:go (/ a b c d)
(setq a (getint "\nNhap so a:"))
(setq b (getint "\nNhap so b:"))
(setq c (getint "\nNhap so c:"))
(setq d (getint "\nNhap so d:"))
(tich a b c d)
)
(defun tich (x y z e)
(* x y z e)
)




(defun c:vvv (/ a b c)
(setq a (getreal "\nNhap so a:"))
(setq b (getreal "\nNhap so b:"))
(setq c (getreal "\nNhap so c:"))
(trungbinhcong a b c)
)
;ham trung binh cong 3 so
;doi so:
; x: integer hoac real
; y: integer hoac real
; z: integer hoac real
;Tra ve: gia tri trung binh cong 3 so nay
(defun trungbinhcong (x y z)
(* (+ x y z) 0.5)
)




; tinh lap phuong 1 so
(defun c:lp (/ a)
(setq a (getint "\nNhap so a:"))
(lapphuong a)
)
;ham lap phuong 1 so
;doi so:
; x: integer hoac real
(defun lapphuong (x)
(* x x x)
)


<<

Filename: 214740_vd.lsp
Tác giả: nhoclangbat
Bài viết gốc: 214740
Tên lệnh: go
Chương 2 - Cấu thành file lisp
em vua lam xong anh kiem dum em xem co sai va sot chổ nào khong anh ^^
nếu chia cho 2 thì giá trị trả ra sẽ không chính xác hoàn toàn vì sẽ cho ra giá trị cố định không cần thiết trong lsp này, theo em hỉu là vậy ^^
còn bt 2-1 kết quả sẽ ra 1.0e+006 vì nó vượt qua giới hạn số nguyên phải không anh,
số trên là viết tắt cho 1*10^6.


; tinh trung binh cong 2 so
(defun c:vv (/ a
>>
em vua lam xong anh kiem dum em xem co sai va sot chổ nào khong anh ^^
nếu chia cho 2 thì giá trị trả ra sẽ không chính xác hoàn toàn vì sẽ cho ra giá trị cố định không cần thiết trong lsp này, theo em hỉu là vậy ^^
còn bt 2-1 kết quả sẽ ra 1.0e+006 vì nó vượt qua giới hạn số nguyên phải không anh,
số trên là viết tắt cho 1*10^6.


; tinh trung binh cong 2 so
(defun c:vv (/ a B)
(setq a (getint "\nNhap so a:"))
(setq b (getint "\nNhap so b:"))
(trungbinhcong a B)
)
;ham trung binh cong 2 so
;doi so:
; x: integer hoac real
; y: integer hoac real
; Tra ve: trung binh cong 2 so nay
(defun trungbinhcong (x y)
(* (+ x y) 0.5)
)




;bai tap 21 kho wa
(defun c:bt (/ a b c d)
(setq a (+ 2 7))
(setq b (- 3 1.25))
(setq c 5.0)
(setq d (+ (* (- a B) 0.4) c))
(tong a b c d)
)
(defun tong ( a b c d)
(+ a b c d)
)




;Tinh dien tich tam giac vuog
(defun c:bt2 (/ a B)
(setq a 2000)
(setq b 1000)
(ketqua a B)
)
;ketqua : dien tich tam giac
(defun ketqua ( a B)
(* (* a B) 0.5)
)



;dien tich tam giac
(defun c:vd (/ a B)
(setq a (getint "\nNhap so a:"))
(setq b (getint "\nNhap so b:"))
(ketqua a B)
)
(defun ketqua (x y)
(* (* x y) 0.5)
)




;tich cua 4 so
(defun c:go (/ a b c d)
(setq a (getint "\nNhap so a:"))
(setq b (getint "\nNhap so b:"))
(setq c (getint "\nNhap so c:"))
(setq d (getint "\nNhap so d:"))
(tich a b c d)
)
(defun tich (x y z e)
(* x y z e)
)




(defun c:vvv (/ a b c)
(setq a (getreal "\nNhap so a:"))
(setq b (getreal "\nNhap so b:"))
(setq c (getreal "\nNhap so c:"))
(trungbinhcong a b c)
)
;ham trung binh cong 3 so
;doi so:
; x: integer hoac real
; y: integer hoac real
; z: integer hoac real
;Tra ve: gia tri trung binh cong 3 so nay
(defun trungbinhcong (x y z)
(* (+ x y z) 0.5)
)




; tinh lap phuong 1 so
(defun c:lp (/ a)
(setq a (getint "\nNhap so a:"))
(lapphuong a)
)
;ham lap phuong 1 so
;doi so:
; x: integer hoac real
(defun lapphuong (x)
(* x x x)
)


<<

Filename: 214740_go.lsp
Tác giả: nhoclangbat
Bài viết gốc: 214740
Tên lệnh: lp
Chương 2 - Cấu thành file lisp
em vua lam xong anh kiem dum em xem co sai va sot chổ nào khong anh ^^
nếu chia cho 2 thì giá trị trả ra sẽ không chính xác hoàn toàn vì sẽ cho ra giá trị cố định không cần thiết trong lsp này, theo em hỉu là vậy ^^
còn bt 2-1 kết quả sẽ ra 1.0e+006 vì nó vượt qua giới hạn số nguyên phải không anh,
số trên là viết tắt cho 1*10^6.


; tinh trung binh cong 2 so
(defun c:vv (/ a
>>
em vua lam xong anh kiem dum em xem co sai va sot chổ nào khong anh ^^
nếu chia cho 2 thì giá trị trả ra sẽ không chính xác hoàn toàn vì sẽ cho ra giá trị cố định không cần thiết trong lsp này, theo em hỉu là vậy ^^
còn bt 2-1 kết quả sẽ ra 1.0e+006 vì nó vượt qua giới hạn số nguyên phải không anh,
số trên là viết tắt cho 1*10^6.


; tinh trung binh cong 2 so
(defun c:vv (/ a B)
(setq a (getint "\nNhap so a:"))
(setq b (getint "\nNhap so b:"))
(trungbinhcong a B)
)
;ham trung binh cong 2 so
;doi so:
; x: integer hoac real
; y: integer hoac real
; Tra ve: trung binh cong 2 so nay
(defun trungbinhcong (x y)
(* (+ x y) 0.5)
)




;bai tap 21 kho wa
(defun c:bt (/ a b c d)
(setq a (+ 2 7))
(setq b (- 3 1.25))
(setq c 5.0)
(setq d (+ (* (- a B) 0.4) c))
(tong a b c d)
)
(defun tong ( a b c d)
(+ a b c d)
)




;Tinh dien tich tam giac vuog
(defun c:bt2 (/ a B)
(setq a 2000)
(setq b 1000)
(ketqua a B)
)
;ketqua : dien tich tam giac
(defun ketqua ( a B)
(* (* a B) 0.5)
)



;dien tich tam giac
(defun c:vd (/ a B)
(setq a (getint "\nNhap so a:"))
(setq b (getint "\nNhap so b:"))
(ketqua a B)
)
(defun ketqua (x y)
(* (* x y) 0.5)
)




;tich cua 4 so
(defun c:go (/ a b c d)
(setq a (getint "\nNhap so a:"))
(setq b (getint "\nNhap so b:"))
(setq c (getint "\nNhap so c:"))
(setq d (getint "\nNhap so d:"))
(tich a b c d)
)
(defun tich (x y z e)
(* x y z e)
)




(defun c:vvv (/ a b c)
(setq a (getreal "\nNhap so a:"))
(setq b (getreal "\nNhap so b:"))
(setq c (getreal "\nNhap so c:"))
(trungbinhcong a b c)
)
;ham trung binh cong 3 so
;doi so:
; x: integer hoac real
; y: integer hoac real
; z: integer hoac real
;Tra ve: gia tri trung binh cong 3 so nay
(defun trungbinhcong (x y z)
(* (+ x y z) 0.5)
)




; tinh lap phuong 1 so
(defun c:lp (/ a)
(setq a (getint "\nNhap so a:"))
(lapphuong a)
)
;ham lap phuong 1 so
;doi so:
; x: integer hoac real
(defun lapphuong (x)
(* x x x)
)


<<

Filename: 214740_lp.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 90062
Tên lệnh: lb1
Viết lisp theo yêu cầu [phần 2]

Chào bạn Ngolevietduc87,
Bạn dùng thử cái lisp này và cho ý kiến nhé.
Bạn lưu ý rằng do bạn không nói rõ cái khoảng cách từ điểm chèn block tới đường polyline chuẩn bạn chọn như thế nào nên mình cứ hiểu đơn giản rằng đó là khoảng cách ngắn nhất tính từ điểm đó tới một điểm khác trên polyline. Nếu bạn không sử dụng theo định nghĩa này thì kết quả khoảng cách này...
>>

Chào bạn Ngolevietduc87,
Bạn dùng thử cái lisp này và cho ý kiến nhé.
Bạn lưu ý rằng do bạn không nói rõ cái khoảng cách từ điểm chèn block tới đường polyline chuẩn bạn chọn như thế nào nên mình cứ hiểu đơn giản rằng đó là khoảng cách ngắn nhất tính từ điểm đó tới một điểm khác trên polyline. Nếu bạn không sử dụng theo định nghĩa này thì kết quả khoảng cách này sẽ sai đấy nhé.
Trong lisp này, yêu cầu bạn phải nhập đúng cái tên của block và tên layer chứa block. Nếu bạn nhập sai, lisp sẽ không chạy đâu.
Lisp này cũng mới dừng lại ở việc xuất ra bản vẽ cái bảng kết quả. Nếu bạn muốn xuất sang excel thì bạn cần thêm một đoạn code khác nữa.
Nó đây:


Và đây là cái kết quả mà mình đã chạy với file bạn gửi:
http://www.cadviet.com/upfiles/2/lb1.jpg

Nếu có gì chưa hài lòng bạn hãy post lên nhé.
Chúc bạn vui.

Bài viết được chỉnh sửa bởi Phạm Thanh Bình theo sự góp ý của bác Tue_NV
<<

Filename: 90062_lb1.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 90202
Tên lệnh: lb1
Viết lisp theo yêu cầu [phần 2]
Sau khi tham khảo các bài hướng dẫn của bác SSG, mình thử liều viết bổ sung vào cái lisp lb1.lsp viết cho bạn Ngolevietduc87 để có thể xuất dữ liệu vào một file excel. Vì đây là thử nghiệm lần đầu tiên nên rất mong các bác xem qua và góp ý nhé. Nó đây ạ:


Lưu ý khi sử dụng: Phải tạo trước một file excel trống với tên tùy ý rồi thoát khỏi Excel. Khi chạy lisp sẽ hiển thị...
>>
Sau khi tham khảo các bài hướng dẫn của bác SSG, mình thử liều viết bổ sung vào cái lisp lb1.lsp viết cho bạn Ngolevietduc87 để có thể xuất dữ liệu vào một file excel. Vì đây là thử nghiệm lần đầu tiên nên rất mong các bác xem qua và góp ý nhé. Nó đây ạ:


Lưu ý khi sử dụng: Phải tạo trước một file excel trống với tên tùy ý rồi thoát khỏi Excel. Khi chạy lisp sẽ hiển thị bảng lựa chọn file để mở, browse dến tên file vừa lập và clickOk
Lisp sẽ tự động lập bảng kết quả cả trên bản vẽ và cả trên sheet hiện hành của file excel.
<<

Filename: 90202_lb1.lsp
Tác giả: ssg
Bài viết gốc: 91787
Tên lệnh: btd
Viết lisp theo yêu cầu [phần 2]

Bạn dùng thử xem:

Bạn insert trước cái block đèn ở vị trí bất kỳ (để có cái mà select), nhập lệnh BTD và đáp ứng các yêu cầu...

Filename: 91787_btd.lsp

Trang 110/330

110