Đến nội dung


Hình ảnh
* * * - - 2 Bình chọn

Viết Lisp theo yêu cầu


  • Chủ đề bị khóa Chủ đề bị khóa
2780 replies to this topic

#1901 nguyenkhoadung98

nguyenkhoadung98

    biết vẽ pline

  • Members
  • PipPip
  • 62 Bài viết
Điểm đánh giá: 2 (bình thường)

Đã gửi 23 April 2009 - 02:54 PM

Mình đã thử với tất cả các đường trong các bản vẽ của bạn thì đều ổn cả.
Bạn thử lại lisp cũ cho đường pline, nếu ổn thì sửa thủ công theo cách này.
Nếu Bạn copy vào 1 file mới thì Lisp mới chỉ sửa 4 chỗ sau:
Dòng 3: "T2/l1-" => "T1/l1-"

Dòng 38: (setq d0 (+ d0 d) )
=> (setq d0 (+ d0 d) i (fix (abs (/ len d))))
Dòng 39 : (while (setq p1 (vlax-curve-getpointatdist plObj d0))
=> (while (and (> i 0) (setq p1 (vlax-curve-getpointatdist plObj d0)))
Dòng 46: (setq d0 (+ d0 d) p0 p1 a0 a1)
=> (setq d0 (+ d0 d) p0 p1 a0 a1 i (1- i))

Như vậy thì nếu việc thoát luôn là hơi vô lý vì chương trình chưa chạy đến chỗ sửa
Nếu còn lỗi thì gửi bản vẽ vào ndtnve@yahoo.com



Cảm ơn bạn NDTNV, bạn BÌNH, bạn TUE, vanhờ các bạn mình đã giải quyết đuợc vấn đề. chúc các bạn và mọi nguời trên cadviet mạnh khoẻ và hạnh phúc
  • 0

#1902 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 23 April 2009 - 02:58 PM

có đồng chí nào giúp mình được cái này không :
mình muốn tạo một cái lisp sao cho khi quét các đối tượng line, nếu 2 line vuông góc nhau thì insert block A như hình vẽ (đương nhiên trục block sẽ theo 2 trục của line tạo ra, nếu có 2 line vuông góc nhưng dư ra thì insert block B như hình vẽ.

cám ơn các bác nhiều.
mình nghĩ cái này hơn khó đấy.


Mình tạm nghĩ ra cái lisp này, mới thử sơ sơ thôi nhưng thấy chạy cũng đc. Mình đặt tên block là 1 và 2 theo file đính kèm.
Sau khi nhập lệnh ins, chọn các line, nó sẽ tự động chèn block. Chú ý là các block có điểm insert và chiều như hình vẽ.
http://myfreefilehos...60799b99_0.03MB


(defun vg(p / ss1 v1 v2 pt1 pt2 pt3 pt4 a1 a2 a)
(setq ss1 (ssget "c" (polar p (* -0.25 pi) 1)
(polar p (* 0.75 pi) 1) '((0 . "LINE"))))
(if (= (sslength ss1) 2)
(setq v1 (ssname ss1 0)
v2 (ssname ss1 1)
pt1 (cdr (assoc 10 (entget v1)))
pt2 (cdr (assoc 11 (entget v1)))
pt3 (cdr (assoc 10 (entget v2)))
pt4 (cdr (assoc 11 (entget v2)))
a1 (angle pt1 pt2)
a2 (angle pt3 pt4)
a (abs (- a2 a1))
a (if (> a pi) (- a pi) a))
)
(if (= (sslength ss1) 2)
(list (equal a (* 0.5 pi) 0.001)
(or (equal pt1 pt3 0.001) (equal pt1 pt4 0.001) (equal pt2 pt3 0.001) (equal pt2 pt4 0.001))
(* a1 (/ 180 pi)))
(list nil nil nil))
)

;;;;

(defun c:ins()
(prompt "\nChon cac Line:")
(setq ss (ssget '((0 . "LINE")))
L nil)
(while (and ss (> (sslength ss) 0))
(setq v (ssname ss 0)
p1 (cdr (assoc 10 (entget v)))
p2 (cdr (assoc 11 (entget v))))
(if (not (member p1 L)) (setq L (cons p1 L)))
(if (not (member p2 L)) (setq L (cons p2 L)))
(ssdel v ss)
)
(foreach p L
(setq ds (vg p))
(cond ((and (car ds) (cadr ds)) (command "-insert" "1" p "" "" (last ds)))
((and (car ds) (not (cadr ds))) (command "-insert" "2" p "" "" (last ds))))
)
)

  • 0

#1903 dvdcad

dvdcad

    biết vẽ arc

  • Members
  • PipPip
  • 44 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 24 April 2009 - 03:32 PM

nhờ các bác viết giúp lisp:

viết 1 file lsp lấy thông số cua HDD, hay lấy (mã) của ổ cứng hoặc lấy ngày sản xuất của ổ cứng đó.
  • 0

#1904 khacsau

khacsau

    biết pan

  • Members
  • Pip
  • 6 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 25 April 2009 - 09:25 AM

Chào các anh!
C ác anh cho em h ỏi t ý, v ì em m ới d ùng CAD 2007 n ên v ẫn đang t ập s ự. Em c ó 1 file b ản v ẽ đ ã v ẽ tr ên Model v à Z oom v ào c ác Layout (Kho ảng 20 Layout ) V ậy l àm nh ư th ế n ào đ ể in to àn b ộ c ác Layout đ ó. Em kh ông bi ết vi ết L ISP nh ư th ế n ào.
C ảm ơn c ác anh
  • 0

#1905 binharch77

binharch77

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 372 Bài viết
Điểm đánh giá: 163 (tàm tạm)

Đã gửi 25 April 2009 - 09:45 AM

Mình tạm nghĩ ra cái lisp này, mới thử sơ sơ thôi nhưng thấy chạy cũng đc. Mình đặt tên block là 1 và 2 theo file đính kèm.
Sau khi nhập lệnh ins, chọn các line, nó sẽ tự động chèn block. Chú ý là các block có điểm insert và chiều như hình vẽ.
http://myfreefilehos...60799b99_0.03MB

sao mình không sử dụng lisp này được????, unknow command???? bác kiểm tra lại xem thử
  • 0

#1906 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 25 April 2009 - 10:14 AM

nhờ các bác viết giúp lisp:

viết 1 file lsp lấy thông số cua HDD, hay lấy (SERIAL) của ổ cứng hoặc lấy ngày sản xuất của ổ cứng đó.

Để bảo mật phải không? Cái này sẽ giúp bạn lấy serial của ổ cứng

;;;;;----------------------------------------------------------
;;; LAY SERIAL CUA O CUNG
(defun GET_DRIVE_SERIAL (Path / fsObj hSn abPth cDrv)
(vl-load-com)
(if
(and
(setq fsObj (vlax-create-object "Scripting.FileSystemObject"))
(not
(vl-catch-all-error-p
(setq abPth (vl-catch-all-apply
'vlax-invoke-method
(list fsObj 'GetAbsolutePathName Path)
)
)
)
)
)
(progn
(setq cDrv (vlax-invoke-method
fsObj
'GetDrive
(vlax-invoke-method
fsObj
'GetDriveName
abPth
)
)
)
(if
(vl-catch-all-error-p
(setq hSn (vl-catch-all-apply
'vlax-get-property
(list cDrv 'SerialNumber)
)
)
)
(progn
(vlax-release-object cDrv)
(setq hSn nil)
)
)
(vlax-release-object fsObj)
)
)
hSn
)

Path là tên ổ cứng. Ví dụ muốn lấy Serial của ổ C: (GET_DRIVE_Serial "C:")
  • 1

#1907 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 25 April 2009 - 11:34 AM

sao mình không sử dụng lisp này được????, unknow command???? bác kiểm tra lại xem thử


trong file của bạn đã có block tên "1" và "2" chưa, hoặc nếu bạn muốn đặt tên khác thì sửa dòng :
(command "-insert" "1" p "" "" (last ds)) thành (command "-insert" "ten block 1 cua ban" p "" "" (last ds))
(command "-insert" "2" p "" "" (last ds)) thành (command "-insert" "ten block 2 cua ban" p "" "" (last ds))
Nếu đã sửa tên mà vẫn còn báo lỗi thì bạn gửi file cho mình để mình xem, vì thật ra mình chưa thử nghiệm nhiều tình huống khác nhau, chỉ thử trên hình vẽ đơn giản thấy ok thì post lên luôn.
  • 0

#1908 dvdcad

dvdcad

    biết vẽ arc

  • Members
  • PipPip
  • 44 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 25 April 2009 - 01:34 PM

Để bảo mật phải không? Cái này sẽ giúp bạn lấy mã của ổ cứng

Path là tên ổ cứng. Ví dụ muốn lấy mã của ổ C: (GET_DRIVE_mã "C:")
Không hiểu sao chữ S e r i a l cứ bị chuyển thành




sao không được vậy bạn xem lại cái
vd ổ C đi
  • 0

#1909 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 25 April 2009 - 01:58 PM

sao không được vậy bạn xem lại cái
vd ổ C đi

Dvdcad xem lại đi, được rồi đấy.
  • 0

#1910 dvdcad

dvdcad

    biết vẽ arc

  • Members
  • PipPip
  • 44 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 25 April 2009 - 04:51 PM

Để bảo mật phải không? Cái này sẽ giúp bạn lấy serial của ổ cứng


;;;;;----------------------------------------------------------
;;; LAY SERIAL CUA O CUNG
(defun GET_DRIVE_SERIAL (Path / fsObj hSn abPth cDrv)
(vl-load-com)
(if
(and
(setq fsObj (vlax-create-object "Scripting.FileSystemObject"))
(not
(vl-catch-all-error-p
(setq abPth (vl-catch-all-apply
'vlax-invoke-method
(list fsObj 'GetAbsolutePathName Path)
)
)
)
)
)
(progn
(setq cDrv (vlax-invoke-method
fsObj
'GetDrive
(vlax-invoke-method
fsObj
'GetDriveName
abPth
)
)
)
(if
(vl-catch-all-error-p
(setq hSn (vl-catch-all-apply
'vlax-get-property
(list cDrv 'SerialNumber)
)
)
)
(progn
(vlax-release-object cDrv)
(setq hSn nil)
)
)
(vlax-release-object fsObj)
)
)
hSn
)

Path là tên ổ cứng. Ví dụ muốn lấy Serial của ổ C: (GET_DRIVE_Serial "C:")


  • 0

#1911 dvdcad

dvdcad

    biết vẽ arc

  • Members
  • PipPip
  • 44 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 26 April 2009 - 01:52 PM

Thanhk you nhé.

cho hỏi có cách nào lấy được ngày sản xuất của máy hay cua HDD ko hả các bác.
  • 0

#1912 khacsau

khacsau

    biết pan

  • Members
  • Pip
  • 6 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 27 April 2009 - 09:08 AM

Chào c ác anh
C ác anh cho em h ỏi t ý, v ì em m ới d ùng CAD 2007 n ên v ẫn đang t ập s ự. Em c ó 1 file b ản v ẽ đ ã v ẽ tr ên Model v à Z oom v ào c ác Layout (Kho ảng 20 Layout ) V ậy l àm nh ư th ế n ào đ ể in to àn b ộ c ác Layout đ ó(N ếu chọn từng Layout r ồ in th ì l âu l ắm). Em kh ông bi ết vi ết L ISP nh ư th ế n ào.
C ảm ơn c ác anh!
Khacsau1980@gmail.com
  • 0

#1913 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 27 April 2009 - 09:26 AM

Chào c ác anh
C ác anh cho em h ỏi t ý, v ì em m ới d ùng CAD 2007 n ên v ẫn đang t ập s ự. Em c ó 1 file b ản v ẽ đ ã v ẽ tr ên Model v à Z oom v ào c ác Layout (Kho ảng 20 Layout ) V ậy l àm nh ư th ế n ào đ ể in to àn b ộ c ác Layout đ ó(N ếu chọn từng Layout r ồ in th ì l âu l ắm). Em kh ông bi ết vi ết L ISP nh ư th ế n ào.
C ảm ơn c ác anh!
Khacsau1980@gmail.com

Cần gì lisp. Cái này chức năng sheet set manager trong Cad còn nhanh hơn nhiều. Thậm chí còn in nhiều bản vẽ mà không cần mở bản vẽ đó ra.
  • 0

#1914 khacsau

khacsau

    biết pan

  • Members
  • Pip
  • 6 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 27 April 2009 - 02:22 PM

Cần gì lisp. Cái này chức năng sheet set manager trong Cad còn nhanh hơn nhiều. Thậm chí còn in nhiều bản vẽ mà không cần mở bản vẽ đó ra.


rất là cảm ơn anh đã giúp em. Nhưng em mới học CAD, em có vào Google tìm nhưng không thấy có ai hướng dẫn dùng heet set manager. Vậy anh có thể hướng dẫn em được không?
Cảm ơn anh!
Khacsau1980@gmail.com (anh mail cho em nhe)
  • 0

#1915 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 27 April 2009 - 03:46 PM

rất là cảm ơn anh đã giúp em. Nhưng em mới học CAD, em có vào Google tìm nhưng không thấy có ai hướng dẫn dùng heet set manager. Vậy anh có thể hướng dẫn em được không?
Cảm ơn anh!
Khacsau1980@gmail.com (anh mail cho em nhe)

Anh search trên diễn đàn đi. Có đấy. Em lấy ví dụ 1 link http://www.cadviet.c...tent/view/32/1/
Nếu anh mua quyển sách Autocad mới thì nó có hướng dẫn chi tiết chức năng này mà.
  • 0

#1916 khacsau

khacsau

    biết pan

  • Members
  • Pip
  • 6 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 28 April 2009 - 09:47 AM

Anh search trên diễn đàn đi. Có đấy. Em lấy ví dụ 1 link http://www.cadviet.c...tent/view/32/1/
Nếu anh mua quyển sách Autocad mới thì nó có hướng dẫn chi tiết chức năng này mà.



Cảm ơn bạn, mình đã vào diễn đàn rồi nhưng mà không được chi tiết lắm. Mình đã dùng và thấy nó có 2 điều cần sự giúp đỡ.
Bản vẽ CAD (Mình gọi là bản gốc) gồm có 20 layout và được đánh theo số thứ tự 1/20, 2/20, 3/20......20/20
1. Mình đã tạo New sheet set, rồi New Subset 1. Nhưng khi Import Layouts as Sheets thì số thứ tự trong New Subset 1 không đúng so với bản vẽ gốc (vì thế khi in ra nó không theo thứ tự từ 1/20,2/20,3/20.....20/20 mà nó cứ lung tung cả)
2. Khi chỉnh sửa bản vẽ CAD (mình gọi là bản vẽ gốc) thì New Subset 1 không tự cập nhật theo bản vẽ gốc.

Mong các bạn giúp đỡ.
  • 0

#1917 lelenlau2

lelenlau2

    biết pan

  • Members
  • Pip
  • 9 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 28 April 2009 - 11:06 AM

Vấn đề của Mình chẳng có ai quan tâm cả a?
các bác xem thử có làm được không?
  • 0

#1918 lelenlau2

lelenlau2

    biết pan

  • Members
  • Pip
  • 9 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 28 April 2009 - 11:20 AM

vậy có lisp nào tự động nội suy cao độ trong nova không?
nội suy tại tâm đường tròn dó?
sau đây là phai cad của nó, chư nội suy thủ công lâu quá.
Anh Em nào giỏi thì hãy nghiên cứu giúp tôi cái này. cám ơn nhiều.
Chứ lên diễn đàn toàn nói gì không a?
http://www.cadviet.c...4_2009bak_3.rar
  • 0

#1919 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 28 April 2009 - 05:57 PM

Cảm ơn bạn, mình đã vào diễn đàn rồi nhưng mà không được chi tiết lắm. Mình đã dùng và thấy nó có 2 điều cần sự giúp đỡ.
Bản vẽ CAD (Mình gọi là bản gốc) gồm có 20 layout và được đánh theo số thứ tự 1/20, 2/20, 3/20......20/20
1. Mình đã tạo New sheet set, rồi New Subset 1. Nhưng khi Import Layouts as Sheets thì số thứ tự trong New Subset 1 không đúng so với bản vẽ gốc (vì thế khi in ra nó không theo thứ tự từ 1/20,2/20,3/20.....20/20 mà nó cứ lung tung cả)
2. Khi chỉnh sửa bản vẽ CAD (mình gọi là bản vẽ gốc) thì New Subset 1 không tự cập nhật theo bản vẽ gốc.

Mong các bạn giúp đỡ.

Tất cả những thắc mắc của bạn đều giải quyết được trong Sheet set. Chỉ có điều bạn chưa quen thôi. Mình có đề nghị thế này nhé: chúng ta sẽ lập một chủ đề mới riêng về sheet set manager để box này dành đất cho các bác yêu cầu lisp, ko các bác mắng chít :(
  • 0

#1920 uok_vn

uok_vn

    Chưa sử dụng CAD

  • Members
  • Pip
  • 1 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 04 May 2009 - 10:30 AM

Chào các bác !
Mình mới học CAD nên và cũng ham hố với mấy cái LISP lắm. Mình muốn có một cái LISP "cộng dồn" như thế này:
- Pick object (số bắt đầu)
- Pick object or enter a number (tham số cộng dồn)
- Chọn điểm (Là tổng của 2 tham số trên)
Nếu có tùy chọn nhiều hơn 2 tham số càng tốt.
Mình mới tham gia diễn đàn nên chưa biết nhiều. Nếu bác nào có link thì cho mình xin nha. Thanks nhiều .........
  • 0