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

Viết Lisp theo yêu cầu

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

Ong Nguyen Hoanh oi !!!!!!!!!!!!!!!!!! :unsure:

 

 

 

Mình thử nghĩ 1 cách này xem có được không nhé!

 

*chạy lệnh lisp:

 

----> lisp bắt chọn hàng dim thứ 1 (mình chọn hàng dim 3,5,3,5,3,5...)

----> lisp bắt chọn hàng dim thứ 2 (mình chọn hàng dim 10)

----> lisp bắt chọn hàng dim thứ 3 (mình chọn hàng dim 30)

----> lisp bắt nhập khoảng cách các dim (mình nhập vào 5) ----> kết thúc lệnh

 

Lisp sẽ thực hiện công việc move hàng dim3,5,3,5,3,5... cách hàng dim10 1 khoảng la` 5

và .... move hàng dim30 cách hàng dim10 1 khoảng la` 5

 

Nhìn thì hơi dài dòng nhưng thực hiện lệnh chắc cũng không lau lắm

 

 

thế cái này ông đã làm chưa vậy . Tôi khoái cái này quá . Cố lên nhé OKIE :unsure:

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ác Hoanh ơi, cho em hỏi 1 chút

cái lisp mcaltext bác post đúng ý em rùi

tuy nhiên vẫn còn 1 điểm chưa hoàn chỉnh bác à:

đó là với những số có dấu phẩy thì lisp không chạy

VD: 2,2*2=8 khi chọn thì kết quả giữ nguyên vì 2,2 là số lẻ

không phải số nguyên, chả lẽ lisp chỉ tác dụng với số

nguyên hở bá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
Bác Hoanh ơi, cho em hỏi 1 chút

cái lisp mcaltext bác post đúng ý em rùi

tuy nhiên vẫn còn 1 điểm chưa hoàn chỉnh bác à:

đó là với những số có dấu phẩy thì lisp không chạy

VD: 2,2*2=8 khi chọn thì kết quả giữ nguyên vì 2,2 là số lẻ

không phải số nguyên, chả lẽ lisp chỉ tác dụng với số

nguyên hở bác!?

 

Đơn giản là vì 2,2 không phải là số. Với máy tính thì 2.2 mới là số.

Kết quả 2.2*2=8 sẽ được tự động sửa thành 2.2*2=4.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

Em hiểu rồi!

vậy bác có thể cho em xin cái lisp có nội dung sau đựơc không:

Khi chọn dòng text thì tất cả dấu "," chuyển hết thành

dấu "." sau đó sẽ tính toán giống như mcaltext bình thường

thanks bá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

Xin chào các cao thủ LISP

Tôi có ý này ko biết là cac ae có giúp tôi ko

1.Tạo 1 lisp , cho nó chạy trong acad 1 lần Lần sau nó tự chạy

2.Nó sẽ tự động saveas copy file của mình ra 1 thư mục nào đấy (có thể là cùng 1 folder)

Các cao thủ ra tay nhé

Ngày xưa tôi có lisp này nhưng bị mất rồi Mong ae giúp tôi nhé :unsure:

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 mọi ngườii

Mình có nhiều bản vẽ trong 1 file. Mình muốn ở phần khung tên sẽ không có các chữ lặp đi lặp lại giống nhau. Nhưng khi in ra thì nó tự động in thêm những chữ đó vào đúng vị trí. Mong mọi người giúp tôi với. Cảm ơn!

Jin thì nghĩ Khung Tên nên được làm thành một Block Attrributes, như vậy thì mình có thể copy thoải mái mà không sợ sót, và chỉ cần chỉnh sửa một vài khoản mục cần thiết (tên công trình, tên bản vẽ...)

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

Anh Hoành viết hộ Jin cái lisp cho phép chọn các đường thẳng và đưa ra tổng chiều dài của chúng với, cái này mấy bác làm Điện ở chỗ Jin đang cần 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
Anh Hoành viết hộ Jin cái lisp cho phép chọn các đường thẳng và đưa ra tổng chiều dài của chúng với, cái này mấy bác làm Điện ở chỗ Jin đang cần lắm!
Jin xem ở đây: http://www.cadviet.com/forum/index.php?showtopic=763

 

Các bác có thể viết cho em 1 đoạn mã để gia hạn sử dụng cho 1 người sử dụng file vlx được không? khi hết hạn thì file đó sẽ không được sử dung cho dù sang bất cứ máy nào khác, và lisp để tạo các mã số bản quyền chương trình dùng ổ cứng làm thứ để xác nhận mã đó! tức là chương trình cài lên mỗi một ổ cứng sẽ có mã khoá riêng!
Congtrinhthuy05 xem ở đây: http://www.cadviet.com/forum/index.php?showtopic=1024

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ìm lisp dạng : chọn 2 điểm point cho ra 2 toạ độ

của điểm đó ra dạng text điểm chèn là 2 điểm point (dạng bottom left)

text có dạng (x,y) thanks các bá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
tìm lisp dạng : chọn 2 điểm point cho ra 2 toạ độ

của điểm đó ra dạng text điểm chèn là 2 điểm point (dạng bottom left)

text có dạng (x,y) thanks các bác!

không hiểu ý bạn muốn gì nữa.

Đang chờ bạn nói kỹ hơ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
@Nguyen Hoanh ơi, cho mình hỏi cái lisp của mình có làm được không vậy?

Mình đang nghiên cứu để cố gắng có được 1 lisp: chọn các đối tượng Dim rồi chương trình sẽ tự dàn các dim ra theo các khoảng bằng nhau, chứ không chọn làm nhiều lần.

 

Hy vọng sẽ sớm post lên chia sẻ với mọi ngườ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
Xin chào các cao thủ LISP

Tôi có ý này ko biết là cac ae có giúp tôi ko

1.Tạo 1 lisp , cho nó chạy trong acad 1 lần Lần sau nó tự chạy

2.Nó sẽ tự động saveas copy file của mình ra 1 thư mục nào đấy (có thể là cùng 1 folder)

Các cao thủ ra tay nhé

Ngày xưa tôi có lisp này nhưng bị mất rồi Mong ae giúp tôi nhé :unsure:

Tự động thì khó, vì để lisp thao tác sâu vào hệ thống sẽ phức tạp.

 

Nhưng nếu dùng 1 lệnh để làm điều bạn muốn thì đây:

http://www.cadviet.com/forum/index.php?showtopic=1259

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ông hiểu ý bạn muốn gì nữa.

Đang chờ bạn nói kỹ hơn!

Có nghĩa là vẽ 2 điểm point trên màn hinh

Sau đó chạy lisp hỏi chọn các point

lisp sẽ tự động nhận ra toạ độ(x,y) của các điểm đó

và chèn các toạ độ đó vào gần các điểm point

và điểm chèn text (tức là khi pick chuột vào text có 1 ô vuông màu xanh

ở góc dưới bên trái đó) ở đúng vị trí điểm point !

Bác hiểu chưa ạ!

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ó nghĩa là vẽ 2 điểm point trên màn hinh

Sau đó chạy lisp hỏi chọn các point

lisp sẽ tự động nhận ra toạ độ(x,y) của các điểm đó

và chèn các toạ độ đó vào gần các điểm point

và điểm chèn text (tức là khi pick chuột vào text có 1 ô vuông màu xanh

ở góc dưới bên trái đó) ở đúng vị trí điểm point !

Bác hiểu chưa ạ!

Tên lệnh là P2T (point to text)

 

(defun c:p2t()
 (princ "\nPoint to text - © CADViet.com")
 (setq ss (ssget '((0 . "POINT")))
caochu (getdist "\nVao chieu cao text ket qua: ")
index -1)
 (repeat (sslength ss)
   (setq p (cdr (assoc 10 (entget (ssname ss (setq index (1+ index)))))))
   (entmake (list
(cons 0 "TEXT")
(cons 10 p)
(cons 11 p)
(cons 1 (strcat "(" (rtos (car p) 2 2)  "," (rtos (cadr p) 2 2) ")"))
(cons 40 caochu)
(cons 72 4))
   )
 )
)
(princ "\nP2T - free lisp from www.cadviet.com")
(princ)

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 bác Hoanh, em đang cần 1 lisp nữa có nội dung như sau

lấy tất cả các kết quả sau dấu "=" rồi cộng lại với nhau

Ví dụ: trên màn hình có 2 text là

2+2=4

3+3=6

chạy lisp hỏi: chọn 2 text trên, nhập điểm chèn kết quả thì

sẽ cho ra là 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

À quên, phiền Bác Hoành 1 chút nữa về lisp p2t nha:

bác sửa hộ em điểm chèn dòng text là điểm góc dưới bên trái

(tức là bottom left đó) và trùng với điểm point.

thanks !

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
À quên, phiền Bác Hoành 1 chút nữa về lisp p2t nha:

bác sửa hộ em điểm chèn dòng text là điểm góc dưới bên trái

(tức là bottom left đó) và trùng với điểm point.

thanks !

bạn xóa mã (70 4) đi là đượ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

Mình đang nghiên cứu để cố gắng có được 1 lisp: chọn các đối tượng Dim rồi chương trình sẽ tự dàn các dim ra theo các khoảng bằng nhau, chứ không chọn làm nhiều lần.

 

Hy vọng sẽ sớm post lên chia sẻ với mọi người.

 

Cái này hay đấy xong chưa hả NH ơi :unsure:

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

Ae trên diễn đàn cho tôi hỏi

Có lisp nào để thay đổi dimension associate thành dimension an associate không ? Đây là bản vẽ có sẵn

Trong ACAD có cách vào bảng Option nhưng tôi thấy ko hiệu quả

Tôi bị dính mấy bản vẽ này khó chịu quá Đừng bảo tôi Explode

Nếu ko ai có thì lại nhờ ae viết hộ cái lisp này 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
Thanks bác Hoanh, em đang cần 1 lisp nữa có nội dung như sau

lấy tất cả các kết quả sau dấu "=" rồi cộng lại với nhau

Ví dụ: trên màn hình có 2 text là

2+2=4

3+3=6

chạy lisp hỏi: chọn 2 text trên, nhập điểm chèn kết quả thì

sẽ cho ra là 10

 

Lệnh là CONG.

(defun c:cong (/ tt ss tong)
 (defun congone (ent /)
   (setq tt   (entget ent)
  gt   (cdr (assoc 1 tt))
  vt   (vl-string-position (ascii "=") gt)
  vt   (cond (vt vt)
	     (t 0)
       )
  tong (+ tong
	  (atof
	    (substr
	      gt
	      (+ vt
		 2
	      )
	    )
	  )
       )
   )
 )
 (defun sudung	(ham ss / sodt index entdt soapp)
   (setq sodt	(cond
	  (ss (sslength ss))
	  (t 0)
	)
  soapp	0
  index	0
   )
   (repeat sodt
     (setq entdt (ssname ss index)
    index (1+ index)
     )
     (if (ham entdt)
(setq soapp (1+ soapp))
     )
   )
   soapp
 )
 (princ "\nCong text sau dau bang - © CADViet.com")
 (setq	ss   (ssget '((0 . "TEXT")))
tong 0.0
 )
 (sudung congone ss)
 (entmake
   (list
     (cons 0 "TEXT")
     (assoc 40 tt)
     (cons 10 (getpoint "\nVao diem chen cua text ket qua: "))
     (cons 1
    (vl-string-trim "." (vl-string-trim "0" (rtos tong 2)))
     )
   )
 )
 (princ)
)
(princ
 "\nCong text sau dau bang - CONG - free lisp from www.cadviet.com"
)
(vl-load-com)

  • 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
Ae trên diễn đàn cho tôi hỏi

Có lisp nào để thay đổi dimension associate thành dimension an associate không ? Đây là bản vẽ có sẵn

Trong ACAD có cách vào bảng Option nhưng tôi thấy ko hiệu quả

Tôi bị dính mấy bản vẽ này khó chịu quá Đừng bảo tôi Explode

Nếu ko ai có thì lại nhờ ae viết hộ cái lisp này nhé

bạn xem ở đây: http://www.cadviet.com/forum/index.php?showtopic=1220

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 đang cần 1 lisp cps nội dung như sau:

khi chạy lisp hỏi chọn đôí tượng(hoặc các đối tượng), sau đó lisp hỏi chọn thêm

1 điểm cơ sở để di chuyển, kết quả là sẽ di chuyển(move) các đối tượng trên về gốc (0,0)

sau đó xoay (rotage 3D) theo trục nằm ngang(dĩ nhiên là trục đi qua điểm cơ sở) 1 góc

90 độ.

ví dụ: trên màn hình là 1 rectang , chạy lisp chọn rectang, sau đó chọn điểm cơ sở là

điểm góc đưới bên trái của hình chữ nhật.

kết quả trên màn hình chỉ nhìn thấy 1 line(vì đã xoay 3D-90 độ rồ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
Em đang cần 1 lisp cps nội dung như sau:

khi chạy lisp hỏi chọn đôí tượng(hoặc các đối tượng), sau đó lisp hỏi chọn thêm

1 điểm cơ sở để di chuyển, kết quả là sẽ di chuyển(move) các đối tượng trên về gốc (0,0)

sau đó xoay (rotage 3D) theo trục nằm ngang(dĩ nhiên là trục đi qua điểm cơ sở) 1 góc

90 độ.

ví dụ: trên màn hình là 1 rectang , chạy lisp chọn rectang, sau đó chọn điểm cơ sở là

điểm góc đưới bên trái của hình chữ nhật.

kết quả trên màn hình chỉ nhìn thấy 1 line(vì đã xoay 3D-90 độ rồi)

 

Tên lệnh là MR3 (move & rotate3d):

 

(defun C:MR3( / ss p0)

(setq

ss (ssget)

p0 (getpoint "\nBase point:")

)

(command "move" ss "" p0 (list 0 0 0))

(if (not geom3d) (arxload "geom3d"))

(command "rotate3d" ss "" (list 0 0 0) (list 1 0 0) 90)

(princ)

)

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.

×