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

#981 meohoang

meohoang

    biết lệnh adcenter

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

Đã gửi 13 August 2008 - 05:57 PM

em muốn nhờ các anh viết giùm cái lisp có nội dung như sau:
+tính diện tích(=cách pick hoặc chọn đường bao)
+ghi ra kết quả với mũi tên và text dạng block thuộc tính
ví dụ như:http://www.cadviet.com/upfiles/new_block_5.dwg

Bạn chú ý dùng các BB Code để có đường link sau:
http://www.cadviet.c...new_block_5.dwg
  • 0

#982 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 13 August 2008 - 08:38 PM

Nhờ bạn giúp tạo lisp làm công việc sau
Hình đã gửi
Các hình ban đầu có sẵn các đường tâm, từ đường tâm dọc đó offset sang 2 bên một khoảng tuỳ theo yêu cầu người dùng (VD là 300), nếu nhỏ hơn 300 thì ko offset nữa. Sau đó điền các kích thước vào hình
Hình đã gửi
xin cảm ơn

bạn upload file dwg lên diễn đàn đi!
  • 0

#983 konig

konig

    biết zoom

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

Đã gửi 14 August 2008 - 09:06 AM

Mình đã upload file lên rồi, bạn xem giúp.
Trong đó có 2 hình, một hình là dạng ban đầu, hình 2 là kết quả mong muốn.
Linh file:
http://www.cadviet.c...iles/EX3_01.dwg
  • 0

#984 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 14 August 2008 - 09:46 AM

Cảm ơn bác, nhân tiện đây tôi cũng muốn nhờ luôn các bác:
Tôi cũng đã tìm chủ đề về Wipeout trên diễn đàn nhưng chưa được như mong muốn.
Tôi muốn biến 1 đường tròn thành 1 Wipeout. Thực ra, đường tròn cũng tạo bởi các đoạn thẳng, nên có thể chia nó ra thành nhiều đoạn thẳng nhỏ, sau đó Join chúng lại thành 1 Pline kín và dùng lệnh Wipeout. Độ mịn của đường tròn lúc đó sẽ phụ thuộc vào số khoảng chia mà ta chọn.
Như vậy Lisp sẽ yêu cầu chọn đối tượng là đường tròn cần chuyển. Chọn số khoảng chia.và sau đó thực hiện.
Mong các bác giúp đỡ!

đoạn Lisp sau có thể giúp bạn biến các loại đường (spline, tròn, elip,...) thành PLINE (hoặc WIPEOUT nếu bạn muốn)
http://www.cadviet.c...pfiles/pllp.lsp
Lệnh là pllp. Tôi chế biến từ lisp SPPL.lsp có trên diễn đàn CADVIET.com
Chúc thành công
  • 1

#985 ngochoang8681

ngochoang8681

    Chưa sử dụng CAD

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

Đã gửi 15 August 2008 - 06:17 PM

Rất vui khi thấy mục này được mở
đi thẳng vào vấn đế luôn
rất mong các cao thủ Lisp giúp đỡ, đặc biệt là bác NGUYEN HOANH
vấn đề của mình như sau:
mình hiện có 1 bình đồ, trên đó có nhiều đường đồng mức (đường đồng mức vẽ bằng lệnh Polyline)
các đường đồng mức này đều đã có cao độ (mình làm trong Nova)
nghĩa là khi chọn 1 đường đồng mức bất kỳ và bấm Properties để xem tính chất của đối tượng trong Autocad thì ta sẽ thấy giá trị
Elevation của đường đồng mức này là khác 0 (ví dụ là 220)
Vấn đề mình hỏi là :
có cách nào để xuất toạ độ, cao độ của các điểm thuộc các đường đồng mức này ra 1 file với đuôi .txt không?
Cảm ơn vì đã đọc bài
Chào cả nhà.
  • 0

#986 dvdcad

dvdcad

    biết vẽ arc

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

Đã gửi 16 August 2008 - 02:02 PM

chào các bạn mình thấy một số phần mềm viết bằng lisp muốn chạy được thì phải cung cấp cho họ một số seri của ổ cứng sau đó người ta cấp cho mình một file LISP(ví dụ File KHOA.lsp) thì phần mềm mới chạy được. bạn nào biết nguyên lý của lisp đó (KHOA.lsp) hướng dẫn mình với hay có lsp nào post lên cho mình xem với.
  • 0

#987 Nộ Thiên

Nộ Thiên

    biết lệnh ddedit

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

Đã gửi 16 August 2008 - 02:30 PM

chào các bạn mình thấy một số phần mềm viết bằng lisp muốn chạy được thì phải cung cấp cho họ một số seri của ổ cứng sau đó người ta cấp cho mình một file LISP(ví dụ File KHOA.lsp) thì phần mềm mới chạy được. bạn nào biết nguyên lý của lisp đó (KHOA.lsp) hướng dẫn mình với hay có lsp nào post lên cho mình xem với.

Cứ đưa file của ct đó lên đi.
  • 0

#988 Đặng Vũ Hiệp

Đặng Vũ Hiệp

    biết lệnh linetype

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

Đã gửi 16 August 2008 - 02:39 PM

Xin anh em LIST cắt dim theo đường chéo, hình tròn hoặc một hình rích rắc. Nếu có rồi thì chỉ cho tôi đường dẫn cái, tôi tìm mãi không được.
http://www.cadviet.c.../Duong_cheo.jpg
http://www.cadviet.c...s/hinh_tron.jpg
http://www.cadviet.c...les/ric_rac.jpg

Xin cảm ơn!
  • 0
Nước biển mênh mông không đong đầy tình mẹ
Mây trời lồng lộng không phủ kín công cha...

#989 thiennvpecc1

thiennvpecc1

    biết vẽ line

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

Đã gửi 21 August 2008 - 08:03 AM

Trong hộp thoại, khi tính toán xong các giá trị đầu vào trong các ô thường mất đi, Làm cách nào để khi tính toán xong thi các giá trị đó vẫn được lưu lại trong ô tính toán không nhỉ (cho đỡ phải nhập lại từ đầu mà). Bác Hoang xem giúp em được không nhỉ.
  • 0

#990 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 21 August 2008 - 01:55 PM

Rất vui khi thấy mục này được mở
đi thẳng vào vấn đế luôn
rất mong các cao thủ Lisp giúp đỡ, đặc biệt là bác NGUYEN HOANH
vấn đề của mình như sau:
mình hiện có 1 bình đồ, trên đó có nhiều đường đồng mức (đường đồng mức vẽ bằng lệnh Polyline)
các đường đồng mức này đều đã có cao độ (mình làm trong Nova)
nghĩa là khi chọn 1 đường đồng mức bất kỳ và bấm Properties để xem tính chất của đối tượng trong Autocad thì ta sẽ thấy giá trị
Elevation của đường đồng mức này là khác 0 (ví dụ là 220)
Vấn đề mình hỏi là :
có cách nào để xuất toạ độ, cao độ của các điểm thuộc các đường đồng mức này ra 1 file với đuôi .txt không?

Ông trắc địa này làm sao mà phải làm bài tóan ngược vậy? Nói thiệt đi!
  • 0

#991 dh2xd

dh2xd

    biết vẽ pline

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

Đã gửi 22 August 2008 - 09:23 AM

bác nào giúp em với. Em đang cần 1 lisp với nội dung sau
Giả sử bản vẽ ta có 4 lớp : 1,2,3,4
e muốn có 1 lisp có thể mặc định lớp 2 luôn nằm trên lớp 1,3,4
Nôm na e muốn có 1 lisp quản lý hệ thống layer sao cho ta có thể mặc định 1 lớp luôn nằm trên hay nằm dưới các lớp khác giống như quản lý layer trong shop đó các bác
Mong các bác cao thủ giúp em với...........hic hic
  • 0

#992 cuongtk2

cuongtk2

    biết vẽ ellipse

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

Đã gửi 22 August 2008 - 04:42 PM

có cách nào để xuất toạ độ, cao độ của các điểm thuộc các đường đồng mức này ra 1 file với đuôi .txt không?

Làm được bạn ạ. Nhưng bạn muốn xuất 1 đường hay nhiều đường một lúc. Bạn định sắp xếp các đường đồng mức theo thứ tự như thế nào, theo thứ tự bạn chọn hay theo cao độ đường đồng mức.

Đây là ví dụ cho 1 đường đồng mức xuất ra file D:\dongmuc\dongmuc.txt , ban phải tao 1 thư mục DONGMUC ở ổ D
Các toạ độ và cao độ lấy 2 chữ số thập phân

(defun c:xuatpl ( / ent n i caodo toado file)
(setq ent (entget (car (entsel "\n Chon Pline:"))))
(setq caodo (cdr (assoc 38 ent))
caodo (rtos caodo 2 2))
(setq file (open "d:\\dongmuc\\dongmuc.txt" "w"))
(setq n (length ent)
i 0)
(write-line (strcat "Duong dong muc " caodo) file)
(while (< i n)
(if (= 10 (car (nth i ent)))
(progn
(setq toado (cdr (nth i ent))
toado (strcat (rtos (car toado) 2 2)
"\t"
(rtos (cadr toado) 2 2)
"\t"
caodo))
(write-line toado file))
)
(setq i (1+ i))
)
(close file)
)


  • 0

#993 nataca

nataca

    biết lệnh adcenter

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

Đã gửi 23 August 2008 - 08:57 AM

có cách nào để xuất toạ độ, cao độ của các điểm thuộc các đường đồng mức này ra 1 file với đuôi .txt không?

Làm được bạn ạ. Nhưng bạn muốn xuất 1 đường hay nhiều đường một lúc. Bạn định sắp xếp các đường đồng mức theo thứ tự như thế nào, theo thứ tự bạn chọn hay theo cao độ đường đồng mức.

Đây là ví dụ cho 1 đường đồng mức xuất ra file D:\dongmuc\dongmuc.txt , ban phải tao 1 thư mục DONGMUC ở ổ D
Các toạ độ và cao độ lấy 2 chữ số thập phân


Xuất ra file này để làm j nhỉ? Tôi vẫn chưa hiểu mục đích cuối cùng của bài toán này
  • 1

#994 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 23 August 2008 - 10:00 AM

Xuất ra file này để làm j nhỉ? Tôi vẫn chưa hiểu mục đích cuối cùng của bài toán này

Ngochoang là dân trắc địa, đôi khi phải làm bài tóan ngược. Nghĩa là: đường đồng mức có trước rồi mới có điểm đo. Tuy nhiên điểm đo này là điểm bổ sung cho phù hợp với mật độ đo yêu cầu.
  • 0

#995 chutuocttm

chutuocttm

    biết pan

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

Đã gửi 23 August 2008 - 03:23 PM

Các bác õi !làm õn giúp em 1 ðoạn lisp tao layer với !và cái layer ðó phải tạo sẳng với màu sắt, loại ðýờng nét,ðộ rộng nét !Có lần em thấy nhýng bây giờ em tìm hoài mà không thấy !tìm mấy trục trang mà chả thấy ! mong các bác giúp ðỡ !
Em chỉ cần 1 ðoạn tạo 1 layer thôi cũng ðýợc !
Xin cảm õn các bác !
Hic....
  • 0

#996 nguoiotanphu

nguoiotanphu

    Chưa sử dụng CAD

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

Đã gửi 23 August 2008 - 05:08 PM

Xin chào mọi người
Có ai giúp dùm tôi làm 1 hàm autolíp để xóa hay copy 1 file không phải là file ASCII được không (ví dụ như file .exe). Cám ơn rất nhiều.
nguoiotanphu.
  • 0

#997 Snowman

Snowman

    biết lệnh mirror

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

Đã gửi 23 August 2008 - 06:42 PM

có cách nào để xuất toạ độ, cao độ của các điểm thuộc các đường đồng mức này ra 1 file với đuôi .txt không?

Làm được bạn ạ. Nhưng bạn muốn xuất 1 đường hay nhiều đường một lúc. Bạn định sắp xếp các đường đồng mức theo thứ tự như thế nào, theo thứ tự bạn chọn hay theo cao độ đường đồng mức.

Đây là ví dụ cho 1 đường đồng mức xuất ra file D:\dongmuc\dongmuc.txt , ban phải tao 1 thư mục DONGMUC ở ổ D
Các toạ độ và cao độ lấy 2 chữ số thập phân

Đoạn code của bạn mới chỉ đúng cho 1 trường hợp polyline dạng LWPOLYLINE, với đối tượng dạng POLYLINE thì lệnh sẽ gặp lỗi. Và bạn nên viết thêm đoạn code để người dùng tuỳ chọn tên file, nơi lưu trữ thay vì xuất ra một file với tên cố định, khi làm nhiều lần, các file dữ liệu sẽ bị ghi đè mất.
Tôi xin đưa ra một đoạn code sau, các bác dùng thử nhé!
;;;=======================================================
;;; Ham nhan list dinh tu Polyline bao gom ca cao do
;;;
(defun Getvpl1 (ename stn / Elist rep e1 dp c)
(setq rep "C"
Elist '()
c stn
)
(setq ename (entnext ename))
(while (/= rep "SEQEND")
(setq e1 (entget ename))
(setq rep (cdr (assoc 0 e1)))
(if (/= rep "VERTEX")
(princ)
(progn
(setq dp (cdr (assoc 42 e1)))
(setq
elist (cons (cons c
(cdr (assoc 10 e1)

)
)
elist
)
)
)
)
;;end if
(setq ename (entnext ename)
c (1+ c)
)
)
;;end while
(setq elist (reverse elist))
;;kthuc
)
;;;=============================================================================

=======
;;; Ham nhan list dinh tu LWPolyline bao gom ca cao do
(defun Getvlw1 (ename stn / di i e1 elist dp c evl)
(setq e1 (entget ename))
(setq elist '()
c 1
c1 stn
evl (cdr (assoc 38 e1))
)
(while e1
(setq di (car e1))
(if (/= 10 (car di))
(princ)
(progn
(setq vlap 1
dp nil
)
(while (and e1 (/= vlap 42))
;;never null
(setq i (car e1))
(setq vlap (car i))
(if (/= vlap 42)
(setq e1 (cdr e1))
(setq dp (cdr i))
)
)
;;end while
(if (null dp)
(alert "Error bulge in the LWPOLYLINE")
;;nerver appear
(setq elist (cons (cons c1 (append (cdr di) (list evl))) elist)
c1 (1+ c1)
)
)
;;end if
)
)
;;end if
(setq e1 (cdr e1)
c (1+ c)
)
)
;;end while
(setq elist (reverse elist))
)

(Defun Intro ()
(prompt "\nCopyright by Nguyen Gia Dat - 0915169886")
)

;;;==================================================================
(defun C:Expl (/ sspl txtfile stt cter count txtline polist pltype)
(command "undo" "begin")
(setvar "cmdecho" 0)
(intro)
(setq sspl (ssget '((-4 . "<OR")
(0 . "Polyline")
(0 . "LWpolyline")
(-4 . "OR>")
)
)
cter 0
stt 1
txtfile '()
)
(while (< cter (sslength sspl))
(setq objpl (ssname sspl cter)
entpl (entget objpl)
pltype (cdr (assoc 0 entpl))
cter (1+ cter)
)
(cond
((= pltype "POLYLINE")
(setq
polist (getvpl1 objpl stt)
stt (+ stt (length polist))
)
)
((= pltype "LWPOLYLINE")
(setq polist (getvlw1 objpl stt)
stt (+ stt (length polist))
)
)

)
(setq txtfile (append txtfile polist))

)



;;; Chon file luu so lieu
(Setq FileDir (getfiled "File luu so lieu:" "" "txt" 1)
)

(setq count1 1
FileID (open FileDir "w")
)
(write-line "B¶ng sè liÖu" FileID)
(write-line
"Stt\tTo¹ ®é X\tTo¹ ®é Y\tTo¹ ®é Z"
FileID
)
(while (<= count1 (length txtfile))
(setq Xid (car (cdr (assoc count1 Txtfile)))
Yid (cadr (cdr (assoc count1 Txtfile)))
Zid (cadr (cdr (cdr (assoc count1 Txtfile))))
Txtline (strcat (itoa count1)
"\t"
(rtos Xid)
"\t"
(rtos Yid)
"\t"
(rtos Zid)
)
count1 (1+ count1)
)
(write-line Txtline FileID)
)
; (write-line Cpright FileID)


(close FileID)


(command "undo" "end")
(setvar "cmdecho" 1)
(princ)
)


  • 0

. - ' * ' - .. - ... "Sống trong đời sống cần có một tấm lòng..." . - ' * ' - .. -
-----------------------------------------------------------------------------------

Hình đã gửi Hình đã gửi


#998 Snowman

Snowman

    biết lệnh mirror

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

Đã gửi 24 August 2008 - 03:18 PM

Xin chào mọi người
Có ai giúp dùm tôi làm 1 hàm autolíp để xóa hay copy 1 file không phải là file ASCII được không (ví dụ như file .exe). Cám ơn rất nhiều.
nguoiotanphu.

Sao có lắm người cần hàm del file thế nhỉ? :s_big: xin trích lại một bài (vừa mới post xong, ở topic khác)- Ko biết có bị coi là spam ko :s_big:
(vl-file-delete filename) : del file chứa trong biến filename (bất kỳ loại file gì - bạn có thể dùng hàm getfiled để chọn file muốn xoá)
(vl-file-copy source-file destination-file [append]) copy file với tuỳ chọn ghi đè hay ghi nối tiếp vào file đích
  • 0

. - ' * ' - .. - ... "Sống trong đời sống cần có một tấm lòng..." . - ' * ' - .. -
-----------------------------------------------------------------------------------

Hình đã gửi Hình đã gửi


#999 dh2xd

dh2xd

    biết vẽ pline

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

Đã gửi 25 August 2008 - 01:01 PM

bác nào giúp em với. Em đang cần 1 lisp với nội dung sau
Giả sử bản vẽ ta có 4 lớp : 1,2,3,4
e muốn có 1 lisp có thể mặc định lớp 2 luôn nằm trên lớp 1,3,4
Nôm na e muốn có 1 lisp quản lý hệ thống layer sao cho ta có thể mặc định 1 lớp luôn nằm trên hay nằm dưới các lớp khác giống như quản lý layer trong shop đó các bác
Mong các bác cao thủ giúp em với...........hic hic

ko bác nào giúp e ah hu hu hu
  • 0

#1000 dh2xd

dh2xd

    biết vẽ pline

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

Đã gửi 25 August 2008 - 01:24 PM

Bác Hoanh ơi giúp e với em có câu lệnh này
(defun c:sb ()(ssget)(command "draworder" "p" "" "b" ""))
Bác giúp e thêm 1 mã lệnh để sao cho khi ta gõ lệnh sb nó sẽ tự động chon tất cả đối tượng hatch trong bản vẽ với
Cảm ơn bác trước nhé ......... help me.......
  • 0