Đế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

#661 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 29 April 2008 - 10:47 PM

Đây là file bản vẽ của mình, mình có các ranh mốc ct là các block att, mình muốn có tọa độ của các ranh mốc đó(chính là tọa độ) của các điểm chèn
http://www.cadviet.com/upfiles/MOC.rar

Bạn hãy post 1 file có một vài mốc đã được đánh toạ độ.
Tôi không biết ghi toạ độ vào đâu trong block của bạn.
  • 0

#662 tienlagiay_dxt

tienlagiay_dxt

    biết lệnh trim

  • Members
  • PipPipPip
  • 191 Bài viết
Điểm đánh giá: 185 (tàm tạm)

Đã gửi 29 April 2008 - 11:05 PM

Bạn hãy post 1 file có một vài mốc đã được đánh toạ độ.
Tôi không biết ghi toạ độ vào đâu trong block của bạn.

cho phép tôi gọi bác hoành cho thân thiện nhé
Bác có thể chỉ e cách làm ko
Nếu có thể thì xuất tọa dộ sangễclla2 hay nhất
Hoặc xuất tọa độ sangben6 cạnh cũng được
Em chỉ cần tọa độ để lập bảng thống kê thối mà
Công việc loại này e làm nhiều, nên nếu có lisp thì rất tiện dụng
Bác giúp em nhé
  • 0

#663 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 29 April 2008 - 11:33 PM

cho phép tôi gọi bác hoành cho thân thiện nhé
Bác có thể chỉ e cách làm ko
Nếu có thể thì xuất tọa dộ sangễclla2 hay nhất
Hoặc xuất tọa độ sangben6 cạnh cũng được
Em chỉ cần tọa độ để lập bảng thống kê thối mà
Công việc loại này e làm nhiều, nên nếu có lisp thì rất tiện dụng
Bác giúp em nhé

Bạn cần export dữ liệu ra file riêng?
hay là ghi dữ liệu vào màn hình CAD?

Bạn hãy upload file mẫu lên, thể hiện đủ 2 trạng thái. 1 trạng thái là trước khi dùng lisp, 1 trạng thái là sau khi dùng lisp.
  • 0

#664 tienlagiay_dxt

tienlagiay_dxt

    biết lệnh trim

  • Members
  • PipPipPip
  • 191 Bài viết
Điểm đánh giá: 185 (tàm tạm)

Đã gửi 30 April 2008 - 12:07 AM

Bạn cần export dữ liệu ra file riêng?
hay là ghi dữ liệu vào màn hình CAD?

Bạn hãy upload file mẫu lên, thể hiện đủ 2 trạng thái. 1 trạng thái là trước khi dùng lisp, 1 trạng thái là sau khi dùng lisp.

Đây là file mẫu http://www.cadviet.c...pfiles/vidu.rar
Thực tế công việc mình chỉ cần là 1 bảng thống kê tọa độ bên cad như file mẫu
Nếu lisp xuất được dữ kiệu sang file excel thì tốt nhất,mình sẽ dán ngược trở lại ffile cad , khi viết thuyết minh, mình sẽ sử dụng luôn được dữ liệu này
  • 0

#665 dotranduy

dotranduy

    biết zoom

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

Đã gửi 30 April 2008 - 09:48 AM

Em đang làm san nền. Em muốn xin 1 cái lips tính khối lượng. Chẳng hạn khi em tính với ô lưới 10 hoặc 20 thì khi em gõ lệnh nó sẽ hỏi chỉ ô đất cần tính, sau đó chọn các số H đào đắp. Rùi nó tự chia trung bình và nhân với diện tích ô đất. Sau đó chọn điểm đặt vòng tròn khối lượng ( trong đó có Số thứ tự ô, Diện tích ô đất, H đắp trung bình , và khối lượng đất. Em đã tìm mấy cái lips trong này nhưng lỗi ko dùng được) Bác nào làm ơn viết hộ em 1 cái lips kiểu như thế được ko ạ? Em cám ơn trước!
  • 0

#666 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 30 April 2008 - 10:25 AM

Đây là file mẫu http://www.cadviet.c...pfiles/vidu.rar
Thực tế công việc mình chỉ cần là 1 bảng thống kê tọa độ bên cad như file mẫu
Nếu lisp xuất được dữ kiệu sang file excel thì tốt nhất,mình sẽ dán ngược trở lại ffile cad , khi viết thuyết minh, mình sẽ sử dụng luôn được dữ liệu này

Lệnh THONGKEMOC dưới đây sẽ thống kê tất cả các mốc theo định dạng bảng như bạn yêu cầu. Nó save dữ liệu vào định dạng CSV mà Excel đọc được. Bạn chạy lệnh ở ACAD sau đó mở file kết quả ở Excel.

(defun c:thongkemoc()
(defun attr(ent)
(cdr (assoc 1 (entget (entnext ent))))
)
(defun tk1(ent)
(setq p (cdr (assoc 10 (entget ent)))
x (rtos (car p) 2 3)
y (rtos (cadr p) 2 3)
tenmoc (attr ent)
)
(write-line (strcat tenmoc "," x "," y) f)
)
(princ "\nThong ke moc - Free lisp from CADViet.com")
(setq ss (ssget '((0 . "INSERT")(2 . "RANH")))
fn (getfiled "Hay chon file CSV can luu!" "" "CSV" 1)
f (open fn "w")
lst (ss2ent ss)
lst (vl-sort lst '(lambda (x1 x2) (< (attr x1)(attr x2))))
)
(write-line "moc,x,y" f)
(mapcar 'tk1 lst)
(close f)
(princ)
)

(defun ss2ent(ss / sodt index lstent)
(setq
sodt (if ss (sslength ss) 0)
index 0
)
(repeat sodt
(setq ent (ssname ss index)
index (1+ index)
lstent (cons ent lstent)
)
)
(reverse lstent)
)

(princ "\na free lisp from CADViet.com - Type THONGKEMOC to start!")
(princ)


Nếu bạn muốn import file CSV vào CAD, hãy dùng lisp của bạn Crazylisp ở đây: http://www.cadviet.com/forum/AutoCAD-voi-Excel-t407.html
  • 1

#667 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 30 April 2008 - 10:27 AM

Em đang làm san nền. Em muốn xin 1 cái lips tính khối lượng. Chẳng hạn khi em tính với ô lưới 10 hoặc 20 thì khi em gõ lệnh nó sẽ hỏi chỉ ô đất cần tính, sau đó chọn các số H đào đắp. Rùi nó tự chia trung bình và nhân với diện tích ô đất. Sau đó chọn điểm đặt vòng tròn khối lượng ( trong đó có Số thứ tự ô, Diện tích ô đất, H đắp trung bình , và khối lượng đất. Em đã tìm mấy cái lips trong này nhưng lỗi ko dùng được) Bác nào làm ơn viết hộ em 1 cái lips kiểu như thế được ko ạ? Em cám ơn trước!

Bạn hãy yêu cầu bên LandCadviet: http://www.cadviet.c...lity-t2691.html
  • 0

#668 dotranduy

dotranduy

    biết zoom

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

Đã gửi 30 April 2008 - 01:01 PM

Cám ơn bác Hoành. Em sang bên đấy rồi nhưng ko thấy cái j liên quan đến san nền cả. Toàn trắc đạc mới đánh dấu, ghi tên thôi. Bác làm ơn viết cho em 1 cái lips như vậy được ko? Em tìm mãi rồi ko có cái lips nào như thế, toàn bị lỗi thôi
  • 0

#669 ph168xd

ph168xd

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 779 Bài viết
Điểm đánh giá: 309 (khá)

Đã gửi 04 May 2008 - 01:46 AM

Bác Hoành giúp em lish đưa Pline thành 2 line cách nhau đúng bằng độ dày của Pline
Làm ý bằng Pline, giờ phải vẽ lại hết thì toi. Mong Bác chỉ giúp!
  • 0

#670 traitimsat034

traitimsat034

    biết vẽ pline

  • Members
  • PipPip
  • 61 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 05 May 2008 - 11:03 AM

Bạn dùng lisp này, lệnh BRK:


;;;-------------------------------------------------------------
(defun ss2ent (ss / i Le e)
(setq i 0 Le nil)
(repeat (sslength ss)
(setq
e (ssname ss i)
Le (append Le (list e))
i (1+ i)
)
)
Le
)
;;;-------------------------------------------------------------
(defun DXF (code e) (cdr (assoc code (entget e))) )
;;;-------------------------------------------------------------
(defun get_inters(e1 e2 / p11 p12 p21 p22)
(setq
p11 (dxf 10 e1) p12 (dxf 11 e1)
p21 (dxf 10 e2) p22 (dxf 11 e2)
)
(inters p11 p12 p21 p22)
)
;;;-------------------------------------------------------------
(defun C:BRK( / ss L Lp e1 e2 p e)
(setq
ss (ssget '((0 . "LINE")))
L (ss2ent ss)
Lp nil
)
(foreach e1 L
(foreach e2 L
(setq p (get_inters e1 e2))
(if (and p (not (member p Lp))) (setq Lp (append Lp (list p))))
)
)
(foreach p Lp
(setq
ss (ssget "C" p p '((0 . "LINE")))
L (ss2ent ss)
)
(foreach e L (command "break" e p p))
)
(princ)
)
;;;-------------------------------------------------------------

anh ơi tại sao khi em dùng lisp đó độc lập thì không sao nhưng khi em copy những dòng code đó vào file lisp mà em tổng hợp thì nó lại báo lối.
Command: brk
Select objects: Specify opposite corner: 4 found
Select objects: ; error: bad argument type: listp <Entity name: 7ef92098>
em đã thử kiểm tra và làm lại nhiều lần mà vẫn bị lỗi, anh xem giúp em. cám ơn anh nhiều
  • 0

#671 namng

namng

    biết zoom

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

Đã gửi 05 May 2008 - 11:38 AM

Bac Hoành ah, Bác viết hộ em cái lisp tính khoảng cách giữa các đỉnh của pline theo phương ngang trong cai lisp dong đc không?
  • 0

#672 Duongqua

Duongqua

    Chưa sử dụng CAD

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

Đã gửi 05 May 2008 - 04:15 PM

Chao anh ban!
Mình đang thiết kế công trình nhà xưởng đầu tay, thống kê kết cấu thép bằng tay vất vả quá, anh bạn có thể cho mình xin lisp thống kê thép cho kết cấu thép được không. Mình đọc bài của anh bạn nhiều rồi, rất được, mình nghĩ là anh bạn giúp mình được Cảm ơn!
  • 0

#673 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 05 May 2008 - 05:44 PM

anh ơi tại sao khi em dùng lisp đó độc lập thì không sao nhưng khi em copy những dòng code đó vào file lisp mà em tổng hợp thì nó lại báo lối.
Command: brk
Select objects: Specify opposite corner: 4 found
Select objects: ; error: bad argument type: listp
em đã thử kiểm tra và làm lại nhiều lần mà vẫn bị lỗi, anh xem giúp em. cám ơn anh nhiều

Khả năng là lisp này và lisp bạn có sẵn bị trùng tên function nào đó.
Giải pháp: sửa tên functions trùng và các dòng code có liên quan.
Nếu bạn không tự làm được thì phải post cái lisp tổng hợp lên mình mới có thể kiểm tra và sửa giúp bạn.
  • 0

#674 hoangtrongbang

hoangtrongbang

    biết pan

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

Đã gửi 06 May 2008 - 05:55 PM

Em muốn nhờ các bác viết hộ 1 lisp nội dung như sau:
- Có 2 đường spline bất kỳ
- Chia đều mỗi đường spline thành các đoạn nhỏ có chiều dài số đoạn (n) là bằng nhau bằng nhau (Trên mối đường spline có số đoạn chia bằng nhau nhưng chiều dài của các đoạn trên mỗi đường có thể khác nhau)
- Vẽ các đường thẳng nôi liền từ điểm chia của đường này tương ứng với các điểm chia đoạn của đường kia
(Nói tóm lại là chia đều 2 đường đó ra sau đó nối lại bằng đường thẳng qua điểm đó)

Mong các bác giúp!
  • 0

#675 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 06 May 2008 - 10:13 PM

Em muốn nhờ các bác viết hộ 1 lisp nội dung như sau:
- Có 2 đường spline bất kỳ
- Chia đều mỗi đường spline thành các đoạn nhỏ có chiều dài số đoạn (n) là bằng nhau bằng nhau (Trên mối đường spline có số đoạn chia bằng nhau nhưng chiều dài của các đoạn trên mỗi đường có thể khác nhau)
- Vẽ các đường thẳng nôi liền từ điểm chia của đường này tương ứng với các điểm chia đoạn của đường kia
(Nói tóm lại là chia đều 2 đường đó ra sau đó nối lại bằng đường thẳng qua điểm đó)

Mong các bác giúp!


Lệnh RuleLine (vì giống lệnh RuleSurf của ACAD) dưới đây sẽ giúp bạn:


(defun C:ruleline (/ sc ps pe d)
(princ "\nRule Line - free lisp from cadviet.com")
(setq
sc (getint "\nSo khoang chia: ")
e1 (car (entsel "\nDuong thu nhat: "))
d (redraw e1 3)
e2 (car (entsel "\nDuong thu hai: "))
d (redraw e1 4)
glength (lambda (e) (command ".lengthen" e "") (getvar "perimeter"))
cline (lambda (a c) (entmake (list (cons 0 "line") (cons 10 a)(cons 11 c))))
d1 (/ (glength e1) sc)
d2 (/ (glength e2) sc)
l1 0.0
l2 0.0
)
(cline (vlax-curve-getStartPoint e1) (vlax-curve-getStartPoint e2))
(cline (vlax-curve-getEndPoint e1) (vlax-curve-getEndPoint e2))
(repeat (1- sc)
(setq
l1 (+ l1 d1)
l2 (+ l2 d2)
p1 (vlax-curve-getPointAtDist e1 l1)
p2 (vlax-curve-getPointAtDist e2 l2)
)
(cline p1 p2)
)
(princ)
)
(princ "\nType ruleline to start!!!")
(vl-load-com)

  • 0

#676 hoangtrongbang

hoangtrongbang

    biết pan

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

Đã gửi 07 May 2008 - 09:29 AM

[quote name='Nguyen Hoanh' date='May 6 2008, 10:13 PM' post='18065']
Lệnh RuleLine (vì giống lệnh RuleSurf của ACAD) dưới đây sẽ giúp bạn:

Đầu tiên là rất cảm ơn bác Nguyên Hoành! Vừa mới post lên bác đã giúp được rồi!
Thứ hai là em muốn thêm 1 chút tính năng cho lisp này. Bây giờ không phải là đường thẳng nối nữa mà em muốn nó là một đường cong spline nối các điểm chia đó có đc không bác. Bởi vì em muốn Rải thép trên mặt bằng của một đường cong chuyển tiếp nên các thanh thép cũng phải cong theo.
  • 0

#677 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 07 May 2008 - 01:23 PM

Đầu tiên là rất cảm ơn bác Nguyên Hoành! Vừa mới post lên bác đã giúp được rồi!
Thứ hai là em muốn thêm 1 chút tính năng cho lisp này. Bây giờ không phải là đường thẳng nối nữa mà em muốn nó là một đường cong spline nối các điểm chia đó có đc không bác. Bởi vì em muốn Rải thép trên mặt bằng của một đường cong chuyển tiếp nên các thanh thép cũng phải cong theo.


Thứ nhất là không dám nhận lời cảm ơn của bạn.
Thứ hai là không giúp bạn thêm tính năng cho lisp trên được. Bạn rút kinh nghiệm lần sau cần nêu yêu cầu cụ thể ngay từ đầu.
  • 0

#678 hoangtrongbang

hoangtrongbang

    biết pan

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

Đã gửi 07 May 2008 - 04:11 PM

Bác nói là không thể làm được, hay bác không giúp đc. Thực ra lúc đầu e cứ tưởng dùng line là được nhưng về sau check lại thì không thể dùng line mà phải dùng đường cong nó mới hợp lý nên e mới phải bổ xung ý tưởng thôi
  • 0

#679 namng

namng

    biết zoom

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

Đã gửi 12 May 2008 - 09:08 AM

Bác Hoành giúp em cái lisp này nha:
1. Chon 1 pline
2. Tính khoảng cách giữa các đỉnh của Pline vừa chọn
3. Tính toạ độ giữa các đỉnh của Pline vừa chọn.
Cám ơn bác trước.
  • 0

#680 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 12 May 2008 - 01:26 PM

Bác Hoành giúp em cái lisp này nha:
1. Chon 1 pline
2. Tính khoảng cách giữa các đỉnh của Pline vừa chọn
3. Tính toạ độ giữa các đỉnh của Pline vừa chọn.
Cám ơn bác trước.

Tính xong rồi làm thì làm gì bạn?
  • 0