Jump to content
InfoFile
Tác giả: Doan Van Ha
Bài viết gốc: 195233
Tên lệnh: ha
Tác giả: Doan Van Ha
Bài viết gốc: 195262
Tên lệnh: ha
Đo khoảng cách
Lisp vẽ đường vuông góc chung giữa 2 đường thẳng chéo nhau trong không gian 3D. Các bạn test thử và cho ý kiến.

Filename: 195262_ha.lsp
Tác giả: quansla
Bài viết gốc: 195099
Tên lệnh: h2 sol
Lisp hatch nhanh.



bạn có thể cái của mình xem sao cái list đầu là mình cũng edit lại cái sau thì mình tự làm thôi, cũng toàn chắp vá ý mà; mới tìm hiểu viết list có tuần nay bạn cần giáo trình có thể download ở đây
http://cauduongbkdn.com/f@rums/showthread.php?12102-T%C3%A0i-li%E1%BB%87u-h%E1%BB%8Dc-autolisp

cái này là cái theo ý mình; nên bạn cần sửa lại;
1. phải tự thêm một layer mang tên...
>>


bạn có thể cái của mình xem sao cái list đầu là mình cũng edit lại cái sau thì mình tự làm thôi, cũng toàn chắp vá ý mà; mới tìm hiểu viết list có tuần nay bạn cần giáo trình có thể download ở đây
http://cauduongbkdn.com/f@rums/showthread.php?12102-T%C3%A0i-li%E1%BB%87u-h%E1%BB%8Dc-autolisp

cái này là cái theo ý mình; nên bạn cần sửa lại;
1. phải tự thêm một layer mang tên hatch hoặc sửa lại layer "hatch" trong list mình thành layer của bạn;
2. mình thường xuyên vẽ với tỷ lệ 1:100 lên hệ số tỷ lệ con số đầu tiên trong chuỗi list 1 ý( list 2 là Solid thì làm gì có) (500;30;100) bạn tự sửa lại theo ý mình.
chúc bạn may mắn. Do mới làm quen với cái này lên edit của các bậc tiền bối trên; kính mong các bác thông cảm và bỏ qua cho em hiii :ph34r:
<<

Filename: 195099_h2_sol.lsp
Tác giả: ssg
Bài viết gốc: 10721
Tên lệnh: sl2
Lệnh slide với cách chọn mặt phẳng khác!!

Chương trình sau đúng như ý bạn:


Tuy nhiên, mình có 1 yêu cầu: bạn có thể giải thích tại sao phải dùng kiểu slice "khác người" này không? Ví dụ cụ thể để thấy rõ hiệu quả sử dụng của chương trình?

Filename: 10721_sl2.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 195294
Tên lệnh: ha
Lisp vẽ đường vuông góc chung của 2 đường thẳng
Theo yêu cầu của một số bạn đọc từ topic "Đo khoảng cách", để tiện tìm kiếm cho người dùng, cần mở topic này.
Lisp dưới đây được biên soạn lại từ lisp ở topic "Đo khoảng cách". Lisp có mục đích:
1). Kiểm tra vị trí tương đối giữa 2 đường thẳng trong không gian.
2). Nếu 2 đường thẳng là chéo nhau thì vẽ đường vuông góc chung giữa chúng.

Filename: 195294_ha.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 195409
Tên lệnh: ha
Nhờ viết lisp tạo nhanh wipeout
Quick code

P/S (17h15' ngày 05/4/2012): Hiệu chỉnh để wipeout được với cả Lwpolyline kín nhưng open.

Filename: 195409_ha.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 195438
Tên lệnh: ha2
Nhờ viết lisp tạo nhanh wipeout


Lisp chuyển các Wipeout thành các Lwpolyline.

Filename: 195438_ha2.lsp
Tác giả: ketxu
Bài viết gốc: 195444
Tên lệnh: wo2pl
Nhờ viết lisp tạo nhanh wipeout

Code cũ của gile, ketxu sửa thêm 1 chút :

;; WO2PL (gile)
;; Re-creates a wipeout boundary (lwpolyline)
(defun c:wo2pl (/ ss n wo elst pts norm ans)
(if (setq ss (ssget '((0 . "WIPEOUT"))))
(progn
(initget "Yes No")
(setq ans (getkword "\nDelete source object? <No>: "))
(foreach wo (ST:Ss->ListEnt ss)
(setq
elst (entget wo)
norm (vunit (v^v (cdr (assoc 11...
>>
Code cũ của gile, ketxu sửa thêm 1 chút :

;; WO2PL (gile)
;; Re-creates a wipeout boundary (lwpolyline)
(defun c:wo2pl (/ ss n wo elst pts norm ans)
(if (setq ss (ssget '((0 . "WIPEOUT"))))
(progn
(initget "Yes No")
(setq ans (getkword "\nDelete source object? <No>: "))
(foreach wo (ST:Ss->ListEnt ss)
(setq
elst (entget wo)
norm (vunit (v^v (cdr (assoc 11 elst)) (cdr (assoc 12 elst))))
pts (wipeout2plst wo)
)
(entmake
(append
(list '(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
(cons 90 (length pts))
(cons 38 (caddr (trans (car pts) 0 norm)))
'(70 . 1)
(cons 210 norm)
)
(mapcar '(lambda (pt)
(setq pt (trans pt 0 norm))
(list 10 (car pt) (cadr pt))
)
pts
)
)
)
(if (or (not ans) (wcmatch (strcase ans) "YES"))(entdel wo))
(princ)
)))
)
;;==================SUB ROUTINES==================;;
;; returns the wipeout point list (WCS)
(defun wipeout2plst (wo / elst u v mat)
(setq elst (entget wo)
u (cdr (assoc 11 elst))
v (cdr (assoc 12 elst))
mat (list u (mapcar '- v) '(0. 0. 1.))
)
(mapcar
'(lambda (p)
(mapcar '+
(mxv (trp mat) p)
(mapcar '(lambda (x y) (/ (+ x y) 2.)) u v)
(cdr (assoc 10 elst))
)
)
(cdr
(mapcar 'cdr
(vl-remove-if-not '(lambda (x) (= (car x) 14)) elst)
)
)
)
)
;; Transpose a matrix Doug Wilson
(defun trp (m)
(apply 'mapcar (cons 'list m))
)
;; Apply a transformation matrix to a vector by Vladimir Nesterovsky
(defun mxv (m v)
(mapcar '(lambda (r) (apply '+ (mapcar '* r v))) m)
)
;; V^V
;; Returns the cross product of 2 vectors
(defun v^v (v1 v2)
(list (- (* (cadr v1) (caddr v2)) (* (caddr v1) (cadr v2)))
(- (* (caddr v1) (car v2)) (* (car v1) (caddr v2)))
(- (* (car v1) (cadr v2)) (* (cadr v1) (car v2)))
)
)
;; VUNIT
;; Returns the single unit vector
(defun vunit (v)
((lambda (l)
(if (/= 0 l)
(mapcar (function (lambda (x) (/ x l))) v)
)
)
(distance '(0 0 0) v)
)
)
(defun ST:Ss->ListEnt (ss / n e l)
(setq n (sslength ss))
(while (setq e (ssname ss (setq n (1- n))))
(setq l (cons e l))
)
)

<<

Filename: 195444_wo2pl.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 195473
Tên lệnh: hb hbl hatchb
Nhờ viết lisp tạo nhanh wipeout

Tôi nói khả dĩ với Hatch, nghĩa là hy vọng có thể lấy boundary của nó được, chứ chưa thử.
Cái này của Jimmy Bergmark hình như lấy được. Tôi mới test sơ qua thì thấy OK, chưa nghiên cứu kỹ. Detailing nghiên cứu xem nhé. Lệnh là HB.

Còn thằng block, để nghiên cứu xem sao, nhưng chắc khó.

Filename: 195473_hb_hbl_hatchb.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 195501
Tên lệnh: ha
Lisp xác định vị trí tương đối giữa Line và Plane trong không gian
Nhằm hoàn thiện các lisp xác định vị trí tương đối giữa điểm, đường thẳng, mặt phẳng trong không gian, xin gởi forum lisp xác định vị trí tương đối giữa đường thẳng và mặt phẳng trong không gian.
Nếu Line và Plane giao nhau thì giao điểm sẽ được vẽ.

Filename: 195501_ha.lsp
Tác giả: gp14
Bài viết gốc: 16612
Tên lệnh: cd
Cho em hỏi mấy câu hỏi về Cad?

1) bạn dùng đoạn lisp này để cắt dim lệnh là CD

2) Bạn thử bỏ chế độ snap (f9)
3)Muốn biết các lệnh thì bạn chỉ việc click đúp vào file lisp đó rồi xem thôi.

Filename: 16612_cd.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 195522
Tên lệnh: ha
Lisp xác định vị trí tương đối giữa Point và Plane trong không gian
Tiếp tục là Lisp xác định vị trí tương đối giữa Point và Plane. Khi Ponit không thuộc Plane thì giao điểm của đường thẳng kẻ từ Point vuông góc với Plane sẽ được vẽ.

Filename: 195522_ha.lsp
Tác giả: Tue_NV
Bài viết gốc: 118866
Tên lệnh: cbs
Undo trong quá trình chạy lisp

Chào buổi sáng :leluoi:

Filename: 118866_cbs.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 195547
Tên lệnh: ha
Lisp xác định vị trí tương đối giữa Plane và Plane trong không gian
Đây là lisp cuối cùng trong bộ lisp dùng để xác định vị trí tương đối giữa Point, Line, Plane trong không gian.
Lisp này dùng để xác định vị trí tương đối giữa 2 Plane trong không gian. Nếu chúng giao nhau thì giao tuyến sẽ được vẽ.

Filename: 195547_ha.lsp
Tác giả: minhtu2004
Bài viết gốc: 195561
Tên lệnh: tg
Lisp tính tổng độ dài đoạn thẳng.
-Mình tìm trên diễn đàn có lisp tính độ dài các đoạn thẳng và có chỉnh sửa lại theo nhu cầu công việc. Nhưng có 1 điểm không biết phải làm sao để làm tròn số lên 0.5m.
VD: Tổng độ dài các đoạn thẳng là 19213m mình muốn làm tròn lên 19500m.Còn 19501m thì làm tròn lên 20000m. Tóm lại là làm tròn từ 001--->499 = 500 và từ 501--->999 =1000

;; free lisp from cadviet.com
;;; this lisp was...
>>
-Mình tìm trên diễn đàn có lisp tính độ dài các đoạn thẳng và có chỉnh sửa lại theo nhu cầu công việc. Nhưng có 1 điểm không biết phải làm sao để làm tròn số lên 0.5m.
VD: Tổng độ dài các đoạn thẳng là 19213m mình muốn làm tròn lên 19500m.Còn 19501m thì làm tròn lên 20000m. Tóm lại là làm tròn từ 001--->499 = 500 và từ 501--->999 =1000

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=3778
(defun add_mline ()
(foreach e_record_sub e_record
(cond ((= 10 (car e_record_sub))
(setq pt1 (cdr e_record_sub)
mline_len 0.0
)
)
((= 11 (car e_record_sub))
(setq pt2 (cdr e_record_sub)
mline_len (+ mline_len (distance pt2 pt1))
pt1 pt2
)
)
)
)
(setq tot_len (+ tot_len mline_len))
(ssdel e_name ss)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun C:tg (/ tot_len ss e_name e_record e_type)
(setq tot_len 0.0)
(setq ss (ssget))
(if (null ss)
(exit)
)
(while (> (sslength ss) 0)
(setq e_name (ssname ss 0))
(setq e_record (entget e_name))
(setq e_type (cdr (assoc '0 e_record)))
(cond ((wcmatch e_type "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")
(command "lengthen" e_name "")
(setq tot_len (+ tot_len (getvar "PERIMETER")))
(ssdel e_name ss)
)
((wcmatch e_type "MLINE") (add_mline))
(e_type (ssdel e_name ss))
)
)
(setq p (getpoint "\n Chon diem nhap ket qua" ))
(setq i (getreal "\n Chieu cao ha xuong" ))
(setq h (getreal "\n Nhap chieu cao text ket qua "))
(command "text" p h "0" (strcat(rtos tot_len 2 0)"/" (rtos i 2 0)))
;(prompt (strcat "\nTotal length is: " (rtos tot_len 2 2)))
(princ)
)
http://www.cadviet.c...3/35974_cad.dwg
Xin cám ơn mong mọi người giúp đỡ.
<<

Filename: 195561_tg.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 195409
Tên lệnh: ha1
Nhờ viết lisp tạo nhanh wipeout
Quick code

P/S (4h22' ngày 05/4/2012): Hiệu chỉnh để wipeout được với cả Lwpolyline kín nhưng open.

Filename: 195409_ha1.lsp
Tác giả: Tue_NV
Bài viết gốc: 77218
Tên lệnh: dstt
Giúp mình Lisp đánh số bản vẽ này với!

Tue_NV chưa thực hiện yêu cầu ở dòng màu đỏ vì bạn chưa nói rõ từ đầu
Bạn sử dụng Lisp này cho hoàn thiện đã, có gì rồi Tue_NV sẽ hoàn thiện thêm :

Filename: 77218_dstt.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 195693
Tên lệnh: test
Giúp tạo đường viền cho đối tượng text?

Không biết cad có cách gì không, nhưng lisp thì được. Tham khảo (by Lee Mac):

Filename: 195693_test.lsp
Tác giả: bach1212
Bài viết gốc: 195705
Tên lệnh: od oc oca
Giúp mình Lisp đánh số bản vẽ này với!


;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=51710
;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=34029
;; free lisp from cadviet.com
;;;**********************************************
;;;CHUONG TRINH DANH SO THU TU VA COPY TANG DAN
;;;1. Lenh OD: danh so thu tu, tuy chon so bat dau (begin) va so gia...
>>


;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=51710
;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=34029
;; free lisp from cadviet.com
;;;**********************************************
;;;CHUONG TRINH DANH SO THU TU VA COPY TANG DAN
;;;1. Lenh OD: danh so thu tu, tuy chon so bat dau (begin) va so gia (increment) tuy y
;;;2. Lenh OC: copy tang dan tu mot so thu tu co san
;;;3. Lenh oCA: copy tang dan voi doi tuong Attribute Block
;;;Chuong trinh chap nhan cac dinh dang bang so, chu, so va chu ket hop:
;;;1, 2... A, B..., A1, A2..., AB-01, AB-02..., AB-01-C1, AB-01-C2...
;;;Cac chu gioi han trong khoang tu A den Z. Cac so khong han che
;;;Copyright by ssg - www.cadviet.com - December 2008
;;;**********************************************

;;;-------------------------------------------------
(defun etype (e) ;;;Entity Type
(cdr (assoc 0 (entget e)))
)
;;;-------------------------------------------------
(defun wtxt (txt p / sty d h) ;;;Write txt on graphic screen, defaul setting
(setq
sty (getvar "textstyle")
d (tblsearch "style" sty)
h (cdr (assoc 40 d))
)
(if (= h 0) (setq h (cdr (assoc 42 d))))
(entmake
(list (cons 0 "TEXT") (cons 7 sty) (cons 1 txt) (cons 10 p) (cons 40 h) (assoc 41 d))
)
)
;;;-------------------------------------------------
(defun incN (n dn / n2 i n1) ;;;Increase number n
(setq
n2 (itoa (+ dn (atoi n)))
i (- (strlen n) (strlen n2))
)
(if (> i 0) (setq n1 (substr n 1 i)) (setq n1 ""))
(strcat n1 n2)
)
;;;-------------------------------------------------
(defun incC (c / i c1 c2) ;;;Increase character c
(setq
i (strlen c)
c1 (substr c 1 (- i 1))
c2 (chr (1+ (ascii (substr c i 1))))
)
(if (or (= c2 "{") (= c2 "
Mình góp vui tí nhé. Trên diễn đàn đã có lisp này có thể đáp ứng được yêu cầu copy tăng dần của bạn nè.
Lệnh: OC
<<

Filename: 195705_od_oc_oca.lsp
Tác giả: Phiphi-
Bài viết gốc: 77208
Tên lệnh: xx yy cd cv
Giúp mình Lisp đánh số bản vẽ này với!
Hình như Code box có lổi, chử B và dấu ) viết liền thì cho ra hình mặt:
Thử post lại, nếu vẩn lổi thì xin CADVIET xem lại nhé:

Filename: 77208_xx_yy_cd_cv.lsp

Trang 84/330

84