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

#2101 Sony2007

Sony2007

    biết lệnh copy

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

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

Nhờ các bác giúp em việc này cái, trong 1 bản vẽ có bảng thống kê thép đ­ược tạo bởi phần mềm thống kê thép. Để sửa bảng này rất mất công là kích vào sửa từng dòng, giờ em muốn chuyển bảng này ra Cad để sửa cho tiện lợi. Mong các bác chỉ dùm cách hoặc có lisp gì làm được việc đó cho em xin với. Đây là file Cad có bảng TK thép mà em cần chuyển: http://www.cadviet.c...XA_CAT_V_16.rar
Mong có hồi âm sớm, xin cảm ơn nhiều!

Chọn Express > Blocks > Explode attributes to text > chọn các đối tượng của bảng thống kê là OK. Thử đi nhé
  • 1

#2102 cuongtk2

cuongtk2

    biết vẽ ellipse

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

Đã gửi 05 June 2009 - 11:00 AM

Nhờ các bác giúp em việc này cái, trong 1 bản vẽ có bảng thống kê thép đ­ược tạo bởi phần mềm thống kê thép. Để sửa bảng này rất mất công là kích vào sửa từng dòng, giờ em muốn chuyển bảng này ra Cad để sửa cho tiện lợi. Mong các bác chỉ dùm cách hoặc có lisp gì làm được việc đó cho em xin với. Đây là file Cad có bảng TK thép mà em cần chuyển: http://www.cadviet.c...XA_CAT_V_16.rar
Mong có hồi âm sớm, xin cảm ơn nhiều!

Đây là bảng thống kê thép tròn dùng lisp tk.lsp hay là tkn.exp rất nhiều người dùng, bạn nên down lisp dó về mài xài, đừng xuất attribute sang text, thế thì còn gi` là thống kê nữa.
Rất tiếc mình đã xoá nó mất rồi, bạn nên tìm trong diễn đàn mình có đấy
  • 1

#2103 shinnikel

shinnikel

    biết vẽ line

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

Đã gửi 05 June 2009 - 12:39 PM

Hình đã gửi
Nhờ các bạn Cadviet viết dùm lisp tính diện tích tấm kim loại các bước thực hiện như sau: "Gọi lệnh - Chọn các kt bề mặt (phải chuột kết thúc lệnh)- chọn vào chiêù dài L= (hoặc nhập số)- pick vào đôí tượng text cho ra diện tích tính bằng m2 (không cần điền đơn vị vào) :s_big:




KHÔNG AI GIUP MÌNH A.
  • 0

#2104 VoHoan

VoHoan

    biết lệnh move

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

Đã gửi 05 June 2009 - 05:05 PM

Nhờ các bác giúp em việc này cái, trong 1 bản vẽ có bảng thống kê thép đ­ược tạo bởi phần mềm thống kê thép. Để sửa bảng này rất mất công là kích vào sửa từng dòng, giờ em muốn chuyển bảng này ra Cad để sửa cho tiện lợi. Mong các bác chỉ dùm cách hoặc có lisp gì làm được việc đó cho em xin với. Đây là file Cad có bảng TK thép mà em cần chuyển: http://www.cadviet.c...XA_CAT_V_16.rar
Mong có hồi âm sớm, xin cảm ơn nhiều!


Em đã làm được rồi, cám ơn các bác đã quan tâm giúp đỡ.
  • 0

#2105 conghoan1003

conghoan1003

    biết vẽ point

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

Đã gửi 06 June 2009 - 08:43 AM

Các bác giúp mình viết cái lisp lấy số liệu từ cad đưa qua excel với.
File cad: http://www.cadviet.c...iles/load_2.dwg
File Excel: http://www.cadviet.c...pfiles/load.xls
Mình đưa ra ý tưởng thế này nhé:
- Khi mình chạy lisp thì nó hỏi chọn những giá trị cần nhập vào bảng Excel.
- Sau đo mình quyét tấc cả các giá trị trong 1 bảng (Chỉ có các text cần nhập giá trị vào excel còn lại ẩn đi hết). Sau đó ấn Enter thì các giá trị đó sẽ sắp xếp theo thứ tự: giá trị nào ở trên thì nằm bên trái, giá trị nào ở dưới thì nằm bên phải (cùng nằm trên một dòng trong file notepad sau đó dùng excel mở ra)
- Sau quét giá trị của bảng tiếp theo (trong cad) nó lại tự động sắp xếp tương tự ở hàng phía dưới trong file notepad.
- Cứ thế cho đến khi xong thì mình sẽ co một file notepad chứa các giá trị cần nhập, rồi mình chỉ cần lấy excel mở ra rồi coppy bỏ qua bảng khối lượng của mình.
Đó là ý tưởng của mình các bác tham khảo và viết giúp mình nhé!
Mình đang cần gấp lắm bác nào biết giúp mình với nhé. Thank!
  • 0
Học học nữa học mãi.
Đúp học lại!

#2106 thiep

thiep

    biết dimbaseline

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

Đã gửi 06 June 2009 - 12:10 PM

KHÔNG AI GIUP MÌNH A.

Có phải Lisp này không:
http://www.cadviet.c...pfiles/adim.lsp
Thật ra, không phải không ai giúp bạn đâu, có khi vì công việc bạn rộn thôi
  • 1

#2107 thiep

thiep

    biết dimbaseline

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

Đã gửi 06 June 2009 - 12:18 PM

Các bác giúp mình viết cái lisp lấy số liệu từ cad đưa qua excel với.
File cad: http://www.cadviet.c...iles/load_2.dwg
File Excel: http://www.cadviet.c...pfiles/load.xls
...
Mình đang cần gấp lắm bác nào biết giúp mình với nhé. Thank!

Thật ra dữ liệu cần lấy ra của bạn chỉ là 23 số trong cột (S,L,.. ), còn trong bảng excel đã định dạng sẵn rồi, chờ một chút nhé.
  • 0

#2108 shinnikel

shinnikel

    biết vẽ line

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

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

Có phải Lisp này không:
http://www.cadviet.c...pfiles/adim.lsp
Thật ra, không phải không ai giúp bạn đâu, có khi vì công việc bạn rộn thôi



Cám on bạn đã tặng Lisp mình đã sửa lại theo ý muốn nhưng vẩn chưa chèn dược kết quả vô text cho trước nhờ bạn hoàn thiện dùm .



(defun phay (soTP)
(vl-string-subst "," "." soTP)
)
;------------------------------
(defun ss2ent (ss / i Le e)
(setq i 0
Le nil
)
(repeat (sslength ss)
(setq
e (ssname ss i)
Le (append Le (list e)) ;bang list ten LWP
i (1+ i)
)
)
Le
)
;;;------------------------------------------------
(defun DXF (code en) (cdr (assoc code (entget en))))
;-----------------
(defun c:Adim ()
(princ "\nChon cac canh cua tam nhom: ")
(setq ssDc (ssget '((0 . "DIMENSION")))
chieucao 0
enLdc (ss2ent ssDc)
)
(foreach nLdc enLdc
(setq textdim (dxf 42 nLdc))
(setq chieucao (+ chieucao textdim))
)
(setq ssDd (entsel "\nChon kich thuoc chieu dai: ")
chieudai (dxf 42 (car ssDd ))
)
(setq dientich (* chieucao (/ chieudai 1000000)))
(princ
(strcat "\nDien tich cua Nhom la: " (phay (rtos dientich 2 4)) " m2" (chr 178))
)
(princ)
)
  • 0

#2109 thiep

thiep

    biết dimbaseline

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

Đã gửi 06 June 2009 - 01:27 PM

Cám on bạn đã tặng Lisp mình đã sửa lại theo ý muốn nhưng vẩn chưa chèn dược kết quả vô text cho trước nhờ bạn hoàn thiện dùm .

Bạn sửa đoạn này
(setq ssDd (entsel "\nChon kich thuoc chieu dai: ")
chieudai (dxf 42 (car ssDd ))
)

thành:
(setq chieudai (getreal "\nChieu dai: "))

Như ý muốn.
  • 0

#2110 thiep

thiep

    biết dimbaseline

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

Đã gửi 06 June 2009 - 01:32 PM

Thật ra dữ liệu cần lấy ra của bạn chỉ là 23 số trong cột (S,L,.. ), còn trong bảng excel đã định dạng sẵn rồi, chờ một chút nhé.

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

#2111 VoHoan

VoHoan

    biết lệnh move

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

Đã gửi 06 June 2009 - 05:56 PM

Các bác giúp mình viết cái lisp lấy số liệu từ cad đưa qua excel với.
File cad: http://www.cadviet.c...iles/load_2.dwg
File Excel: http://www.cadviet.c...pfiles/load.xls
Mình đưa ra ý tưởng thế này nhé:
- Khi mình chạy lisp thì nó hỏi chọn những giá trị cần nhập vào bảng Excel.
- Sau đo mình quyét tấc cả các giá trị trong 1 bảng (Chỉ có các text cần nhập giá trị vào excel còn lại ẩn đi hết). Sau đó ấn Enter thì các giá trị đó sẽ sắp xếp theo thứ tự: giá trị nào ở trên thì nằm bên trái, giá trị nào ở dưới thì nằm bên phải (cùng nằm trên một dòng trong file notepad sau đó dùng excel mở ra)
- Sau quét giá trị của bảng tiếp theo (trong cad) nó lại tự động sắp xếp tương tự ở hàng phía dưới trong file notepad.
- Cứ thế cho đến khi xong thì mình sẽ co một file notepad chứa các giá trị cần nhập, rồi mình chỉ cần lấy excel mở ra rồi coppy bỏ qua bảng khối lượng của mình.
Đó là ý tưởng của mình các bác tham khảo và viết giúp mình nhé!
Mình đang cần gấp lắm bác nào biết giúp mình với nhé. Thank!

Bạn thử dùng list này xem có vừa y không: http://www.cadviet.c..._sang_Excel.rar
Để có kết quả như ý muốn bạn có thể xử lý số liệu ngay trong Cad trước khi xuất ra Excel hoặc sau khi xuất ra Excel rồi xử lý cũng được.
  • 0

#2112 conghoan1003

conghoan1003

    biết vẽ point

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

Đã gửi 06 June 2009 - 08:05 PM

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

cảm ơn bạn đã giúp đỡ, mình thấy cái này còn bất tiện ở chổ sau mỗi lần chọn thì nó lại hỏi mở một file. Mình muốn như thế này:
Sau khi chạy lisp thì nó hỏi lưu file vào chỗ nào
Sau đó mình chọn đối tượng rồi ấn enter thì nó sẽ lưu vào file đó. Rồi chọn đối tượng khác (mặt cắt khác) rồi ấn enter thì nó sẽ tiếp tục lưu vào file trên (ở dòng bên dưới của lần chọn trước)
Với lại khi mình dùng excel mở ra thì mỗi dòng nó lại nằm trong một ô trong excel (nhiều số cùng nằm trong một ô). Mình muốn mỗi số mỗi ô(mỗi text trong cad mỗi ô trong excel), như thế mình mới tính toán được.
Thank!
  • 0
Học học nữa học mãi.
Đúp học lại!

#2113 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 06 June 2009 - 11:00 PM

cảm ơn bạn đã giúp đỡ, mình thấy cái này còn bất tiện ở chổ sau mỗi lần chọn thì nó lại hỏi mở một file. Mình muốn như thế này:
Sau khi chạy lisp thì nó hỏi lưu file vào chỗ nào
Sau đó mình chọn đối tượng rồi ấn enter thì nó sẽ lưu vào file đó. Rồi chọn đối tượng khác (mặt cắt khác) rồi ấn enter thì nó sẽ tiếp tục lưu vào file trên (ở dòng bên dưới của lần chọn trước)
Với lại khi mình dùng excel mở ra thì mỗi dòng nó lại nằm trong một ô trong excel (nhiều số cùng nằm trong một ô). Mình muốn mỗi số mỗi ô(mỗi text trong cad mỗi ô trong excel), như thế mình mới tính toán được.
Thank!

Xin fép tác giả, em cải biên đoạn lisp này đi một chút (nhân tiện có việc cần dùng đến :lol2: Em có một cái trích xuất cả bảng dữ liệu sang excel nhưng chỉ tiện cho việc trình bày, ko tiện thống kê khối lượng)
(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 c:slb ()
(command "undo" "be")
(setvar "osmode" 0)

(princ "\nSelect all texts of column S,L,B... ")
(setq strlst '()
)
(while
(setq ssT (ssget '((0 . "text"))))
(setq
LenT (ss2ent sst)
)
(setq strnum "")
(foreach enT LenT
(redraw enT 3)
(setq objText (vlax-ename->vla-object enT))
(setq num (vlax-get-property objText 'TextString))
(setq strnum (strcat strnum num "\t"))
)
(setq strlst (append strlst (list strnum)))
(princ "\nSelect all texts of column (S,L,:D: ")
)
;;---------------xuat ra file----------------
(if flag
(setq fn (getfiled "select file: " "" "xls" 8)
f (open fn "a")
)
(setq fn (getfiled "select file: " "" "xls" 1)
f (open fn "a")
flag T
)
)
(if ctl

(setq
ctl (1+ ctl)
)
(setq
ctl 1
)
)

(foreach strline Strlst
(setq Brkline (strcat "Du lieu trac ngang thu: " (itoa ctl))
ctl (1+ ctl)
)
(write-line Brkline f)
(write-line Strline f)
)
(close f)
(command "REGENALL")
(command "undo" "end")
(princ "\nThank you for used my lisp - THIEP 0918841230")
(princ)
)

(Cái codebox này vẫn chưa bỏ được lỗi emotion nhỉ paste code vào mà ko để ý là hỏng luôn)
(Lâu lắm rồi mới "tái xuất" CADVIET :lol2: )
  • 1

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

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


#2114 shinnikel

shinnikel

    biết vẽ line

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

Đã gửi 07 June 2009 - 11:34 AM

Bạn sửa đoạn này
(setq ssDd (entsel "\nChon kich thuoc chieu dai: ")
chieudai (dxf 42 (car ssDd ))
)

thành:
(setq chieudai (getreal "\nChieu dai: "))

Như ý muốn.



Ý cùa mình không phải là mình đánh kt L= vô mình chì muốn điền kết quả vô text đã có sẳn trong bv thôi, Với lại lisp này cho ra kết quả sai đối với các kt giả bạn có thể chỉnh lại chút cho mình được không.Mình có 1 kho lisp của Japan hổ trợ vẽ và kiểm tra rất tôt nhưng lại hô trợ dộc quyền cho font Nhật và khung bv mẫu của nó mà thôi giờ mình cũng không thể sd được nếu rảnh các bạn có thể xem và chỉnh sửa dùm mình được ko mong các bạn cadViet có thể hổ trọ cho công việc của mình chân thành cảm ơn nhiều. :lol2:
  • 0

#2115 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 07 June 2009 - 03:12 PM

Ý cùa mình không phải là mình đánh kt L= vô mình chì muốn điền kết quả vô text đã có sẳn trong bv thôi, Với lại lisp này cho ra kết quả sai đối với các kt giả bạn có thể chỉnh lại chút cho mình được không.Mình có 1 kho lisp của Japan hổ trợ vẽ và kiểm tra rất tôt nhưng lại hô trợ dộc quyền cho font Nhật và khung bv mẫu của nó mà thôi giờ mình cũng không thể sd được nếu rảnh các bạn có thể xem và chỉnh sửa dùm mình được ko mong các bạn cadViet có thể hổ trọ cho công việc của mình chân thành cảm ơn nhiều. :lol2:

Lời đầu tiên, Tue_NV muốn nhắn đến bạn là bạn hãy đọc bài viết này : Bài viết số 2082. Topic "Viết Lisp theo yêu cầu"

Còn đây là Code mà Tue_NV viết theo ý của bạn :
(defun c:Adim(/ ss n i S duyet ent L entt Lnhan)
(prompt "\nChon cac canh cua tam nhom: ")
(setq ss (ssget '((0 . "DIMENSION"))))
(setq n (sslength ss) i 0 S 0 duyet 0)

(while (< i n)
(setq ent (entget(ssname ss i)))

(if (= (cdr(assoc 1 ent)) "")
(setq duyet (cdr(assoc 42 ent)))
(setq duyet (atof(cdr(assoc 1 ent))))
)
(setq S (+ S duyet))
(setq i (1+ i))
)

(setq L (getreal "\n Nhap so L = hoac Enter de chon DIMENSION chieu dai : "))
(setq Lnhan L)

(if (null L)
(progn
(setq L (car(entsel "\nChon kich thuoc chieu dai : ")))

(setq entt (entget L))

(if (= (cdr(assoc 1 entt)) "")
(setq Lnhan (cdr(assoc 42 entt)))
(setq Lnhan (atof(cdr(assoc 1 entt))))
)
)
)

(setq te (entget(car(entsel "\n Pick chon Text can xuat ket qua :"))))
(setq te (subst(cons 1 (strcat(rtos (/ (* S Lnhan) 1000000) 2 4) " m2")) (assoc 1 te) te))
(entmod te)

(princ)
)
:lol2:

Bài viết đã được chỉnh sửa nội dung bởi Tue_NV: 08 June 2009 - 05:43 AM

  • 2

#2116 shinnikel

shinnikel

    biết vẽ line

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

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

[quote name='Tue_NV' date='Jun 7 2009, 15:12' post='63359']
Lời đầu tiên, Tue_NV muốn nhắn đến bạn là bạn hãy đọc bài viết này : Bài viết số 2082. Topic "Viết Lisp theo yêu cầu"

Cám ơn Tue_NV đã sửa lại lisp cho mình, Bài viết số 2082 mình đã từng đọc wa rồi ngày nào mình cũng vào Topic "Viết Lisp theo yêu cầu" để đọc cả công việc của mình đòi hỏi phải sd kích thước giả nên bạn có thể chấp nhận cho mình nhé. Trong Topic "Viết Lisp theo yêu cầu" Tue_NV coi nó là nhà của mình thì bản thân tôi cũng như bạn vậy vì không đóng góp gì cho diễn đàng nên không dám lên tiếng thôi mình chỉ âm thầm học hỏi và nhận quà của các bạn tặng :lol2: .Giờ này tôi vẩn còn làm đây nè :lol2: huhu... Chúc các thành viên trong Topic này gặt hái dược nhiều thành công trong công viêc
  • 0

#2117 conghoan1003

conghoan1003

    biết vẽ point

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

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

Xin fép tác giả, em cải biên đoạn lisp này đi một chút (nhân tiện có việc cần dùng đến :lol2: Em có một cái trích xuất cả bảng dữ liệu sang excel nhưng chỉ tiện cho việc trình bày, ko tiện thống kê khối lượng)

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!
  • 0
Học học nữa học mãi.
Đúp học lại!

#2118 ngocthinh84

ngocthinh84

    biết vẽ line

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

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

có ai giúp mình ko vậy kìa
  • 0

#2119 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 08 June 2009 - 01:46 PM

có ai giúp mình ko vậy kìa

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 ạ.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#2120 thiep

thiep

    biết dimbaseline

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

Đã gửi 08 June 2009 - 02:03 PM

Mình có 1 kho lisp của Japan hổ trợ vẽ và kiểm tra rất tôt nhưng lại hô trợ dộc quyền cho font Nhật và khung bv mẫu của nó mà thôi giờ mình cũng không thể sd được nếu rảnh các bạn có thể xem và chỉnh sửa dùm mình được ko mong các bạn cadViet có thể hổ trọ cho công việc của mình chân thành cảm ơn nhiều. :lol2:

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?
  • 0