Jump to content
InfoFile
Tác giả: phamthanhbinh
Bài viết gốc: 106075
Tên lệnh: chsize
Viết lisp theo yêu cầu [phần 2]


Chào bạn nguyentuyen6,
Đây là lisp mình bổ sung đoạn chỉnh sửa khoảng cách giữa đường kích thước và text kích thước. Do dimension có cấu tạo rất phức tạp mà mình chưa đủ khả năng giải quyết nên lisp này chỉ có tác dụng với cái dim style mà bạn đã post nhưng trước khi chạy lisp bạn phải modìy nó thành dạng text above đường kích thước.
Bạn có thể so sánh sự khác nhau giữa...
>>

Chào bạn nguyentuyen6,
Đây là lisp mình bổ sung đoạn chỉnh sửa khoảng cách giữa đường kích thước và text kích thước. Do dimension có cấu tạo rất phức tạp mà mình chưa đủ khả năng giải quyết nên lisp này chỉ có tác dụng với cái dim style mà bạn đã post nhưng trước khi chạy lisp bạn phải modìy nó thành dạng text above đường kích thước.
Bạn có thể so sánh sự khác nhau giữa hai đoạn lisp trước và sau khi sửa để thấy rõ cách làm của mình. Từ đó bạn có thể tùy chỉnh lisp cho các dim style khác của bạn.
Do trình độ có hạn nên chưa thể giải quyết triệt để vấn đề của bạn, mong bạn thông cảm.

<<

Filename: 106075_chsize.lsp
Tác giả: conghoa
Bài viết gốc: 341749
Tên lệnh: linkt
Lisp link giá trị đối tượng

lisp này copy text từ đối tượng này sang đối tượng khác và tự động thay đổi khi đối tượng nguồn thay đổi,không chỉ chọn đc 1 đối tượng đích mà còn chọn nhiều giá trị đích hơn

Filename: 341749_linkt.lsp
Tác giả: Tot77
Bài viết gốc: 317261
Tên lệnh: tty+%C2%A0
Lisp Copy Text Cad sang Excel

Cái này cũng gần giống cái trên.

(defun c:tty  (/ ss ss1 y xlApp xlCells row col i iPt)
  (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
                           ...
>>

Cái này cũng gần giống cái trên.

(defun c:tty  (/ ss ss1 y xlApp xlCells row col i iPt)
  (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") row 0 col 1)
  (vla-put-visible xlApp :vlax-true)
  
  (while (setq ss (ssget '((0 . "*TEXT"))))      
      (setq ss (mapcar '(lambda (x) (list (vlax-get (vlax-ename->vla-object x) 'InsertionPoint)
 (vlax-ename->vla-object x))) 
      (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))    
      (while ss
(setq  ss (vl-sort ss '(lambda (x y) (> (cadr (car x)) (cadr (car y)))))
      ss1 (vl-remove-if-not '(lambda (x) (equal (cadr (caar ss)) (cadr (car x)) 0.2)) ss)
      ss1 (vl-sort ss1 '(lambda (x y) (< (caar x) (caar y))))
      ss (vl-remove-if '(lambda (x) (member x ss1)) ss)
)
(foreach z ss1
          (setq iPt (car z)
y (list (vla-get-TextString (last z))  (rtos (car iPt) 2 2)  (rtos (cadr iPt) 2 2) (rtos (caddr iPt) 2 2))
 ) 
          (if (> row 65536) (setq col 5))
          (setq i -1 row (1+ row))
          (mapcar '(lambda (x) (vlax-put-property xlCells "Item" row  (+ col (setq i (1+ i))) x)) y)
)
      )
    )
  (mapcar 'vlax-release-object (list xlApp xlCells))
  (princ)
)

<<

Filename: 317261_tty+%C2%A0.lsp
Tác giả: pphung183
Bài viết gốc: 342089
Tên lệnh: fixs fixstyle
Lisp đổi font chữ nhanh trong CAD
lisp cad có thể đánh lệnh-> pick vào text thì font time new roment dổi thành font arial ..

Filename: 342089_fixs_fixstyle.lsp
Tác giả: dckonhi1987
Bài viết gốc: 342172
Tên lệnh: 1 11 12 13 14 15 16 17 18 19
em có 2 vấn đề về lisp . kính mong các bác lúc rảnh rỗi ghé thăm giúp đỡ em với nhé
スーパーコピー 2ch 財布 ランキング

Filename: 342172_1_11_12_13_14_15_16_17_18_19.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 344324
Tên lệnh: atc
Cộng trừ nhân chia các số trong block att

Cảm ơn bạn đã nhắc nhỡ.

đây là file đính kèm: các bác xem sẽ hiểu ý em

http://www.cadviet.com/upfiles/4/136880_block_att.dwg

Hề hề hề,

Không biết cái này có đúng ý bạn chưa???

 

>>

Cảm ơn bạn đã nhắc nhỡ.

đây là file đính kèm: các bác xem sẽ hiểu ý em

http://www.cadviet.com/upfiles/4/136880_block_att.dwg

Hề hề hề,

Không biết cái này có đúng ý bạn chưa???

 

http://www.cadviet.com/upfiles/4/5194_attcalculation_1.lsp

(defun c:atc (/ goc cal e1 en ph)
(setq goc (atof (cdr (assoc 1 (entget (car (nentsel "\n Chon text goc tinh toan")))))))
(setq cal (getstring "\n Chon phep tinh toan <+ - * /> : "))
(while (setq e1 (nentsel "\n Chon text can tinh toan"))
     (setq ph (atof (cdr (assoc 1 (entget (car e1 ))))))
     (cond 
        ((= cal "+") (setq goc (+ goc ph)))
        (( = cal "-") (setq goc (- goc ph)))
        ((= cal "*") (setq goc (* goc ph)))
        ((= cal "/") (setq goc (/ goc ph)))
        (T nil)
     )
   goc
)
(setq en (car (nentsel "\n Chon text can thay the")))
(entmod (subst (cons 1 (rtos goc 2 2)) (assoc 1 (entget en)) (entget en)))
(entupd en)
)

<<

Filename: 344324_atc.lsp
Tác giả: gia_bach
Bài viết gốc: 345353
Tên lệnh: thkl
Nh? vi?t lisp thông kê giá tr? trong block ATT

Nhờ cả nhà viết giúp mình lisp thống kê các giá trị trong block ATT như sau:

- Đánh lệnh THT, select chọn các block att cần thống kê giá trị

- Chọn một giá trị trong block att để làm giá trị lọc

- Chọn số thứ tự cột để lấy giá trị tổng các att có giá trị lọc như trên

- Chọn một...

>>

Nhờ cả nhà viết giúp mình lisp thống kê các giá trị trong block ATT như sau:

- Đánh lệnh THT, select chọn các block att cần thống kê giá trị

- Chọn một giá trị trong block att để làm giá trị lọc

- Chọn số thứ tự cột để lấy giá trị tổng các att có giá trị lọc như trên

- Chọn một Dtext hoặc Mtext để gán kết quả

Mọi người xem bản vẽ sẽ hiểu được ý của mình:

http://www.cadviet.com/upfiles/4/136880_thong_ke.dwg

Block att mình có gán giá trị Field nha các bạn

Mong mọi nguời viết giúp lisp hoặc có phương án nào để tổng hợp như trên thì xin chỉ giúp

Cảm ơn mọi người trước nha!

Dùng thử Lisp này xem sao : 15454_thongkechdai.png

(defun c:ThKl (/ doc)
  (vl-load-com)
  (princ "\nChon Block can tong hop :")
  (if (ssget (list (cons 0 "INSERT")(cons 66 1)))
    (tkatt (vla-get-ActiveSelectionSet (setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object))))
	   (vla-get-modelspace doc) "DK" "TCD" "TKL" )
    (princ "\nKhong chon duoc Block thuoc tinh."))
  (princ))
(defun tkatt (ssets msp idTag val1tag val2tag / asoc h i id lst pt row tblobj val1 val2 width)
    ;;  By : Gia_Bach, www.CadViet.com 2015 ;;
  (vlax-for obj ssets
    (setq id nil val1 nil val2 nil)
    (foreach att (vlax-invoke obj 'GetAttributes)
      (cond
	( (= (vla-get-TagString att) idTag)
	  (setq id (vla-get-TextString att)) )
	( (= (vla-get-TagString att) val1Tag)
	  (setq val1 (vla-get-TextString att)) )
	( (= (vla-get-TagString att) val2Tag)
	  (setq val2 (vla-get-TextString att)) ) ))
    (if (and id (distof id 2) val1 val2(setq val1 (distof val1 2))(setq val2 (distof val2 2)))
      (if (setq asoc (assoc id lst))
	(setq lst (subst (cons id (list (+ val1 (car(cdr asoc))) (+ val2 (cadr(cdr asoc))))) asoc lst))
	(setq lst (append lst (list (cons id (list val1 val2)))) )) ))
  (cond
    ( (not lst )
      (princ "\nKhong tim duoc so lieu.") )
    ( (> (atof (substr (getvar "ACADVER") 1 4)) 16.0)
      (if (setq pt (getpoint "\nDiem dat Bang tong hop:"))
	(progn
	  (setq h 1.8 width (* 6 h)
		TblObj (vla-addtable msp (vlax-3d-point pt) (+ (length lst) 2) 4 (* 2 h) width))
	  (vla-put-regeneratetablesuppressed TblObj :vlax-true)
	  (vla-put-vertcellmargin TblObj (* 0.75 h))
	  (mapcar '(lambda (x)(vla-setTextHeight TblObj x h))
		  (list acTitleRow acHeaderRow acDataRow) )
	  (mapcar '(lambda (x)(vla-setAlignment TblObj x 8))
		  (list acTitleRow acHeaderRow acDataRow))
	  (vl-catch-all-error-p (vl-catch-all-apply (function(lambda () (vla-MergeCells TblObj 0 0 0 3)) )))
	  (vla-setText TblObj 0 0 "Bang tong hop")
	  (vla-setText TblObj 1 0 "STT")
	  (vla-setText TblObj 1 1 idTag)
	  (vla-setText TblObj 1 2 val1Tag)
	  (vla-setText TblObj 1 3 val2Tag)
	  (setq row 2 i 1)
	  (foreach pt (vl-sort lst '(lambda (x y) (< (car x) (car y))))
	    (vla-setText TblObj row 0 (itoa i))
	    (vla-setText TblObj row 1 (car pt))
	    (vla-setText TblObj row 2 (rtos(car(cdr pt))2 2))
	    (vla-setText TblObj row 3 (rtos(cadr(cdr pt))2 2))
	    (setq row (1+ row) i (1+ i))	)
	  (vla-put-regeneratetablesuppressed TblObj :vlax-false)
	  (vlax-release-object TblObj)  	  )))
    ( t
      (foreach it (vl-sort lst '(lambda (x y) (< (car x) (car y))))
	(princ (strcat "\n"(car it) " : " (rtos(car(cdr it))2 2) " : " (rtos(cadr(cdr it))2 2))))  ) )
  )

<<

Filename: 345353_thkl.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 345460
Tên lệnh: thkl
Lisp thông kê giá trị trong block ATT
- Đánh lệnh THT, select chọn các block att cần thống kê giá trị
- Chọn một giá trị trong block att để làm giá trị lọc
- Chọn số thứ tự cột để lấy giá trị tổng các att có giá trị lọc như trên
- Chọn một Dtext hoặc Mtext để gán kết quả

Filename: 345460_thkl.lsp
Tác giả: huaductiep
Bài viết gốc: 317807
Tên lệnh: tty+%C2%A0
Lisp Copy Text Cad sang Excel

Lisp #11 này rất ok rồi. Nhờ các bác sửa giúp mình thêm tính năng chia các giá trị text theo các layer khác nhau ra các cột khác nhau và vẫn theo thứ tự như vậy.

Như trong file cad mình gửi thì có 3 layer. Mình vẫn thao tác như cũ, nhưng text thuộc layer nào thì xuất kqua ra cùng lúc 3 cột khác nhau cho 3 layer. Cách xuất thì vẫn y như lisp TTY vậy.

Nếu bác làm dc vậy thì bác làm giúp mình cả...

>>

Lisp #11 này rất ok rồi. Nhờ các bác sửa giúp mình thêm tính năng chia các giá trị text theo các layer khác nhau ra các cột khác nhau và vẫn theo thứ tự như vậy.

Như trong file cad mình gửi thì có 3 layer. Mình vẫn thao tác như cũ, nhưng text thuộc layer nào thì xuất kqua ra cùng lúc 3 cột khác nhau cho 3 layer. Cách xuất thì vẫn y như lisp TTY vậy.

Nếu bác làm dc vậy thì bác làm giúp mình cả với trường hợp lisp TTX trên tại #6 kia nữa với nha. Thanks bác nhiều ạ ^^

http://www.cadviet.com/upfiles/3/64997_tty_new.dwg

 


 

Cái này cũng gần giống cái trên.

 

(defun c:tty  (/ ss ss1 y xlApp xlCells row col i iPt)
  (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") row 0 col 1)
  (vla-put-visible xlApp :vlax-true)
  
  (while (setq ss (ssget '((0 . "*TEXT"))))      
      (setq ss (mapcar '(lambda (x) (list (vlax-get (vlax-ename->vla-object x) 'InsertionPoint)
 (vlax-ename->vla-object x))) 
      (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))    
      (while ss
(setq  ss (vl-sort ss '(lambda (x y) (> (cadr (car x)) (cadr (car y)))))
      ss1 (vl-remove-if-not '(lambda (x) (equal (cadr (caar ss)) (cadr (car x)) 0.2)) ss)
      ss1 (vl-sort ss1 '(lambda (x y) (< (caar x) (caar y))))
      ss (vl-remove-if '(lambda (x) (member x ss1)) ss)
)
(foreach z ss1
          (setq iPt (car z)
y (list (vla-get-TextString (last z))  (rtos (car iPt) 2 2)  (rtos (cadr iPt) 2 2) (rtos (caddr iPt) 2 2))
 ) 
          (if (> row 65536) (setq col 5))
          (setq i -1 row (1+ row))
          (mapcar '(lambda (x) (vlax-put-property xlCells "Item" row  (+ col (setq i (1+ i))) x)) y)
)
      )
    )
  (mapcar 'vlax-release-object (list xlApp xlCells))
  (princ)
)

<<

Filename: 317807_tty+%C2%A0.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 10401
Tên lệnh:
Tính tổng diện tích các hình trên bản vẽ, "Ed" vào text sẵn có
Lệnh UDT (Update diện tích) dưới đây sẽ làm điều bạn muốn:

Filename: 10401_....+udt.lsp
Tác giả: nhimret
Bài viết gốc: 346778
Tên lệnh: 44
Lisp tịnh tiến số + chữ
Tịnh tiến giá trị text, ví dụ: cho 01 --> 02 --> 03, 101 -> 102 -> 103 v.v...

Filename: 346778_44.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 346874
Tên lệnh: aob
Lisp add đối tượng vào block
Đầu vào: Lisp : add_ob_block
Gõ Lệnh: aob
Chọn block cần chỉnh sửa -> enter
Chọn đối tượng muốn thêm vào block -> enter
Kết quả block add thêm đối tượng đã chọn như mong muốn ( Ví dụ: tỷ lệ scale của block là 1.5 theo cả 3 tọa độ X, Y, Z thì add đối tượng ngoài không gian model vào cũng vẫn là tỷ lệ đó

Filename: 346874_aob.lsp
Tác giả: VUVUZELA
Bài viết gốc: 105738
Tên lệnh: aboutvld vld
Xem giúp đoạn lisp của mình vẽ pline có nhập chiều dài và góc
"Dục Tốc Bất Đạt"
Chú cứ từ từ, khoan sử dụng menuload cái đã
Khi nào sử dụng thành thạo và câu lệnh Autolisp chạy OK thì mới lồng tiếp câu lệnh load menu
Chú thử riêng cái này anh mới sửa thử xem nhé



Chỉ cần thay đường dẫn của biến path của riêng chú vào
Bỏ các file *.DCL *.dwg của block vào là OK
Có j pm anh

Bon ... on ... n

Filename: 105738_aboutvld_vld.lsp
Tác giả: hungdlcm
Bài viết gốc: 105721
Tên lệnh: remvld aboutvld vld
Xem giúp đoạn lisp của mình vẽ pline có nhập chiều dài và góc
Các bác ui! Sau 2 ngày mày mò và nhờ sự chỉ bảo của các bác em đã làm được như dưới đây nhưng bây jờ còn 1 lỗi gì mà em mò hoài không ra mong các bác xem và chỉnh júp em.

Đầu tiên đây là 3 file của em gồm có file VLD.DCL, VLD.mns và VLD.pls:

1/ FILE VLD.DCL:


Và đây là giao diện hộp thoại để người dùng nhập số liệu của em:
>>
Các bác ui! Sau 2 ngày mày mò và nhờ sự chỉ bảo của các bác em đã làm được như dưới đây nhưng bây jờ còn 1 lỗi gì mà em mò hoài không ra mong các bác xem và chỉnh júp em.

Đầu tiên đây là 3 file của em gồm có file VLD.DCL, VLD.mns và VLD.pls:

1/ FILE VLD.DCL:


Và đây là giao diện hộp thoại để người dùng nhập số liệu của em:

http://i375.photobucket.com/albums/oo197/hung_dlcm/dialog.png

Mô tả cách thức hoạt động của chương trình:

- Khi load file VLD.pls sẽ load ra Menu Ve Luoi Dien trong ACAD.

- Chọn Menu Ve Luoi Dien -> chọn Bat Dau Ve

- Hiển thị hộp thoại. Người dùng nhập vào Khoảng Cách, nhập Hướng Góc, click vào 1 trong 2 radio button để chọn 1 loại trụ (mỗi loại trụ em đã tạo 1 block sẵn, ứng với Trụ 12m sẽ là block "Tru12" và ứng với Trụ 10m sẽ là block "Tru10").

- Click vào 1 trong 2 radio button để chọn 1 điểm chèn (Chọn "Diem 1" thì sẽ chèn block trụ điện mà người dùng đã click chọn ở bước trên vào điểm thứ nhất (P1) của đường PLine; Chọn "Diem 2" thì sẽ chèn vào điểm thứ 2 (P2) của đường Pline)

- Click OK -> người dùng click chọn điểm đầu -> vẽ đường Pline và chèn block trụ điện vào điểm mà người dùng đã chọn ở bước trên.

- Lặp lại quá trình từ mở hộp thoại nhập cho đến khi nào người dùng click Cancel.

Vấn đề vấp phải là:

- Các bước thực hiện đều OK ngoại trừ việc chèn block trụ điện vào đường Pline.

- Khi vẽ đường Pline đầu tiên thì CAD vẫn vẽ đúng đường Pline, vẫn có chèn block trụ điện nhưng chèn không đúng vị trí, block trụ điện được chèn ở 1 vị trí ngoài đường Pline (???).

- Khi hộp thoại được lặp lại để vẽ lần thứ 2 và các lần tiếp theo thì block trụ được chèn vào đúng điểm đầu của các đường Pline nhưng tùy chọn chèn block trụ điện vào "Diem 2" hoàn toàn không có tác dụng (!!!???).

=> Nói chung vấn đề nằm ở chỗ chèn block trụ điện không được đúng vị trí như ta mong muốn. Và 1 vấn đề nữa là không bít sao mà sau khi vẽ đường PLine đầu tiên vẫn hiện lên hộp thoại để nhập tiếp nhưng CAD còn hiện thêm thông báo "_VLD Unknown command "VLD". Press F1 for help." (???) Như zạ là em sai chỗ nào zạ???

Các bác copy các file của em về test thử júp em nhé!! xem júp em là em đã viết sai code chỗ nào zạ!? về phần block trụ điện vì trong bản vẽ của các bác chắc chắn sẽ chưa có 2 block là "Tru12" và "Tru10" thì các bác cứ tạo 2 block có tên y như vậy nhé, còn hình dạng block này như thế nào thì tùy các bác, miễn sao đại khái có block để test thử xem nó được chèn thế nào thui!!

Em nói dài dòng chứ thực ra các bác lúc test thử chắc sẽ hỉu "ý đồ" của em thui nhỉ! Mong các bác "ra tay nghĩa hiệp mổ xẻ" jùm cái đoạn LISP của em nhé!

Đang đợi REPLY của các bác! Trăm ngàn lần cảm ơn các bác!! :D
<<

Filename: 105721_remvld_aboutvld_vld.lsp
Tác giả: snowman.hms
Bài viết gốc: 348842
Tên lệnh: edm
Lisp đổi màu text sau khi sửa
;; Mark EDited texts,mtexs,attribs,dimensions...

(defun c:EDM (/	ent enx	s str _sel LM:editbox LM:startundo LM:endundo
	      LM:acdoc *error*
	     )

  ;; Edit Box  -  Lee Mac
  ;; Displays a DCL Edit Box to obtain a string from the user
  ;; str - [str] Initial value to display ("" for none)
  ;; Returns: [str] Edit box contents if user pressed OK, else nil

  (defun LM:editbox (str / han)
    (and (< 0 (setq han (load_dialog "acad")))
	...
>>
;; Mark EDited texts,mtexs,attribs,dimensions...

(defun c:EDM (/	ent enx	s str _sel LM:editbox LM:startundo LM:endundo
	      LM:acdoc *error*
	     )

  ;; Edit Box  -  Lee Mac
  ;; Displays a DCL Edit Box to obtain a string from the user
  ;; str - [str] Initial value to display ("" for none)
  ;; Returns: [str] Edit box contents if user pressed OK, else nil

  (defun LM:editbox (str / han)
    (and (< 0 (setq han (load_dialog "acad")))
	 (new_dialog "acad_txtedit" han)
	 (set_tile "text_edit" str)
	 (action_tile "text_edit" "(setq str $value)")
	 (if (zerop (start_dialog))
	   (setq str nil)
	 )
    )
    (if	(< 0 han)
      (unload_dialog han)
    )
    str
  )

  (defun *error* (msg)
    (LM:endundo (LM:acdoc))
    (or	(wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
	(princ (strcat "\n** Error: " msg " **"))
    )
    (princ)
  )

  ;; Start Undo  -  Lee Mac
  ;; Opens an Undo Group.

  (defun LM:startundo (doc)
    (LM:endundo doc)
    (vla-startundomark doc)
  )

  ;; End Undo  -  Lee Mac
  ;; Closes an Undo Group.

  (defun LM:endundo (doc)
    (while (= 8 (logand 8 (getvar 'undoctl)))
      (vla-endundomark doc)
    )
  )

  ;; Active Document  -  Lee Mac
  ;; Returns the VLA Active Document Object

  (defun LM:acdoc nil
    (eval (list	'defun
		'LM:acdoc
		'nil
		(vla-get-activedocument (vlax-get-acad-object))
	  )
    )
    (LM:acdoc)
  )
  ;; Select Text/Mtext/Attrib/Dimensiontext only
  (defun _sel (/ ent str)
    (while
      (progn
	(setvar 'errno 0)
	(setq ent (nentsel "\nSelect Text/Mtext/Attrib/Dimension..."))
	(cond
	  ((= 7 (getvar 'errno)) (princ "\nMissed, try again."))
	  ((= 'ename (type (car ent)))
	   (if (wcmatch	(cdr (assoc 0 (setq enx (entget (car ent)))))
			"TEXT,MTEXT,ATTRIB"
	       )
	     (progn
	       (cond
		 ((= 2 (length ent))
		  (setq ent (vlax-ename->vla-object (car ent)))
		  nil
		 )
		 ((and
		    (= 4 (length ent))
		    (= "DIMENSION"
		       (cdr
			 (assoc 0 (entget (setq ent (car (last ent)))))
		       )
		    )
		  )
		  (setq ent (vlax-ename->vla-object ent))
		  nil
		 )
		 (t)
	       )
	     )
	     (princ "\nInvalid object selected.")
	   )
	  )
	)
      )
    )
    ent
  )
  ;; ===============================================================;;
  (LM:startundo (LM:acdoc))
  (alert "Please Enter the Color code: \n(ex: 1=Red; 2=Yellow...)")
  (if (or (setq	cl (rem (getint) 256))
	  (setq cl 1)
      )
    (while (setq ent (_sel))
      (if (and (setq str (LM:editbox (setq s (cdr (assoc 1 enx)))))
	       (/= str s)
	  )
	(progn
	  (if (wcmatch (vla-get-objectname ent) "AcDb*Dimension")
	    (progn
	      (vlax-put ent 'TextOverride str)
	      (vlax-put ent 'textcolor cl)
	    )
	    (progn
	      (vlax-put ent 'textstring str)
	      (vlax-put ent 'color cl)
	    )
	  )
	)
	(princ (strcat "\nThe Text object unchanged!!!"
		       "\nPlease try again!!!"
	       )
	)
      )
    )
  )
  (LM:endundo (LM:acdoc))
  (princ)
)	 
;|«Visual LISP© Format Options»
(70 2 1 2 nil "_eof " 100 9 0 0 1 T T T T)
;*** DO NOT add text below the comment! ***|;


<<

Filename: 348842_edm.lsp
Tác giả: huunhantvxdts
Bài viết gốc: 349998
Tên lệnh: xkl
Lisp xuẩt khối lượng trắc ngang qua excel

up lại cho bạn 

(defun c:xkl (/ dem1 lstkm point kcach point1 pointtim diemtam xuongdong kt)
(setvar "CMDECHO" 0)
(defun sosanh (e1 e2 / p1 p2)
(setq p1 (car e1)
p2 (car e2)
)
(if (equal (cadr p1) (cadr p2) fuzz)
(< (car p1) (car p2))
(> (cadr p1) (cadr p2))
)
   )
   
(defun inra(lst)
(setq index 1
 oldy nil)
(foreach en lst
(if (equal oldy (cadr (car en)) fuzz)
(progn 
(if (< index 4)
 (progn 
	(princ...
>>

up lại cho bạn 

(defun c:xkl (/ dem1 lstkm point kcach point1 pointtim diemtam xuongdong kt)
(setvar "CMDECHO" 0)
(defun sosanh (e1 e2 / p1 p2)
(setq p1 (car e1)
p2 (car e2)
)
(if (equal (cadr p1) (cadr p2) fuzz)
(< (car p1) (car p2))
(> (cadr p1) (cadr p2))
)
   )
   
(defun inra(lst)
(setq index 1
 oldy nil)
(foreach en lst
(if (equal oldy (cadr (car en)) fuzz)
(progn 
(if (< index 4)
 (progn 
	(princ "," fid) 
	(setq index (1+ index))
	)
 	(progn 
	(setq index 1) 
	(princ "\n" fid)
	)
 )
    )
(progn  
(if hangdau
 (progn (setq index 1) 
(princ "\n" fid))
 (setq hangdau t))
  )
      )
      (princ (cdr en) fid)
      (setq oldy (cadr (car en)))
 )
  )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (prompt "\nChon doi tuong coc hoac ly trinh lam lop chuan.")  
  (setq dtltc (car (entsel)))
  (setq lop1 (cdr (assoc 8 (entget dtltc))))
  (prompt "\nChon doi tuong ghi dien tich lam lop chuan.")
  (setq lop2 (car (entsel)))
  (setq lop2 (cdr (assoc 8 (entget lop2))))
  (prompt "\nChon trac ngang.")
  (setq danhsachkm (acet-ss-to-list (ssget (list (cons 8 lop1) (cons 1 "K*")))))
  (setq lstkm (mapcar '(lambda (e) (cons (cdr (assoc 11 (entget e))) (cdr (assoc 1 (entget e))))) danhsachkm))
  (setq lstkm (vl-sort lstkm '(lambda(x y / tmx tmy) (setq tmx (timlt x) tmy (timlt y))
                 (or (< (car tmx) (car tmy))
    (and (= (car tmx) (car tmy)) (< (last tmx) (last tmy)))))))
  (setq ss (acet-ss-to-list (ssget "X" '((0 . "LINE")(8 . "ENTTNTUNHIEN")))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (setq fn (getfiled "Chon file de save" "" "csv" 1))
  (setq fid (open fn "w"))
(setq dem1 1)
(setq sodt (length danhsachkm)
ta 
            (chr 8)
stxoa (strcat ta ta ta ta ta ta ta ta ta ta ta ta ta ta 
            ta ta ta ta ta ta)
stxuly "Xu ly duoc: "
ptcu nil
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (foreach ent lstkm
    (setq point (car ent))
    (setq kcach (distance point (cdr (assoc 11 (entget (nth 0 ss))))))
    (foreach enxt ss
      (setq point1 (cdr (assoc 11 (entget enxt))))
      (setq toay (cadr point1))
      (if (and (< (distance point1 point) kcach) (< toay (cadr point)) (equal (car point1) (car point) 1))
(progn
 (setq pointtim (cdr (assoc 11 (entget enxt))))
 (setq kcach (distance pointtim point))
)
      )
    )
    (setq diemtam (polar pointtim (/ pi 2) (/ kcach 2)))
;;; zoom den tung trac ngang nhung khong thay no chay 
;;;; 
    (vla-ZoomCenter (vlax-get-acad-object) (vlax-3D-point diemtam) (+ kcach 50))
	;(command "ZOOM" "C" diemtam (+ kcach 20))
    (setq dd (acet-ss-to-list (ssget "C" (polar pointtim (/ pi 4) 0.1 ) (polar pointtim (/ pi -4) 0.1 ) '((0 . "LINE")(8 . "ENTTNTUNHIEN")))))
    (setq diemdau (cdr (assoc 10 (entget (car dd)))))
    (setq diemcuoi (cdr (assoc 11 (entget (car dd)))))
    (setq diemtren (polar point (/ pi 2) 50))
    (command ".RECTANGLE" diemdau diemtren)
    (setq text (ssget "C" diemdau diemtren (list (cons 0 "text"))))
    (setq lst0 (ss2ent text lop1))
    (setq lst0 (mapcar '(lambda (e) (cons (cdr (assoc 10 (entget e))) (cdr (assoc 1 (entget e))))) lst0))
    (setq lst2 (ss2ent text lop2))
    (setq lst2 (mapcar '(lambda (e) (cons (cdr (assoc 10 (entget e))) (cdr (assoc 1 (entget e))))) lst2))
    (setq
caotext (cdr (assoc 40 (entget (ssname text 0))))
fuzz (* caotext 1.0)
lst0 (vl-sort lst0 'sosanh)
lst2 (vl-sort lst2 'sosanh)
    )
(setq xuongdong 0)
(if (= kt nil) (setq kt 0))
(foreach em lst0
(if (= kt 0)
(if (= xuongdong 0)
(progn 
(princ (cdr em) fid) 
(princ "\n" fid)
(setq xuongdong 1))
 (if (= xuongdong 1)
   (progn 
	(princ (cdr em) fid) 
	(setq xuongdong 2)
	)
)
)
(if (= xuongdong 0)
(progn 
(princ "\n" fid)
(princ (cdr em) fid) 
(princ "\n" fid)
(setq xuongdong 1))
 (if (= xuongdong 1)
   (progn 
	(princ (cdr em) fid) 
	(setq xuongdong 2)
	)
)
)
)
)
(setq kt 1)
    (inra lst2)
 
    (command ".RECTANGLE" diemcuoi diemtren)
    (setq text1 (ssget "C" diemcuoi diemtren (list (cons 0 "text"))))
    (setq lst3 (ss2ent text1 lop2))
    (setq lst3 (mapcar '(lambda (e) (cons (cdr (assoc 10 (entget e))) (cdr (assoc 1 (entget e))))) lst3))
    (setq lst3 (vl-sort lst3 'sosanh))
    (inra lst3)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; xu ly phan tram chay o duoi
(setq pt (* (/ (* dem1 1.0) sodt) 100.0)
dem1 (+ dem1 1)
)
(if (/= pt ptcu)
(progn
(princ (strcat stxoa stxuly (rtos pt 2 0) "%"))
(setq ptcu pt)
)
)
;(princ "\nDang xu ly")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setvar "MODEMACRO" "DANG CHUYEN DU LIEU CHO TRONG GIAY LAT")  
)
  (if fid (close fid))
(setvar "CMDECHO" 1)
(thoi)
)
 
(defun timlt (st / tm)
  (setq tm (vl-string->list (substr (strcase (cdr st)) (+ 3 (vl-string-search "KM" (strcase (cdr st)))))))
  (read (strcat "(" (vl-list->string (subst 32 43 (subst 32 58 tm))) ")"))
)
 
(defun ss2ent (ss lop / sodt index lstent)
  (setq sodt (if ss (sslength ss) 0)
index 0)
  (repeat sodt
    (setq ent (ssname ss index))
    (setq index (1+ index))
    (if (= (cdr (assoc 8 (entget ent))) lop)
      (setq lstent (cons ent lstent))
    )
  )
  (reverse lstent)
)


<<

Filename: 349998_xkl.lsp
Tác giả: Tr.CongSon
Bài viết gốc: 350099
Tên lệnh: tinh
Lisp tính tổng text
khi text có dạng ví dụ như là @230x5 va (1328.4) thi lisp không tính được và báo lỗi. mình muốn khi khi gặp dạng @2230x5 thi lips phải hiểu la 230 nhân 5, còn số (1328.4) thi phải hiểu là số 1328.4

Filename: 350099_tinh.lsp
Tác giả: Tr.CongSon
Bài viết gốc: 350529
Tên lệnh: chon
Lisp chọn dim
chỉ giữ lại các dim style mà mình muốn giữ lại (còn các dim khác ẩn đi)
như là bên layer có layoff,layon đấy ạ
công việc này dùng Fi cũng được nhưng tốn nhiều thời gian hơn

Filename: 350529_chon.lsp
Tác giả: Tr.CongSon
Bài viết gốc: 350888
Tên lệnh: pd
Lisp ghi tọa độ pick điểm lên bản vẽ Cad
pick tọa độ điểm trên cad rồi ghi tọa độ lên bản vẽ

Filename: 350888_pd.lsp
Tác giả: phamhuy1
Bài viết gốc: 306021
Tên lệnh: ltt
Lisp hiệu chỉnh lưới trục

Em nhờ các bác Lisper chỉnh giùm lisp này cho nó chạy ạ :unsure:

(defun c:ltt (/ ng du pt pt1 pt2 b mm1 mm2 oldlst hg hg1 kh c c1 kc)
(setq oldlst (mapcar 'getvar (list "cmdecho" "osmode")))
(setvar "cmdecho" 0)
  (setq pt (getpoint "\nDiem: ")
b (getreal "\nDoan ria: ")
hg (getreal "\nSo hang: ")
hg1 (1- hg) 
kh (getreal "\nKhoang cach hang: ")
du (* hg1 kh)
c (getreal "\nSo cot: ") c1 (1- c)
kc (getreal "\nKhoang cach cot: ") ng (* c1...
>>

Em nhờ các bác Lisper chỉnh giùm lisp này cho nó chạy ạ :unsure:

(defun c:ltt (/ ng du pt pt1 pt2 b mm1 mm2 oldlst hg hg1 kh c c1 kc)
(setq oldlst (mapcar 'getvar (list "cmdecho" "osmode")))
(setvar "cmdecho" 0)
  (setq pt (getpoint "\nDiem: ")
b (getreal "\nDoan ria: ")
hg (getreal "\nSo hang: ")
hg1 (1- hg) 
kh (getreal "\nKhoang cach hang: ")
du (* hg1 kh)
c (getreal "\nSo cot: ") c1 (1- c)
kc (getreal "\nKhoang cach cot: ") ng (* c1 kc))
(setq pt1 (polar pt pi b) pt2 (polar pt 0 (+ ng b))) 
(setq pt3 (polar pt (* pi 1.5) b) pt4 (polar pt (* pi 0.5) (+ du b)))
(setvar "osmode" 0)
(command ".line" pt1 pt2 "")
(command "-array" "L" "R" hg "1" kh "")
(command ".line" pt3 pt4 "")
(command "-array" "L" "R" "1" c kc "")
(mapcar 'setvar (list "cmdecho" "osmode") oldlst)
(princ)) 

 


<<

Filename: 306021_ltt.lsp

Trang 192/330

192