Chuyển đến nội dung
Diễn đàn CADViet
Nguyen Hoanh

Viết lisp theo yêu cầu [phần 2]

Các bài được khuyến nghị

Bạn nhấn nút Reply bài viết số 340 hoặc nhấn nút Edit bài viết số 350 của bạn (nằm ngay trên bài viết này)-> chép hết code về chạy nhé

Cheers

Lỗi này lạ nhỉ. hình như lỗi này là do trình duyệt mà các bác dùng góp phần tạo ra chứ không hẳn là do cadviet. trong suốt thời gian qua và hiện giờ em không hề bị dính lỗi này, vẫn có thể copy code trực tiếp về dùng bình thường. em dùng Opera 10.

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

Bạn Tuệ ơi! Bạn có lisp nào copy các số dạng 1+; 1-... sang một vị trí khác thành 2+; 2-... không?

Mình đang vẽ đường dốc cho ô tô mà

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
Bạn Tuệ ơi! Bạn có lisp nào copy các số dạng 1+; 1-... sang một vị trí khác thành 2+; 2-... không?

Mình đang vẽ đường dốc cho ô tô mà

Bạn hãy đọc thật kỹ bài viết số 4 của Tue_NV. Nó sẽ giúp bạn làm điều đó

Bài viết đó ở đây : Bai viet so 4

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

các số này nằm trong ô vuông do mình đánh lệnh leader.

Cả ô vuông và các số dạng này là 1 block không phá được

Mình copy cả cụm này cơ bạn Tuệ ah

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

các a trên diễn đàn xin giúp e, e có text c1, c2, c3... bây giờ e muốn thay toàn bộ các text trên thành c3, c4, c5, nghĩa là tăng thêm 2 đơn vị số trong text đó

ai biết giúp e nhá! :tongue2:

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
các a trên diễn đàn xin giúp e, e có text c1, c2, c3... bây giờ e muốn thay toàn bộ các text trên thành c3, c4, c5, nghĩa là tăng thêm 2 đơn vị số trong text đó

ai biết giúp e nhá! :tongue2:

Tue_NV viết cho trường hợp tổn quát :

Chuỗi của bạn được cấu thành từ string chữ đứng đầustring số đứng sau

Ví dụ : Th-1

thì Th- : là string chữ đứng đầu

1 : là string số đứng sau :

Lisp này Tue_NV viết sẽ tăng giảm đơn vị số trong text đó :

- Nếu tăng : Nhập số

- Nếu giảm : Nhập dấu trừ đằng trước số. Ví dụ : -2

 

(defun c:upts(/ ss so i ss ent str tdau lentcuoi sthay tcuoi so)

(vl-load-com)

;copyright by Tue_NV

(prompt "\n Chon cac TEXT :")

(setq ss (ssget '((0 . "TEXT"))) i 0)

(if (not soo) (setq soo 0.0))

(setq so (getreal (strcat "\n Nhap so muon cong them :") ))

(if (not so) (setq so soo) (setq soo so))

(while (

(setq ent (entget(ssname ss i)))

(setq str (cdr(assoc 1 ent)))

(setq tdau (vl-string-right-trim "0 1 2 3 4 5 6 7 8 9" str ))

(setq lentcuoi (- (strlen str) (strlen tdau) ))

(setq tcuoi (substr str (1+ (strlen tdau)) lentcuoi))

(setq sthay (rtos (+ (atof tcuoi) so) 2 0) )

(if (= (substr tcuoi 1 1) "0")

(setq sthay (strcat "0" (rtos (+ (atof tcuoi) so) 2 0)) )

)

(setq ent (entmod (subst (cons 1 (strcat tdau sthay)) (assoc 1 ent) ent)))

(setq i (1+ i))

)

(princ)

)

  • Vote tăng 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

Em đánh lệnh leader (sử dụng lựa chọn setting/annotation/tolerance) sau đó copy dimleader đó sao cho cụm ký tự trong ô vuông tăng lên theo cấp số cộng với n=1

Vậy ai biết có lisp nào thì giúp em với nha! em sẽ mời :tongue2:

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 viết cho trường hợp tổn quát :

Chuỗi của bạn được cấu thành từ string chữ đứng đầustring số đứng sau

Ví dụ : Th-1

thì Th- : là string chữ đứng đầu

1 : là string số đứng sau :

Lisp này Tue_NV viết sẽ tăng giảm đơn vị số trong text đó :

- Nếu tăng : Nhập số

- Nếu giảm : Nhập dấu trừ đằng trước số. Ví dụ : -2

 

(defun c:upts(/ ss so i ss ent str tdau lentcuoi sthay tcuoi so)

(vl-load-com)

;copyright by Tue_NV

(prompt "\n Chon cac TEXT :")

(setq ss (ssget '((0 . "TEXT"))) i 0)

(if (not soo) (setq soo 0.0))

(setq so (getreal (strcat "\n Nhap so muon cong them <" (rtos soo 2 0) "> :") ))

(if (not so) (setq so soo) (setq soo so))

(while (< i (sslength ss))

(setq ent (entget(ssname ss i)))

(setq str (cdr(assoc 1 ent)))

(setq tdau (vl-string-right-trim "0 1 2 3 4 5 6 7 8 9" str ))

(setq lentcuoi (- (strlen str) (strlen tdau) ))

(setq tcuoi (substr str (1+ (strlen tdau)) lentcuoi))

(setq sthay (rtos (+ (atof tcuoi) so) 2 0) )

(if (= (substr tcuoi 1 1) "0")

(setq sthay (strcat "0" (rtos (+ (atof tcuoi) so) 2 0)) )

)

(setq ent (entmod (subst (cons 1 (strcat tdau sthay)) (assoc 1 ent) ent)))

(setq i (1+ i))

)

(princ)

)

Nhờ bác Tue NV viết dùm em cái lisp tác dụng tương tự như lisp trên nhưng thay vì sửa text trực tiếp thì lisp cho phép mình copy text.

Ví dụ + Có text "so1"

+ Sau khi chạy lisp sẽ hỏi : nhập số muốn cộng thêm ( ví dụ em nhập là 2)

+ Kết quả : pick điểm ta được 1 text khác là "so3", pick thêm điểm ta được text "so5"

Thx bác nhiều nhiều !!!!!!!!!!!

  • Vote tăng 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
Nhờ bác Tue NV viết dùm em cái lisp tác dụng tương tự như lisp trên nhưng thay vì sửa text trực tiếp thì lisp cho phép mình copy text.

Ví dụ + Có text "so1"

+ Sau khi chạy lisp sẽ hỏi : nhập số muốn cộng thêm ( ví dụ em nhập là 2)

+ Kết quả : pick điểm ta được 1 text khác là "so3", pick thêm điểm ta được text "so5"

Thx bác nhiều nhiều !!!!!!!!!!!

Bạn Tuệ ơi! Bạn có lisp nào copy các số dạng 1+; 1-... sang một vị trí khác thành 2+; 2-... không?

Mình đang vẽ đường dốc cho ô tô mà

Chào bạn daotac541 và bạn dlongkts

Hai bạn có thể sử dụng Lisp này đã được bác ssg viết ở đây :

Bài viết số 6

Chức năng download Lisp file của diễn đàn đôi lúc bị lỗi. Nếu sử dụng chức năng này không được bạn nhấn nút Reply bài viết của bác ssg (không sót nhé) về chạy là được

 

@daotac541 và Trần Diệu Nhân : Lisp của Tue_NV viết theo ý của Trần Diệu Nhân là cập nhật vào các Text đã có theo ý của Trần Diệu Nhân và ý tưởng của Tue_NV được viết ở bài số 358.

 

@dlongkts : Tại bạn không nói rõ từ đầu là bạn dùng Block thuộc tính. Bạn sử dụng lệnh OCA của bác ssg nhé. Tuy nhiên, Lisp của bác ssg chỉ tăng giảm số đằng sau. Ví dụ +1 tăng lên +2 -> +3 ....

Nhưng ý của bạn lại là tăng giảm số đằng trước. vdụ : 1+ tăng 2+ -> 3+ .....

Vậy thì trong đoạn Lisp OCA bạn sửa lại như sau :

Thay dòng :

(setq

c (vl-string-right-trim "0 1 2 3 4 5 6 7 8 9" cn)

-> thành dòng :

(setq

c (vl-string-left-trim "0 1 2 3 4 5 6 7 8 9" cn)

 

và thay dòng : (setq cn (strcat c (incN (vl-string-subst "" c cn) dn)))

 

->thành dòng : (setq cn (strcat (incN (vl-string-subst "" c cn) dn) c))

 

Nếu không đúng ý bạn dlongkts thì bạn dlongkts vui lòng upload file .dwg lên diễn đàn và nói rõ điều bạn muốn

 

Chúc các bạn thành công :tongue2:

  • Vote tăng 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

Bài số 358 kiếm ở đâu a Tue_NV ơi!

Cảm ơn a! lisp a viết dùng ngon lắm ạ! :tongue2:

E còn câu hỏi này nữa :

Anh Tue_NV! Giúp e cái lisp bố trí cột vào lưới với ạ!

File đính kèm đây a: http://www.mediafire.com/file/wlvw3inzdwm/lisp dat ki hieu va bo tri cot.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
Bạn Tuệ ơi đây là link: http://www.cadviet.com/upfiles/2/duongdoc1.dwg

Chào bạn dlongkts

Bạn đã đọc bài viết số 361 và làm theo ý của Tue_NV chưa?

Bản vẽ của bạn có rất nhiều file Xref nên Tue_NV mở không thấy gì cả ở Model

Bạn nên làm theo ý của Tue_NV trước đã. Có khó khăn gì post lên đây. Mình sẽ giúp

 

@Trần Diệu Nhân : Tue_NV đã đọc bài viết và cần có thời gian mới viết được Lisp này. Dạo này mình hơi bận. Bạn chịu khó chờ vậy.

  • Vote tăng 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
Bài số 358 kiếm ở đâu a Tue_NV ơi!

Cảm ơn a! lisp a viết dùng ngon lắm ạ! :tongue2:

E còn câu hỏi này nữa :

Anh Tue_NV! Giúp e cái lisp bố trí cột vào lưới với ạ!

File đính kèm đây a: http://www.mediafire.com/file/wlvw3inzdwm/lisp dat ki hieu va bo tri cot.dwg

Chào bạn Trần Diệu Nhân và bạn dlongkts.

Bài viết số 358 ở ngay trongtopic này bạn ạ. Tỷ như bài post của bạn Trần diệu nhân trên đây là bài viết số 362 của topic này.

Các bạn có thể post bản vẽ ở dạng Cad2004 được không. Như vậy sẽ có nhiều người đọc được hơn và khả năng có thể giúp các bạn cao hơn.

Thanks all

  • Vote tăng 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

....

E còn câu hỏi này nữa :

Anh Tue_NV! Giúp e cái lisp bố trí cột vào lưới với ạ!

File đính kèm đây a: http://www.mediafire.com/file/wlvw3inzdwm/lisp dat ki hieu va bo tri cot.dwg

Phù. Cuối cùng cũng hoàn thành Lisp bố trí cột vào lưới

'Trần Diệu Nhân' thử nhé

Chức năng download Lisp file của diễn đàn đôi lúc bị lỗi. Nếu sử dụng chức năng này không được bạn nhấn nút Reply bài viết của Tue_NV (không sót nhé) về chạy là được

(defun c:ltruc(/ oldos dai rong ang i j ssx ssy ltx lty ent dau cuoi ang i
minx miny maxx maxy i1 i2 i3 i4 pt1 pt2 pt3 pt4 in)
(vl-load-com)
;copyright by Tue_NV
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(Setq dai (getdist "\n chieu dai cot theo phuong X :"))
(Setq rong (getdist "\n chieu rong cot theo phuong Y :"))
(setq ang 0)
(setq ss (ssget '((0 . "*LINE"))) i 0 j 0
ssx (ssadd) ssy (ssadd) ltx nil lty nil)

(Repeat (sslength ss)
(setq ent (ssname ss i))
(setq dau (vlax-curve-getStartPoint ent))
(setq cuoi (vlax-curve-getEndPoint ent))

(if (or (= (angle dau cuoi) ang) (= (angle dau cuoi) (+ ang pi)) )
(progn
(if (= (angle dau cuoi) pi)
(progn
(setq dau (vlax-curve-getEndPoint ent))
(setq cuoi (vlax-curve-getStartPoint ent))
)
)
(setq ssx (ssadd ent ssx))
(setq ltx (append ltx (list (list dau cuoi ent))))
)
)

(if (or (= (angle dau cuoi) (+ ang (/ pi 2)) ) (= (angle dau cuoi) (+ ang (/ (* 3 pi) 2))) )
(progn
(if (= (angle dau cuoi) pi)
(progn
(setq dau (vlax-curve-getEndPoint ent))
(setq cuoi (vlax-curve-getStartPoint ent))
)
)
(setq ssy (ssadd ent ssy))
(setq lty (append lty (list (list dau cuoi ent))))
)
)
(setq i (1+ i))
)
(setq ltx (vl-sort ltx '(lambda (x1 x2) (< (cadr(car x1)) (cadr(car x2)))
)
)
)
(setq lty (vl-sort lty '(lambda (y1 y2) (< (car(car y1)) (car(car y2)))
)
)
)
(alert "\n Vui long cho mot chut. Chuong trinh se bo tri luoi cot cho ban")
;Case #1
(setq minx (car ltx) miny (car lty)
maxx (nth (1- (length ltx)) ltx)
maxy (nth (1- (length lty)) lty)
i1 (car(giaodt (caddr minx) (caddr miny)))
i2 (car(giaodt (caddr maxx) (caddr maxy)))
i3 (car(giaodt (caddr maxx) (caddr miny)))
i4 (car(giaodt (caddr maxy) (caddr minx)))
pt1 (list (+ (car i1) dai) (+ (cadr i1) rong) 0)
pt2 (list (- (car i2) dai) (- (cadr i2) rong) 0)
pt3 (list (+ (car i3) dai) (- (cadr i3) rong) 0)
pt4 (list (- (car i4) dai) (+ (cadr i4) rong) 0)
)
(vecot i1 pt1)
(vecot i2 pt2)
(vecot i3 pt3)
(vecot i4 pt4)


(setq ltx (vl-remove minx ltx)) (setq ltx (vl-remove maxx ltx))
(setq lty (vl-remove miny lty)) (setq lty (vl-remove maxy lty))

;Case #2 : Intersect minx - y
(foreach x lty
(setq in (car(giaodt (caddr minx) (caddr x)))
pt1 (list (- (car in) (/ dai 2)) (cadr in) 0)
pt2 (list (+ (car in) (/ dai 2)) (+ (cadr in) rong) 0)
)
(vecot pt1 pt2)
);foreach

;Case #3 : Intersect maxx - y
(foreach x lty
(setq in (car(giaodt (caddr maxx) (caddr x)))
pt1 (list (- (car in) (/ dai 2)) (cadr in) 0)
pt2 (list (+ (car in) (/ dai 2)) (- (cadr in) rong) 0)
)
(vecot pt1 pt2)
);foreach

;Case #4 : Intersect miny - x
(foreach x ltx
(setq in (car(giaodt (caddr miny) (caddr x)))
pt1 (list (car in) (- (cadr in) (/ rong 2)) 0)
pt2 (list (+ (car in) dai) (+ (cadr in) (/ rong 2)) 0)
)
(vecot pt1 pt2)
);foreach

;Case #5 : Intersect maxy - x
(foreach x ltx
(setq in (car(giaodt (caddr maxy) (caddr x)))
pt1 (list (car in) (+ (cadr in) (/ rong 2)) 0)
pt2 (list (- (car in) dai) (- (cadr in) (/ rong 2)) 0)
)
(vecot pt1 pt2)
);foreach

;Case #5 : Intersect maxxy - minxy
(foreach x ltx
(foreach y lty
(setq in (car(giaodt (caddr x) (caddr y)))
pt1 (list (- (car in) (/ dai 2)) (- (cadr in) (/ rong 2)) 0)
pt2 (list (+ (car in) (/ dai 2)) (+ (cadr in) (/ rong 2)) 0)
)
(vecot pt1 pt2)
);foreach
);foreach
(alert "\n Finish")
(setvar "osmode" oldos)
(command "undo" "be")
(princ)
)
;
(defun vecot(p1 p2)
(command "rectang" p1 p2)
;(command "zoom" "w" p1 p2)
(command "hatch" "solid" (entlast) "")
;(command "zoom" "P")
(princ)
)
;
(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
)

)
iluvyousmiley.gif
  • Vote tăng 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
Phù. Cuối cùng cũng hoàn thành Lisp bố trí cột vào lưới

'Trần Diệu Nhân' thử nhé

Chức năng download Lisp file của diễn đàn đôi lúc bị lỗi. Nếu sử dụng chức năng này không được bạn nhấn nút Reply bài viết của Tue_NV (không sót nhé) về chạy là được

Sao Tue_NV không dùng insert bock cho hắn khỏe 1 tí. (tạo block vuông 1x1 sau đó chèn theo tỉ lệ x,y)

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

Cảm ơn a Tue_NV nhiều lắm lắm, thật tình thì ko biết lấy gì để đền đáp công sức của a bỏ ra viết Lisp cho e. Thôi thì e xin gửi tặng 500k ủng hộ đồng bào Miền Trung khắc phục sau bão vậy!? A có thể nt số tài khoản của a cho e. Thâ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

Sao Tue_NV không dùng insert bock cho hắn khỏe 1 tí. (tạo block vuông 1x1 sau đó chèn theo tỉ lệ x,y)

Chào anh Duy và bạn Trần Diệu Nhân

Code này Tue_NV viết theo ý anh Duy

-> Tue_NV nghĩ rằng sử dụng Block chèn vào sẽ thích hợp hơn cho việc chỉnh cột sau này. Nếu bạn sử dụng Lisp BX và BY trong bộ ACV của bác Hoành có thể biết được điều đó .

"BX : di chuyển Block theo phương X

BY : di chuyển Block theo phương Y"

 

Đây là Lisp chèn Block cột với kích thước là axb vào lưới cột

a: cạnh dài cột theo phương X và b là cạnh ngắn cột theo phương Y

Code đây :

(defun c:ltruc(/ oldos dai rong ang i j ssx ssy ltx lty ent dau cuoi ang i
minx miny maxx maxy i1 i2 i3 i4 pt1 in)
(vl-load-com)
;copyright by Tue_NV
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(Setq dai (getdist "\n chieu dai cot theo phuong X :"))
(Setq rong (getdist "\n chieu rong cot theo phuong Y :"))
(setq ang 0)
(setq ss (ssget '((0 . "*LINE"))) i 0 j 0
ssx (ssadd) ssy (ssadd) ltx nil lty nil)

(Repeat (sslength ss)
(setq ent (ssname ss i))
(setq dau (vlax-curve-getStartPoint ent))
(setq cuoi (vlax-curve-getEndPoint ent))

(if (or (= (angle dau cuoi) ang) (= (angle dau cuoi) (+ ang pi)) )
(progn
(if (= (angle dau cuoi) pi)
(progn
(setq dau (vlax-curve-getEndPoint ent))
(setq cuoi (vlax-curve-getStartPoint ent))
)
)
(setq ssx (ssadd ent ssx))
(setq ltx (append ltx (list (list dau cuoi ent))))
)
)

(if (or (= (angle dau cuoi) (+ ang (/ pi 2)) ) (= (angle dau cuoi) (+ ang (/ (* 3 pi) 2))) )
(progn
(if (= (angle dau cuoi) pi)
(progn
(setq dau (vlax-curve-getEndPoint ent))
(setq cuoi (vlax-curve-getStartPoint ent))
)
)
(setq ssy (ssadd ent ssy))
(setq lty (append lty (list (list dau cuoi ent))))
)
)
(setq i (1+ i))
)
(setq ltx (vl-sort ltx '(lambda (x1 x2) (< (cadr(car x1)) (cadr(car x2)))
)
)
)
(setq lty (vl-sort lty '(lambda (y1 y2) (< (car(car y1)) (car(car y2)))
)
)
)
(alert "\n Vui long cho mot chut. Chuong trinh se bo tri luoi cot cho ban")
;Case #1
(setq minx (car ltx) miny (car lty)
maxx (nth (1- (length ltx)) ltx)
maxy (nth (1- (length lty)) lty)
i1 (car(giaodt (caddr minx) (caddr miny)))
i2 (car(giaodt (caddr maxx) (caddr maxy)))
i3 (car(giaodt (caddr maxx) (caddr miny)))
i4 (car(giaodt (caddr maxy) (caddr minx)))
pt1 (list (+ (car i1) (/ dai 2)) (+ (cadr i1) (/ rong 2)) 0)
pt2 (list (- (car i2) (/ dai 2)) (- (cadr i2) (/ rong 2)) 0)
pt3 (list (+ (car i3) (/ dai 2)) (- (cadr i3) (/ rong 2)) 0)
pt4 (list (- (car i4) (/ dai 2)) (+ (cadr i1) (/ rong 2)) 0)
)
(vecot pt1 dai rong)
(vecot pt2 dai rong)
(vecot pt3 dai rong)
(vecot pt4 dai rong)


(setq ltx (vl-remove minx ltx)) (setq ltx (vl-remove maxx ltx))
(setq lty (vl-remove miny lty)) (setq lty (vl-remove maxy lty))

;Case #2 : Intersect minx - y
(foreach x lty
(setq in (car(giaodt (caddr minx) (caddr x)))
pt1 (list (car in) (+ (cadr in) (/ rong 2)) 0)
)
(vecot pt1 dai rong)
);foreach

;Case #3 : Intersect maxx - y
(foreach x lty
(setq in (car(giaodt (caddr maxx) (caddr x)))
pt1 (list (car in) (- (cadr in) (/ rong 2)) 0)
)
(vecot pt1 dai rong)
);foreach

;Case #4 : Intersect miny - x
(foreach x ltx
(setq in (car(giaodt (caddr miny) (caddr x)))
pt1 (list (+ (car in) (/ dai 2)) (cadr in) 0)
)
(vecot pt1 dai rong)
);foreach

;Case #5 : Intersect maxy - x
(foreach x ltx
(setq in (car(giaodt (caddr maxy) (caddr x)))
pt1 (list (- (car in) (/ dai 2)) (cadr in) 0)
)
(vecot pt1 dai rong)
);foreach

;Case #5 : Intersect maxxy - minxy
(foreach x ltx
(foreach y lty
(setq in (car(giaodt (caddr x) (caddr y)))
)
(vecot in dai rong)
);foreach
);foreach
(alert "\n Finish")
(setvar "osmode" oldos)
(command "undo" "be")
(princ)
)
;
(defun vecot(p d r / el1)
(command "rectang" '(-0.5 -0.5) '(0.5 0.5))
(setq el1 (entlast))
(command "hatch" "solid" el1 "")
(if (/= (tblsearch "block" "luoicot") nil)
(command "block" "luoicot" "Y" '(0 0 0) el1 (entlast) "")
(command "block" "luoicot" '(0 0 0) el1 (entlast) "")
);if
(command "insert" "luoicot" p d r "0")
(princ)
)
;
(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
)

)
Edit : đã fix một lỗi. Các bạn chạy chưa được test lại dùm. Thanks

 

@ Trần Diệu Nhân : Bạn chỉ cần đóng góp nhiều cho diễn đàn là quý lắm rồi. Với Tue_NV chỉ cần điều đó.

Và nếu bạn muốn ủng hộ đồng bào miền Trung thì mình ủng hộ ý kiến của bạn. Miền Trung phải hứng chịu hậu quả của cơn bão thiệt tình buồn lắm cheers.gif . Mình nghĩ nếu bạn có tấm lòng thì tất nhiên bạn sẽ có cách để ủng hộ đồng bào miền Trung mà. Mình nói vậy đúng không? Thôi, mình không nên bàn chủ đề này ở đây Nhân nhé

iluvyousmiley.gif

Chỉnh sửa theo ketxu
  • Vote tăng 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

Chào bác TUE trong lisp của bác về dimstyle mẫu D100 rất hay,bác có thể chỉ cho e cách thêm dòng lệnh nào để trong tab FIT,dòng OVER DIMMENSION LINE ,WITHOUT LEADER sẽ được chọn khi nhấn lệnh dim100,mấy thông số kia vẫn như lisp gốc của bác.Thanks.

http://www.cadviet.com/forum/index.php?sho...205&st=2580

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
Chào bác TUE trong lisp của bác về dimstyle mẫu D100 rất hay,bác có thể chỉ cho e cách thêm dòng lệnh nào để trong tab FIT,dòng OVER DIMMENSION LINE ,WITHOUT LEADER sẽ được chọn khi nhấn lệnh dim100,mấy thông số kia vẫn như lisp gốc của bác.Thanks.

http://www.cadviet.com/forum/index.php?sho...205&st=2580

Bạn chèn thêm dòng này vào nhé :

"DIMFIT"   5

Hy vọng bạn tự xử lý được

:tongue2:

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
Bạn chèn thêm dòng này vào nhé :

"DIMFIT"   5

Hy vọng bạn tự xử lý được

:tongue2:

Mong bác kiểm tra lại giùm e,e đã chèn dòng này vào rồi nhưng khi mở cad lên,đánh dim100,vào dimstyle kiểm tra thì trong trong tab FIT,dòng OVER DIMMENSION LINE ,WITHOUT LEADER của mục Text Placement vẫn chưa được chọn.Chân thành cảm ơn bác 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
Mong bác kiểm tra lại giùm e,e đã chèn dòng này vào rồi nhưng khi mở cad lên,đánh dim100,vào dimstyle kiểm tra thì trong trong tab FIT,dòng OVER DIMMENSION LINE ,WITHOUT LEADER của mục Text Placement vẫn chưa được chọn.Chân thành cảm ơn bác nhiều.

Hãy chạy lại thử Code sau :

(defun c:dim100()
(command "style" "style1" "VHELVCN.TTF" "0" "1" "0" "n" "n")
(if (not (tblsearch "DImstyle" "Dim100"))
(progn
(command "dimstyle" "S" "Dim100")
(command "dim" "style" "style1"
"DIMADEC"   0                  
"DIMALT"      0                  
"DIMALTD"     3                    
"DIMALTF"     0.0394             
"DIMALTRND"   0.0000              
"DIMALTTD"    3                    
"DIMALTTZ"    0                   
"DIMALTU"     2                  
"DIMALTZ"     0                                         
"DIMASZ"      1.2000              
"DIMATFIT"    3                    
"DIMAUNIT"    0                    
"DIMAZIN"     0                    
"DIMBLK"      "_Dot"                  
"DIMBLK1"     ""        
"DIMBLK2"     ""                     
"DIMCLRD"     8                    
"DIMCLRE"     8                    
"DIMCLRT"     4 
"DIMDEC"      0                    
"DIMDLE"      0.0000              
"DIMDLI"      7.0000               
"DIMEXE"      2.0000               
"DIMEXO"      2.0000               
"DIMFRAC"     0                   
"DIMGAP"      0.5000               
"DIMJUST"     0                           
"DIMLFAC"     1.0000               
"DIMLIM"      0                 
"DIMLUNIT"    2                   
"DIMLWD"     9                    
"DIMLWE"      9                                             
"DIMRND"      0.0000               
"DIMSAH"      0                  
"DIMSCALE"    100.0000            
"DIMSD1"      0                  
"DIMSD2"      0                  
"DIMSE1"      0                 
"DIMSE2"      0                  
"DIMSOXD"     0                 
"DIMTAD"      1                   
"DIMTIH"      0                  
"DIMTIX"      1                   
"DIMTM"       0.0000               
"DIMTMOVE"    0                    
"DIMTOFL"     1                   
"DIMTOH"      0                  
"DIMTSZ"      0.0000              
"DIMTVP"      0.0000               
"DIMTXSTY"    "style1"              
 "DIMTXT"      2.5000 
"DIMFIT"         5 \e)
(command "dimstyle" "S" "Dim100" "Y")
)
)
(graphscr)
(princ)
)

  • Vote tăng 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
Chào anh Duy và bạn Trần Diệu Nhân

Code này Tue_NV viết theo ý anh Duy

-> Tue_NV nghĩ rằng sử dụng Block chèn vào sẽ thích hợp hơn cho việc chỉnh cột sau này. Nếu bạn sử dụng Lisp BX và BY trong bộ ACV của bác Hoành có thể biết được điều đó .

"BX : di chuyển Block theo phương X

BY : di chuyển Block theo phương Y"

 

Đây là Lisp chèn Block cột với kích thước là axb vào lưới cột

a: cạnh dài cột theo phương X và b là cạnh ngắn cột theo phương Y

 

Edit : đã fix một lỗi. Các bạn chạy chưa được test lại dùm. Thanks

 

Đồng ý với a Tue_NV e sẽ cố gắng đóng góp nhiều cho diễn đàn ạ...!

Lisp ltruc bị lỗi gì vậy a Tue_NV!? e dùng vẫn ok mà!?

À mà sao load lệnh ltruc thì các chế độ bắt điểm mất hết nhỉ, khắc phục được ko a Tue_NV!?

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
Khách
Chủ đề này bây giờ đã bị đóng lại để trả lời thêm.

×