Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
draftsman38751

[Yêu cầu]Lisp di chuyển text của dim

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

Có bác pro nào giúp viết giúp em lisp như thế này ạh!

Yêu cầu lisp là di chuyển các text của dim sang vị trí khác

Tên lệnh: nd

-chọn 1 dim(hay nhiều dim cùng lúc)

-pick 1 điểm phía dưới đường dim thì chữ của dim(nằm trên đường kích thước) sẽ nhảy xuống phía dưới đường dim(thẳng hàng với điểm mình pick)(Nếu di chuyển được sang trái hay phải thì tốt quá)

Công việc của em nhiều khi dim phải di chuyển text (số)bằng tay từng cái một.Thanks nhiều lắ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

Có bác pro nào giúp viết giúp em lisp như thế này ạh!

Yêu cầu lisp là di chuyển các text của dim sang vị trí khác

Tên lệnh: nd

-chọn 1 dim(hay nhiều dim cùng lúc)

-pick 1 điểm phía dưới đường dim thì chữ của dim(nằm trên đường kích thước) sẽ nhảy xuống phía dưới đường dim(thẳng hàng với điểm mình pick)(Nếu di chuyển được sang trái hay phải thì tốt quá)

Công việc của em nhiều khi dim phải di chuyển text (số)bằng tay từng cái một.Thanks nhiều lắm!

Hề hề hế,

Chả biết các bác nghĩ sao chứ chơi lisp với thằng dimension này mệt lắm. Theo mình cách thông dụng và dễ dàng là bạn nên vào dimstyle để mà chỉnh sao cho nó vừa ý rồi dim sẽ tốt hơn cả bạn ạ. Việc độ chế dim rất dễ gây hậu quả khó lường. Và cũng chớ có dại dột nổ tung dim ra để chỉnh sửa. Khi đó lúc cần modify bản vẽ sẽ là một cực hình.

Hề hề hề,

Chúc bạn may 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

Hề hề hế,

Chả biết các bác nghĩ sao chứ chơi lisp với thằng dimension này mệt lắm. Theo mình cách thông dụng và dễ dàng là bạn nên vào dimstyle để mà chỉnh sao cho nó vừa ý rồi dim sẽ tốt hơn cả bạn ạ. Việc độ chế dim rất dễ gây hậu quả khó lường. Và cũng chớ có dại dột nổ tung dim ra để chỉnh sửa. Khi đó lúc cần modify bản vẽ sẽ là một cực hình.

Hề hề hề,

Chúc bạn may mắn.

Bác phamthanhbinh ơi!Lúc trước em co search trên CV thấy có lisp đổi font cho text của dim ấy!Nên em nghĩ sẽ có cách làm cho text của dim di chuyển theo ý 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

Có bác pro nào giúp viết giúp em lisp như thế này ạh!

Yêu cầu lisp là di chuyển các text của dim sang vị trí khác

Tên lệnh: nd

-chọn 1 dim(hay nhiều dim cùng lúc)

-pick 1 điểm phía dưới đường dim thì chữ của dim(nằm trên đường kích thước) sẽ nhảy xuống phía dưới đường dim(thẳng hàng với điểm mình pick)(Nếu di chuyển được sang trái hay phải thì tốt quá)

Công việc của em nhiều khi dim phải di chuyển text (số)bằng tay từng cái một.Thanks nhiều lắm!

Làm được

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Vậy bác Ketxu giúp em nhé!Thanks bác nhiều nha!

Ồ, mình cứ tếu táo vậy thôi. Dạo này bận quá, lên đâm chọt 1 2 câu rồi lại té, k có thời gian đọc kỹ bài của mọi người ^^

Lisp dịch chuyển text dim theo vecto, lệnh mtd :

http://www.cadviet.com/upfiles/3/24067_mtd_dich_chuyen_text_dim.rar

  • 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

Xin lỗi mọi người, cho mình mượn đề tài này và hỏi lệch sang một tí nhé

Cũng về cái text của Dimention,

Mình muốn xuất những cái text này sang Excel được không nhỉ (mình nghĩ chắc phải dùng LIsp rồi)

Mình Click chuột phải vào một "Aligned Dimension" để xem thuộc tính thì mình thấy trong mục Text có cái thuộc tính "Mesurement"(nó thể hiện cho cái text đó), và giờ mình muốn làm một Lisp, khi Click chọn vào các "Aligned Dimension" thì nó sẽ xuất các "Mesurement" của các "Aligned Dimension" đã chọn sang Excel (lưu ý là phải theo thứ tự đã chọn)

Mình chỉ biết cái hướng là như vậy thôi chứ cũng không biết phải viết như thế nào, mong mọi người giúp đỡ

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

Xin lỗi mọi người, cho mình mượn đề tài này và hỏi lệch sang một tí nhé

Cũng về cái text của Dimention,

Mình muốn xuất những cái text này sang Excel được không nhỉ (mình nghĩ chắc phải dùng LIsp rồi)

Mình Click chuột phải vào một "Aligned Dimension" để xem thuộc tính thì mình thấy trong mục Text có cái thuộc tính "Mesurement"(nó thể hiện cho cái text đó), và giờ mình muốn làm một Lisp, khi Click chọn vào các "Aligned Dimension" thì nó sẽ xuất các "Mesurement" của các "Aligned Dimension" đã chọn sang Excel (lưu ý là phải theo thứ tự đã chọn)

Mình chỉ biết cái hướng là như vậy thôi chứ cũng không biết phải viết như thế nào, mong mọi người giúp đỡ

 

Tôi nhớ là đã viết giùm bạn nào đó cái y/c này rồi nhưng bây giờ mò đường link không ra nên đành post lên lại cho bạn vậy.

;Doan Van Ha - CADViet.com. Xuat Text, Mtext, Dimension ra file.
(defun C:HA( / lst fn fw index x y z txt)
(princ "\nChon cac Text/Mtext/Dimension can xuat ra file...")
(setq lst (acet-ss-to-list (ssget '((0 . "*TEXT,DIMENSION"))))
      	fn (getfiled "Chon file de save" "" "csv" 1)
      	fw (open fn "w")
      	index 0 x 1 y 1 z 1)
(repeat (length lst)
 (cond
  ((= (cdr (assoc 0 (entget (nth index lst)))) "TEXT") (setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "text" (itoa x)) x (1+ x)))
  ((= (cdr (assoc 0 (entget (nth index lst)))) "MTEXT") (setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "mtext" (itoa y)) y (1+ y)))
  ((= (cdr (assoc 0 (entget (nth index lst)))) "DIMENSION")
(if (= (cdr (assoc 1 (entget (nth index lst)))) "")
	(setq txt (strcat (rtos (cdr (assoc 42 (entget (nth index lst))))) "," "dim" (itoa z)) z (1+ z))
	(setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "dim" (itoa z)) z (1+ z)))))
 (princ (strcat txt "\n") fw)
 (setq index (1+ index)))
(close fw))

  • 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
Tôi nhớ là đã viết giùm bạn nào đó cái y/c này rồi nhưng bây giờ mò đường link không ra nên đành post lên lại cho bạn vậy.
 ;Doan Van Ha - CADViet.com. Xuat Text, Mtext, Dimension ra file. (defun C:HA( / lst fn fw index x y z txt) (princ "\nChon cac Text/Mtext/Dimension can xuat ra file...") (setq lst (acet-ss-to-list (ssget '((0 . "*TEXT,DIMENSION")))) fn (getfiled "Chon file de save" "" "csv" 1) fw (open fn "w") index 0 x 1 y 1 z 1) (repeat (length lst) (cond ((= (cdr (assoc 0 (entget (nth index lst)))) "TEXT") (setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "text" (itoa x)) x (1+ x))) ((= (cdr (assoc 0 (entget (nth index lst)))) "MTEXT") (setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "mtext" (itoa y)) y (1+ y))) ((= (cdr (assoc 0 (entget (nth index lst)))) "DIMENSION") (if (= (cdr (assoc 1 (entget (nth index lst)))) "") (setq txt (strcat (rtos (cdr (assoc 42 (entget (nth index lst))))) "," "dim" (itoa z)) z (1+ z)) (setq txt (strcat (cdr (assoc 1 (entget (nth index lst)))) "," "dim" (itoa z)) z (1+ z))))) (princ (strcat txt "\n") fw) (setq index (1+ index))) (close fw)) 

Lisp của bạn rất tuyệt

Mình thử dùng "ha" cho các text có nội dung như này: D400,L30. Nó là đường kính cống tròn và chiều dài của nó.Cũng xuất ra được excel gồm 2 cột là 2 text D400 và L30

Bạn có cách nào lọc được các số 30 sau chữ L rồi tính tổng của chúng => kết quả vừa hiện trên dòng command vừa có lựa chọn thay vào 1 text có sẵn trên bản vẽ luôn không?

Giúp mình với. Mình cần lấy tổng chiều dài của nhiều đoạn cống đã được ghi chú như thế mà không phải cộng tay từng đoạn một.Thanks trước 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

Lisp của bạn rất tuyệt

Mình thử dùng "ha" cho các text có nội dung như này: D400,L30. Nó là đường kính cống tròn và chiều dài của nó.Cũng xuất ra được excel gồm 2 cột là 2 text D400 và L30

Bạn có cách nào lọc được các số 30 sau chữ L rồi tính tổng của chúng => kết quả vừa hiện trên dòng command vừa có lựa chọn thay vào 1 text có sẵn trên bản vẽ luôn không?

Giúp mình với. Mình cần lấy tổng chiều dài của nhiều đoạn cống đã được ghi chú như thế mà không phải cộng tay từng đoạn một.Thanks trước nhé

Hề hề hề,

Cách thì nhiều lắm nhưng bạn ưng cách chi???

Đây là một cách mà bạn có thể ứng dụng ngay cái lisp của bác DoanVanHa là chỉ cần bạn thêm một dấu phẩy vào sau ký tự L rồi chạy lisp là nó sẽ xuất cái số 30 thành một cột nằm sau cột chứa ký tự L. Rồi tùy bạn muốn chém hay mổ nó thế nào cũng được.

Hề hề hề.

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

Ồ, mình cứ tếu táo vậy thôi. Dạo này bận quá, lên đâm chọt 1 2 câu rồi lại té, k có thời gian đọc kỹ bài của mọi người ^^

Lisp dịch chuyển text dim theo vecto, lệnh mtd :

http://www.cadviet.c...en_text_dim.rar

 

Thanks bac Ketxu phát nha!lisp này đúng ý em rồi.nhưng file bác gửi ko phải la .lsp nên cũng hơi bất tiện.Vì em muốn gộp các file lisp mình hay dùng chung vào 1 chỗ ý 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

 

Thanks bac Ketxu phát nha!lisp này đúng ý em rồi.nhưng file bác gửi ko phải la .lsp nên cũng hơi bất tiện.Vì em muốn gộp các file lisp mình hay dùng chung vào 1 chỗ ý mà!

Cái này thực chất cũng chỉ dùng command, n mình k public ^^, nếu bạn thích thì gửi file lisp của bạn cho mình, mình giúp gộp lại trong 1 file vlx toa ^^

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ân tiện nói chuyện về dim, các anh cho em hỏi chút, trước em đã từng dùng cái lisp, gần giống cutdim nhưng mà là điều chỉnh vị trí đường ghi số kích thước chứ khôg phải đường gióng kích thước, ai biết chỉ giùm em được không ạ, cám ơn rất nhiều

các anh quản trị tha tội cho e lần này nhé, 1 lần thô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

Hề hề hề,

Cách thì nhiều lắm nhưng bạn ưng cách chi???

Đây là một cách mà bạn có thể ứng dụng ngay cái lisp của bác DoanVanHa là chỉ cần bạn thêm một dấu phẩy vào sau ký tự L rồi chạy lisp là nó sẽ xuất cái số 30 thành một cột nằm sau cột chứa ký tự L. Rồi tùy bạn muốn chém hay mổ nó thế nào cũng được.

Hề hề hề.

Dấu phẩy chỉ được phép trước chữ L thui mà bạn. Đó là cách ghi chú của bản vẽ rồi, không được sửa.

Mình cần kết quả có thể thể hiện ngay trên bản vẽ cad như đã yêu cầu, mà không cần mất các thao tác lưu ra excel rùi lại mở excel lên cộng vào mới biết kết quả được.

Hề hề, bạn có cách rùi thì làm giúp mình như yêu cầu đi 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

Dấu phẩy chỉ được phép trước chữ L thui mà bạn. Đó là cách ghi chú của bản vẽ rồi, không được sửa.

Mình cần kết quả có thể thể hiện ngay trên bản vẽ cad như đã yêu cầu, mà không cần mất các thao tác lưu ra excel rùi lại mở excel lên cộng vào mới biết kết quả được.

Hề hề, bạn có cách rùi thì làm giúp mình như yêu cầu đi mà.

 

Bạn xem lại nội quy box. Chỉ lời diễn tả suông sẽ không khiến mọi người có hứng thú để giúp bạn. Ở đây ít nhất bạn cũng phải có cái file để người ta test khi viết

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

Dấu phẩy chỉ được phép trước chữ L thui mà bạn. Đó là cách ghi chú của bản vẽ rồi, không được sửa.

Mình cần kết quả có thể thể hiện ngay trên bản vẽ cad như đã yêu cầu, mà không cần mất các thao tác lưu ra excel rùi lại mở excel lên cộng vào mới biết kết quả được.

Hề hề, bạn có cách rùi thì làm giúp mình như yêu cầu đi mà.

Hề hề hề,

1/- Cần gì thì hãy post bản vẽ lên.

2/- Ai cấm bạn thêm vào rồi sau khi add vào Excel lại xóa đi, bản vẽ vẫn gin.

3/- Bạn cần cách chi, mình có nhiều cách nên chả biết chọn cách chi cho phù hợp với sự khó tính của bạ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

Bạn "Doan Van Ha" ơi,

Cái Lisp "ha" của bạn mình tải về rồi nhưng chạy sao khong được nơi,

Đánh "ha" vào rồi thì nó bảo chọn đối tượng, mình chọn các Aligned Dimension, sau đó enter, thì không thấy gì cả

?? sao vậy hè

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

Hề hề hề,

1/- Cần gì thì hãy post bản vẽ lên.

2/- Ai cấm bạn thêm vào rồi sau khi add vào Excel lại xóa đi, bản vẽ vẫn gin.

3/- Bạn cần cách chi, mình có nhiều cách nên chả biết chọn cách chi cho phù hợp với sự khó tính của bạn.

Hic, cho em sory 2 bác phamthanhbinh ketxu nhé vì không post bản vẽ lên.

File bản vẽ của em đây ah:

http://www.cadviet.c...nh_do_tnm_2.rar

Em hứa sẽ bắt đầu học lisp để có thể.....lại được chào hỏi các bác nhiều hơn. :D. Hic, mấy câu lệnh với code để viết lisp là e dốt lém ah.

Yêu cầu em nêu ra vẫn là: không cần thêm bớt gì nữa cũng như không phải thao tác trên excel nữa bác ah, mà dùng lisp để thao tác trực tiếp trên cad để cho ra được tổng của các số sau chữ L trong chuỗi text có dạng: D600,L40

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 "Doan Van Ha" ơi,

Cái Lisp "ha" của bạn mình tải về rồi nhưng chạy sao khong được nơi,

Đánh "ha" vào rồi thì nó bảo chọn đối tượng, mình chọn các Aligned Dimension, sau đó enter, thì không thấy gì cả

?? sao vậy hè

 

Sau khi enter và bị lỗi, bạn bấm F2 và lấy kết quả đó paste lên đây xem lỗi gì, và Cad của bạn đã cài Express tool chưa hè?

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

Hic, cho em sory 2 bác phamthanhbinh ketxu nhé vì không post bản vẽ lên.

File bản vẽ của em đây ah:

http://www.cadviet.c...nh_do_tnm_2.rar

Em hứa sẽ bắt đầu học lisp để có thể.....lại được chào hỏi các bác nhiều hơn. biggrin.png. Hic, mấy câu lệnh với code để viết lisp là e dốt lém ah.

Yêu cầu em nêu ra vẫn là: không cần thêm bớt gì nữa cũng như không phải thao tác trên excel nữa bác ah, mà dùng lisp để thao tác trực tiếp trên cad để cho ra được tổng của các số sau chữ L trong chuỗi text có dạng: D600,L40

Thường thì những yêu cầu "chen ngang" như vầy ít đuợc mọi nguời quan tâm.

Tuy nhiên để động viên bạn bắt đầu học lisp và hơn nữa .. nick của bạn có 1 phần giống nick của tui ... :)

Mời bạn tham khảo :

(defun c:ctext(/ e i kqua num obj ss ssle tmp str zero); Calculator
 (vl-load-com)
 (or ssle (setq ssle 2))
 (setq tmp (getint (strcat "\nSo so le <" (itoa ssle) ">: ")))
 (if tmp (setq ssle tmp))
 (prompt "\nChon text de Cong:")
 (if (setq ss (ssget (list (cons 0 "TEXT")(cons 1 "*L*"))))
(progn
 	(setq kqua 0 i -1)
 	(while (setq e (ssname ss (setq i (1+ i))))
(setq str (vla-get-TextString (vlax-ename->vla-object e) )
  	num (substr str (+ 2(vl-string-position (ascii"L") str nil t) )))
(if (setq num (distof num))
  (setq kqua (+ kqua num))))
 	(setq zero (getvar "dimzin"))
 	(setvar "dimzin" 0)
 	(princ (strcat "\nKet qua = " (setq kqua (rtos kqua 2 ssle)) ""))
 	(if (and
	(setq obj (entsel "\nChon text de ghi ket qua hay Enter de ket thuc."))
	(setq obj (vlax-ename->vla-object (car obj)))
	(eq (vlax-get obj 'ObjectName) "AcDbText") )
(vla-put-TextString obj kqua)	)
 	(setvar "dimzin" zero)))   
 (princ))

Ps : Cách giữ lời hứa tốt nhất là 'Đừng hứa gì cả"

  • 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

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×