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

#2121 conghoan1003

conghoan1003

    biết vẽ point

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

Đã gửi 09 June 2009 - 09:46 AM

Ngôn ngữ Lisp là ngôn ngữ chung mà lận? Tôi đang học tiếng Campuchia để qua làm việc bên đó. Có thể tôi cũng dịch được Lisp của Nhật bổn bằng tiếng Campuchia! Bạn cứ mạnh dạng uploat thử xem?

A! Anh Thiệp đinh đi CPC hả? Có nhận đệ tử đi cùng không? em cũng thích đi làm ở nước ngoài lắm. Anh cho em đi với!
Xin lỗi admin vì đã post không đúng vị trí nha!
  • 0
Học học nữa học mãi.
Đúp học lại!

#2122 thiep

thiep

    biết dimbaseline

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

Đã gửi 09 June 2009 - 10:09 AM

Snowman xem lại cái này thử sao vẫn không dung được.
hôm trước Thiêp có cho mìh cái lisp chạy cũng tốt nhưng mà chưa đúng ý mình lắm, ai biết giúp mình với.
Mình muốn có một cái lisp nhập khối lượng từ cad qua excel. nó thực hiện như sau:
- Khi chạy lisp hỏi lưu file (.txt) vào chổ nào.
- Sau đó quét ký tự text cần nhập, sau khi ent se lưu các text vào file vừa lưu (text nào nằm trênlưu bên trái rồi text nằm dưới lưu bên phải)
- Rồi tiếp tục chọn các text khác, sau khi ent se lưu tiếp vào file (.txt) trước. (Lưu vào dòng phía dưới của dòng lưu trước)
- Để kết thúc lênh ấn Esc.
thanhk!

Lisp của Snowman, không có sai gì, chạy rất tốt, chỉ có điều khi copy lisp vào CODEBOX, nó bị lỗi ở dòng sau:
(princ "\nSelect all texts of column (S,L, " alt=cool.gif src="style_emoticons/default/cool.gif" border=0 emoid="B)">: "))
bạn chỉnh sửa lại:
(princ "\nSelect all texts of column (S,L,...): ")
Còn việc đi làm ở CPC ư, rừng thiêng, nước độc, thú dữ, bom mìn ... còn đầy. Đi 2 về 1, còn 1 phải vô bệnh viện! conghoan còn muốn làm đệ tử nữa không?
  • 0

#2123 conghoan1003

conghoan1003

    biết vẽ point

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

Đã gửi 09 June 2009 - 01:47 PM

Bạn dùng tạm lisp này nhé:
http://www.cadviet.com/upfiles/SLB.lsp

Rừng thiêng nước độc nói nghe ghê quá đi, rừng thiêng thì không sợ nhưng e chỉ sợ thất nghiệp thôi. hi hi
Uh! Anh Thiệp xem lại cái này giúp em với sao nó chạy mà không đúng gì hết. Em muốn nó sắp xếp theo thứ tự từ trên xuống thì khi chuyển qua file excel là từ trái sang phải.
Mà kết quả chẳng đúng, thậm chí còn có cái nó bỏ quên đâu mất mấy cái text của em nữa chứ. Cuối tuần này xuất hồ sơ rồi định đem ra áp dựng mà chẳng được chắc phải ngồi nhập từng số quá!
Thank!
http://www.cadviet.c.../Drawing1_8.dwg
http://www.cadviet.c...s/khoiluong.txt
  • 0
Học học nữa học mãi.
Đúp học lại!

#2124 thiep

thiep

    biết dimbaseline

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

Đã gửi 09 June 2009 - 02:13 PM

Anh Thiệp xem lại cái này giúp em với sao nó chạy mà khong đúng gì hết. Em muốn nó sắp xếp theo thứ tự từ trên xuống thì khi chuyển qua file excel là từ trái sang phải.
Mà kết quả chẳng đúng, thậm chí còn có cái nó bỏ quên đâu mất.
Thank!
http://www.cadviet.c.../Drawing1_8.dwg
http://www.cadviet.c...s/khoiluong.txt

Cad rất nhớ những đối tượng nào bạn tạo ra trước, DT nào tạo ra sau. Khi bạn chọn một bó đối tượng, nó sẽ sắp xếp DT nào bạn tạo ra trước sẽ đưa ra xử lý trước, (sẽ in ra trước trong file *.txt). Còn bỏ quên thì cad không quên đâu, chỉ có trường hợp bạn vừa chọn, vừa pan, zoom cho lớn rõ, những đối tượng đã chọn vượt ra khỏi màn hình, thì cad sẽ quên một số đối tượng không nhìn thấy này. khi chọn xong bạn phải zoom lại màn hình.
Thiep sẽ thêm một đoạn mã sắp xếp cho bạn. Chờ chút nhé, đang tiếp khách.
  • 0

#2125 conghoan1003

conghoan1003

    biết vẽ point

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

Đã gửi 09 June 2009 - 03:52 PM

Cad rất nhớ những đối tượng nào bạn tạo ra trước, DT nào tạo ra sau. Khi bạn chọn một bó đối tượng, nó sẽ sắp xếp DT nào bạn tạo ra trước sẽ đưa ra xử lý trước, (sẽ in ra trước trong file *.txt). Còn bỏ quên thì cad không quên đâu, chỉ có trường hợp bạn vừa chọn, vừa pan, zoom cho lớn rõ, những đối tượng đã chọn vượt ra khỏi màn hình, thì cad sẽ quên một số đối tượng không nhìn thấy này. khi chọn xong bạn phải zoom lại màn hình.
Thiep sẽ thêm một đoạn mã sắp xếp cho bạn. Chờ chút nhé, đang tiếp khách.

Thì ra là thế! hèn chi nó nhảy lung tung em chẳng biết đâu mà lần. làm phiền anh Thiệp nhiều qua rồi!
Cam ơn anh nhiều!
  • 0
Học học nữa học mãi.
Đúp học lại!

#2126 theluan_xd

theluan_xd

    Chưa sử dụng CAD

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

Đã gửi 09 June 2009 - 09:06 PM

Chào mọi người. Mình muốn xin lisp tính tổng các số ( text) được chọn. Chả là mình đang vẽ cái biểu đồ nhân lực , muốn tính tổng nhân lực mà nhiều quá , không tính tay nổi. Mọi người giúp mình với nhé . Thanks so much!! :lol2:
  • 0

#2127 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 09 June 2009 - 10:32 PM

Chào mọi người. Mình muốn xin lisp tính tổng các số ( text) được chọn. Chả là mình đang vẽ cái biểu đồ nhân lực , muốn tính tổng nhân lực mà nhiều quá , không tính tay nổi. Mọi người giúp mình với nhé . Thanks so much!! :lol2:

Bạn chịu khó tìm kiếm đi. Lisp này Tue_NV đã viết trên diễn đàn rồi đấy.
  • 0

#2128 ngocthinh84

ngocthinh84

    biết vẽ line

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

Đã gửi 10 June 2009 - 07:45 AM

Chào bạn Ngocthinh84,
Mình đã xem cái bản v4 bạn gửi nhưng vẫn chưa hiểu rõ lắm ý bạn hỏi. Có lẽ bạn nên gửi một thằng mẫu trước khi dùng líp và một thằng hình bạn muốn có nó sau khi dùng líp để mọi người dễ hiểu vấn đề hơn bạn ạ.

bạn bình ạ.
với đoạn lisp mà mình gởi đó.dùng để lấy kích thước. nhưng mà phải vẽ đường dim trước rồi lấy kích thước vì nó chỉ đánh text và donut tại hai điểm mình chọn thôi. kích thước donut theo tỉ lệ dimscale của bản vẽ. như hình chữ nhật này chẳn hạn. mình muốn dim kích thước thì phải vẽ thêm 3 line màu trắng trước. giờ cỏ thể sửa cho nó tự có luôn giùm mình được kô. tức là chỉ cần chọn hai điểm trên hình chử nhật sau đó kéo lên tới vị trí mình muốn
http://www.cadviet.c...iles/help_1.zip
  • 0

#2129 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 10 June 2009 - 08:05 AM

bạn bình ạ.
với đoạn lisp mà mình gởi đó.dùng để lấy kích thước. nhưng mà phải vẽ đường dim trước rồi lấy kích thước vì nó chỉ đánh text và donut tại hai điểm mình chọn thôi. kích thước donut theo tỉ lệ dimscale của bản vẽ. như hình chữ nhật này chẳn hạn. mình muốn dim kích thước thì phải vẽ thêm 3 line màu trắng trước. giờ cỏ thể sửa cho nó tự có luôn giùm mình được kô. tức là chỉ cần chọn hai điểm trên hình chử nhật sau đó kéo lên tới vị trí mình muốn
http://www.cadviet.c...iles/help_1.zip

Tue_NV không hiểu tại sao bạn Dim theo cách này. Kích thước DIM nổ tung ra hết rồi còn gì
Bạn có thể trình bày ý của bạn rõ ràng thêm 1 chút nữa không? Bãn vẽ bạn gửi thì có 1 hình chữ nhật còn dim thì mỗi đường 1 nẻo. Mình không khuyến khích bạn lấy Dim theo cách này đấy nhé.
  • 0

#2130 thiep

thiep

    biết dimbaseline

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

Đã gửi 10 June 2009 - 10:11 AM

Thì ra là thế! hèn chi nó nhảy lung tung em chẳng biết đâu mà lần. làm phiền anh Thiệp nhiều qua rồi!
Cam ơn anh nhiều!


Xin lỗi vì để conghoan chờ lâu, lisp này tôi đã thêm mã sort.
http://www.cadviet.c...files/SLB_1.lsp
  • 2

#2131 conghoan1003

conghoan1003

    biết vẽ point

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

Đã gửi 10 June 2009 - 01:38 PM

Xin lỗi vì để conghoan chờ lâu, lisp này tôi đã thêm mã sort.
http://www.cadviet.c...files/SLB_1.lsp

Cảm ơn anh Thiệp nhiều, lần này thì OK rồi. Đáp ứng 99.99% rồi, còn có tí nữa anh xem lại được không nhé.
Khi chạy lệnh không cần phải hỏi mở file nào mà mình mặ định cho nó lưu vào file khoiluong.txt đã tạo sẵn trong ổ đĩa D (D:/khoiluong.txt). Như thế sau mỗi lần chọn mình không cần phải click open nữa.
Cảm ơn anh nhiều!
  • 0
Học học nữa học mãi.
Đúp học lại!

#2132 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 10 June 2009 - 10:03 PM

bạn bình ạ.
với đoạn lisp mà mình gởi đó.dùng để lấy kích thước. nhưng mà phải vẽ đường dim trước rồi lấy kích thước vì nó chỉ đánh text và donut tại hai điểm mình chọn thôi. kích thước donut theo tỉ lệ dimscale của bản vẽ. như hình chữ nhật này chẳn hạn. mình muốn dim kích thước thì phải vẽ thêm 3 line màu trắng trước. giờ cỏ thể sửa cho nó tự có luôn giùm mình được kô. tức là chỉ cần chọn hai điểm trên hình chử nhật sau đó kéo lên tới vị trí mình muốn
http://www.cadviet.c...iles/help_1.zip

Chào bạn ngocthinh84,
Mình chưa hiểu ý đồ của bạn vì nếu chỉ để ghi dim với cái donut ở đầu đường kích thước thì chả cần dùng đền lisp đâu bạn.
Trong Cad đã có sẵn cái style dim này rồi, bạn chỉ lấy nó ra sử dụng là bạn thoải mái đặt đm tại vị trí bất kỳ bạn muốn và dim lại chả bị nổ hay vỡ tung gì cả.
Như vậy sẽ thuận lợi hơn rất nhiều trong quá trình chỉnh sửa bản vẽ về sau khi cần thiết so với việc bạn dùng cái lisp của bạn.
Bạn thử nghiên cứu lại cái yêu cầu của bạn xem nhé.
Chúc bạn vui.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#2133 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 11 June 2009 - 09:03 PM

Nhờ các Bác viết giúp cho PP một Lisp dùng để chuyển các text trong các Attributes thành Dtext hoặc Mtext.
Sau khi chuyển xong thì các Attributes sẽ được xoá bỏ. Nhờ vậy nếu Explode các Attributes thì các Text đã được điền truớc đó sẽ vẩn tồn tại.
Đây là bản vẽ dùng để test: http://www.cadviet.c...bue_to_Text.zip
Xin cảm ơn nhiều.
  • 0

#2134 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 11 June 2009 - 09:14 PM

Nhờ các Bác viết giúp cho PP một Lisp dùng để chuyển các text trong các Attributes thành Dtext hoặc Mtext.
Sau khi chuyển xong thì các Attributes sẽ được xoá bỏ. Nhờ vậy nếu Explode các Attributes thì các Text đã được điền truớc đó sẽ vẩn tồn tại.
Đây là bản vẽ dùng để test: http://www.cadviet.c...bue_to_Text.zip
Xin cảm ơn nhiều.

Chào Phiphi-. Bạn có thể nói rõ hơn không? Tue_NV chưa hiểu ý dòng màu đỏ

Bạn đã sử dụng thử lệnh Burst chưa? 1 lệnh phụ trợ của Express

Bạn chú ý khi upload file nên Save sang CAD 2000 để mọi người có thể mở được và giúp bạn. Tue_NV đã phải nhờ tới DWGgateway để mở file .dwwg của bạn đấy.
  • 0

#2135 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 12 June 2009 - 06:51 AM

Chào Phiphi-. Bạn có thể nói rõ hơn không? Tue_NV chưa hiểu ý dòng màu đỏ

Bạn đã sử dụng thử lệnh Burst chưa? 1 lệnh phụ trợ của Express

Bạn chú ý khi upload file nên Save sang CAD 2000 để mọi người có thể mở được và giúp bạn. Tue_NV đã phải nhờ tới DWGgateway để mở file .dwwg của bạn đấy.

Cám ơn Bác Tue_NV quan tâm.
Lệnh Burst đã đáp ứng yêu cầu trên của PP.
Thank kiều very nhiều.
  • 0

#2136 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 12 June 2009 - 09:11 AM

Cảm ơn anh Thiệp nhiều, lần này thì OK rồi. Đáp ứng 99.99% rồi, còn có tí nữa anh xem lại được không nhé.
Khi chạy lệnh không cần phải hỏi mở file nào mà mình mặ định cho nó lưu vào file khoiluong.txt đã tạo sẵn trong ổ đĩa D (D:/khoiluong.txt). Như thế sau mỗi lần chọn mình không cần phải click open nữa.
Cảm ơn anh nhiều!

Bạn nên học lisp để tự viết những thay đổi đơn giản.
Hãy sửa ở chỗ này trong SLB_1.lsp

(foreach Lt LpointText
(setq SLB (cadr Lt)
LText (strcat LText " " SLB)
)
)
(setq n (1+ n))
;;---------------xuat ra file----------------
(setq fn (getfiled "select file: " "D:/" "txt" 8)
f (open fn "a")
)

thành

(foreach Lt LpointText
(setq SLB (cadr Lt)
LText (strcat LText "\t" SLB)
)
)
(setq n (1+ n))
;;---------------xuat ra file----------------
(setq f (open "D:/khoiluong.txt" "a") )

Sửa đoạn trên là đổi từ space sang tab để tiện hơn khi paste sang excel
  • 2

#2137 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 12 June 2009 - 12:58 PM

Chào Phiphi-. Bạn có thể nói rõ hơn không? Tue_NV chưa hiểu ý dòng màu đỏ

Bạn đã sử dụng thử lệnh Burst chưa? 1 lệnh phụ trợ của Express

Bạn chú ý khi upload file nên Save sang CAD 2000 để mọi người có thể mở được và giúp bạn. Tue_NV đã phải nhờ tới DWGgateway để mở file .dwwg của bạn đấy.

Trường hợp PP muốn chuyển màu của các Text trong các Attributes ra màu trắng thì có cần dùng Lisp để thực hiện không vậy Bác Tue_NV.
Xin open bản vẽ này để test : http://www.cadviet.c..._to_color_8.zip
Thank you.
  • 0

#2138 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 12 June 2009 - 01:53 PM

Trường hợp PP muốn chuyển màu của các Text trong các Attributes ra màu trắng thì có cần dùng Lisp để thực hiện không vậy Bác Tue_NV.
Xin open bản vẽ này để test : http://www.cadviet.c..._to_color_8.zip
Thank you.

Dùng lệnh Battman
  • 0

#2139 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1435 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 12 June 2009 - 02:35 PM

Trường hợp PP muốn chuyển màu của các Text trong các Attributes ra màu trắng thì có cần dùng Lisp để thực hiện không vậy Bác Tue_NV.
Xin open bản vẽ này để test : http://www.cadviet.c..._to_color_8.zip
Thank you.

Chào Phiphi
Bạn chạy thử LISP này :
(defun c:Test (/ cnt ss color ent entdata)
(setq cnt -1)
(if (setq ss (ssget '((0 . "INSERT") (66 . 1))))
(progn
(setq color (getint (strcat "\nNhap mau (so nguyen) cho thuoc tinh : ")) )
(while (setq ent (ssname ss (setq cnt (1+ cnt))))
(while (= (cdr (assoc 0 (setq entdata (entget (setq ent (entnext ent)))))) "ATTRIB")
(if (assoc 62 entdata)
(entmod (subst (cons 62 color) (assoc 62 entdata) entdata))
(entmod (append entdata (list (cons 62 color))) )
)
)
)
)
)
(command "regen")
(princ)
)

  • 1

#2140 ngocthinh84

ngocthinh84

    biết vẽ line

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

Đã gửi 12 June 2009 - 02:59 PM

Chào bạn ngocthinh84,
Mình chưa hiểu ý đồ của bạn vì nếu chỉ để ghi dim với cái donut ở đầu đường kích thước thì chả cần dùng đền lisp đâu bạn.
Trong Cad đã có sẵn cái style dim này rồi, bạn chỉ lấy nó ra sử dụng là bạn thoải mái đặt đm tại vị trí bất kỳ bạn muốn và dim lại chả bị nổ hay vỡ tung gì cả.
Như vậy sẽ thuận lợi hơn rất nhiều trong quá trình chỉnh sửa bản vẽ về sau khi cần thiết so với việc bạn dùng cái lisp của bạn.
Bạn thử nghiên cứu lại cái yêu cầu của bạn xem nhé.
Chúc bạn vui.

gửi bạn thanh bình và Tue_NV.
hai bạn nói đúng nhưng mà chổ mình làm là thế đó tất cả mọi cái đều phải nổ ra hết kể cả leader cũng thế đấy các bạn ạ.
  • 0