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

#441 anhducna

anhducna

    biết vẽ arc

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

Đã gửi 24 January 2008 - 09:23 AM

Các bác giúp em viết cái lisp này với.nội dung nó là. khi mình load lisp này nó sẽ hỏi chọn đối tượng(dạng số).sau đó sẽ yêu cầu nhập số để nhân với số mình đã chọn.kết quả nhân sẽ thay thế luôn số mình chọn ban đầu.các bác giúp em với!
  • 0

#442 dnhqs

dnhqs

    biết vẽ ellipse

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

Đã gửi 24 January 2008 - 09:46 AM

Các bác giúp em viết cái lisp này với.nội dung nó là. khi mình load lisp này nó sẽ hỏi chọn đối tượng(dạng số).sau đó sẽ yêu cầu nhập số để nhân với số mình đã chọn.kết quả nhân sẽ thay thế luôn số mình chọn ban đầu.các bác giúp em với!

cái này để tôi giúp cho
chờ chút nhé
  • 0

#443 dnhqs

dnhqs

    biết vẽ ellipse

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

Đã gửi 24 January 2008 - 11:00 AM

cái này để tôi giúp cho
chờ chút nhé

;=======================================================================
(defun c:nhan (/ ss1 enam eget en eg count chontext pheptinh ghd ght sogia sothapphan)

(prompt "\n Thay doi tri so text theo so gia - 02/2006")
(prompt "\n Cac text da thuc hien se doi mau theo mau doi tuong chon")


(princ "\nChange layer ...\nSelect entities to change:")
(setq ss1 (ssget))

(setq chontext "txet")

(while
(null (setq enam (car (entsel "\nPick an entity on the target color:"))))
(princ "\nYou missed.")
)

(setq pheptinh (getstring "\n Phep tinh <cong>/Tru/Nhan/Chia:"))
(setq ghd (getreal "\n Cao trinh gioi han duoi <lon hon>: "))
(setq ght (getreal "\n Cao trinh gioi han tren <nho hon hoac bang>: "))
(setq sogia (getreal "\n So gia dieu chinh: "))
(setq sothapphan (getint "\n So so thap phan: "))

;====

(setq eget (entget enam))
(setq count 0)
(repeat (sslength ss1) ;bat dau lap===========
(setq en (ssname ss1 count))
(setq chontext (cdr (assoc 0 (entget en))))
(if (= chontext "TEXT")
(progn
(setq es (cdr (assoc 1 (entget en))))
(setq es (atof es))
(if (and (> es ghd) (<= es ght)) ;neu trong
(progn
(if (= pheptinh "n")
(setq es (* es sogia))
(if (= pheptinh "c")
(setq es (/ es sogia))
(if (= pheptinh "t")
(setq es (- es sogia))
(setq es (+ es sogia))
)
)
)
(setq es (rtos es 2 sothapphan)
eg (entget en)
eg (subst (cons 1 es) (assoc 1 eg) eg)
eg (subst (assoc 62 eget) (assoc 62 eg) eg)
)
)
) ;dong neu trong
)
)
(setq count (1+ count))
(entmod eg)


) ;dong lap



(prompt "\n Chuc mot buoi lam viec vui ve - dnhqs.\n")
(princ)
)


;============================
  • 1

#444 acad_mem

acad_mem

    biết zoom

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

Đã gửi 25 January 2008 - 08:52 AM

Bạn có thể post yêu cầu về autolisp ở topic này.


Chào bác, em muốn hỏi bác một cái lisp:

Làm thế nào để chuyển tất cả các leader ko nằm trong mặt phằng XY của world ucs.
(defun c:test ()
(setq lst nil)
(setq ss (ssget))
(setq n 0)
(repeat (sslength ss)
(if (= (cdr (assoc 0 (entget (ssname ss n)))) "LEADER")
(progn
(setq lst (entget (ssname ss n)))
(foreach x lst
(if (= (car x) 10)
(progn
(setq pt (list (car (cadr x)) (cadr (cadr x)) 0.0))
)
)
)
)
)
)
)
Em chỉ viết sơ sơ đc đến đây, pác sửa dùm e cái.
Thanks
  • 0

#445 xaydung

xaydung

    biết lệnh trim

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

Đã gửi 27 January 2008 - 12:27 PM

Các bạn ơi cho mình hỏi, mình tạo ra 1 region bằng boundary nhưng nó không thể offset được , có thể tạo ra lisp offset đối tượng region không , nếu được thì cho mình xin , mình cám ơn nhiều!
  • 0

#446 huycuong2410

huycuong2410

    Chưa sử dụng CAD

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

Đã gửi 27 January 2008 - 07:55 PM

Nhờ Anh giúp em viết chức năng cắt ra tất cả đối tượng trong 1 vùng được chọn(có thể vẽ chọn bằng nhiều cách: hình chữ nhật, polygon, hình tròn, ...). Em vẽ minh họa sơ nội dung Anh xem thử ha:
http://www.cadviet.c...viet_Lisp_1.dwg
Em xin cám ơn Anh nhiều nhé! :)
  • 0

#447 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 27 January 2008 - 08:40 PM

Nhờ Anh giúp em viết chức năng cắt ra tất cả đối tượng trong 1 vùng được chọn(có thể vẽ chọn bằng nhiều cách: hình chữ nhật, polygon, hình tròn, ...). Em vẽ minh họa sơ nội dung Anh xem thử ha:
http://www.cadviet.com/upfiles/ban_ve_nho_viet_Lisp_1.dwg
Em xin cám ơn Anh nhiều nhé! :)

Bạn hãy sử dụng lệnh Extrim.
  • 0

#448 huycuong2410

huycuong2410

    Chưa sử dụng CAD

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

Đã gửi 28 January 2008 - 10:59 PM

Sao em gõ lệnh Extrim mà nó không hiểu vậy Anh?
  • 0

#449 pikeman286

pikeman286

    biết dimdiameter

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

Đã gửi 29 January 2008 - 08:28 AM

Sao em gõ lệnh Extrim mà nó không hiểu vậy Anh?

Cái này mình thấy dùng lệnh Trim vẫn được mà.Bạn thử lại xem.
  • 0

#450 traitimsat034

traitimsat034

    biết vẽ pline

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

Đã gửi 29 January 2008 - 09:44 AM

các bác cho em hỏi có lệnh nào có thể copy giống như copym nhưng lại có thể bám tuyến cong như lệnh measure không, (tức là
copy các đối tượng bình thường chứ không phải block)
  • 0

#451 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 January 2008 - 10:00 AM

Sao em gõ lệnh Extrim mà nó không hiểu vậy Anh?

Bạn vào phần tìm kiếm rồi nhập vào từ Extrim!
  • 0

#452 romeo1982

romeo1982

    biết lệnh mirror

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

Đã gửi 30 January 2008 - 05:30 PM

nhờ bác hoành viết giùm cái lisp như thế này
mình xài ADT thấy có cái hay như thế này: nếu mình đã tạo ra 1 kí hiệu tường bị cắt ngang trên mặt bằng có cả hatch tường luôn trong đó ( tương tự như block cũa cad vậy), sau khi hai kí hiệu tường này giao nhau thì nó tự động cắt đi những đường giao nhau làm cho mình đỡ mất công đoạn là dùng lệnh trim để cắt và cái hatch tường của nó cũng tự động cộng vào nhau làm một như là mình hatch chung vậy. Nhưng nó có cái nhược điểm là hay bị lỗi khi khoảng 3 hoặc 4 kí hiệu giao nhau nếu mà hatch không cùng chiều với nhau lúc đó thì lại phải sửa. Còn 1 cái nhược điểm nữa là người dùng phần mềm này rất là ít nếu dùng cad để mở nó lên thì không chình sửa gì được phài explode nó thôi. Sau nhiều ngày suy nghĩ tôi có 1 ý tưởng như thế này các cao thủ lisp xem thử có làm được ko xin chỉ giáo: mình tạo ra 1 block đặt biệt gồm 1 retang và hatch tường sẳn trong đó và cũng như ADT khi 2 block này giao nhau thì nó sẻ tự động mất đi những đường giao và hatch của chúng cũng cộng vào nhau( chú ý là khi tách ra thì nó lại trở lại như củ nhé, còn 1 chuyện nữa nếu mình dùng hai cái block có hatch khác nhau (tường và bê tông chẳng hạn) thì nó không cộng chung hatch mà chỉ mất đi những đường giao nhau mà thôi . Tôi nghĩ cái này hơi rắc rối và hơi khó đấy không biết bác hoành thấy thế nào vì nếu có cái líp như vậy thì mình nghĩ sẽ đỡ cho những người dùng cad của chúng ta rất nhìu đó . Xin thân ái chào và hẹn gặp lại ( vì mình không ở thường xuyên trên net được)
  • 0

#453 xaydung

xaydung

    biết lệnh trim

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

Đã gửi 10 February 2008 - 10:49 PM

Các bác giúp em viết cái lisp này với nội dung nó là : khi mình load lisp này nó sẽ hỏi chọn đối tượng text
VD : abc sau đó kết quả trên màn sẽ là 123
có nghĩa là a tương ứng với 1
b tương ứng với 2
c tương ứng với 3
và ngược lại nếu chọn text 123 sẽ chuyển thành abc
các bác giúp em với!
  • 0

#454 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 11 February 2008 - 01:31 AM

Các bác giúp em viết cái lisp này với nội dung nó là : khi mình load lisp này nó sẽ hỏi chọn đối tượng text
VD : abc sau đó kết quả trên màn sẽ là 123
có nghĩa là a tương ứng với 1
b tương ứng với 2
c tương ứng với 3
và ngược lại nếu chọn text 123 sẽ chuyển thành abc
các bác giúp em với!

mục đích là để làm gì bạn?

khi chọn xyz thì lisp chuyển thành cái gì?
  • 0

#455 xaydung

xaydung

    biết lệnh trim

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

Đã gửi 11 February 2008 - 09:42 AM

mục đích là để làm gì bạn?

khi chọn xyz thì lisp chuyển thành cái gì?

à, khi chọn 1 text (ví dụ text đó chỉ chứa chữ) thì lisp sẽ tự động nhận ra đâu là chữ cái
nếu có chữ cái là "a" thì sẽ chuyển thành "1"
nếu có chữ cái là "b" thì sẽ chuyển thành "2"
nếu có chữ cái là "c" thì sẽ chuyển thành "3"

dòng kết quả là đương nhiên sẽ là 123
còn về mục đích thì lisp này nói nôn na là 1 lisp dùng để mã hoá các ký tự chữ thành các ký tự số
trong bản vẽ autocad!
ở đây em chỉ ví dụ 3 chữ cái là a,b,c bởi có rất nhiều chữ cái (từ a đến z mà)
riêng lisp này em chỉ muốn xem cách viết về cơ bản, còn lại các ký tự khác (d,e...z) em sẽ tự viết tiếp cũng
được anh à, mong anh giúp đỡ !
  • 0

#456 Jin Yong

Jin Yong

    biết lệnh group

  • Vip
  • PipPipPipPipPipPip
  • 498 Bài viết
Điểm đánh giá: 334 (khá)

Đã gửi 11 February 2008 - 11:06 AM

à, khi chọn 1 text (ví dụ text đó chỉ chứa chữ) thì lisp sẽ tự động nhận ra đâu là chữ cái
nếu có chữ cái là "a" thì sẽ chuyển thành "1"
nếu có chữ cái là "b" thì sẽ chuyển thành "2"
nếu có chữ cái là "c" thì sẽ chuyển thành "3"

dòng kết quả là đương nhiên sẽ là 123
còn về mục đích thì lisp này nói nôn na là 1 lisp dùng để mã hoá các ký tự chữ thành các ký tự số
trong bản vẽ autocad!
ở đây em chỉ ví dụ 3 chữ cái là a,b,c bởi có rất nhiều chữ cái (từ a đến z mà)
riêng lisp này em chỉ muốn xem cách viết về cơ bản, còn lại các ký tự khác (d,e...z) em sẽ tự viết tiếp cũng
được anh à, mong anh giúp đỡ !


Đây có thể gọi là chương trình mã hoá đơn giản, mỗi chữ cái sẽ được dịch ra thành một số
Nhưng có tới 26 chữ cái đơn giản (không dấu) và 10 con số kèm theo, nên việc mã hoá cần tương ứng mỗi chữ cái (ký tự) với ít nhất 2 con số chứ không thể là 1, ví dụ a thành 01, b thành 02z thành 26. Là vì sao? Là vì chỉ khi mã hoá như thế thì mới dịch ngược lại được
Ví dụ khi chữ là ab thì mã sẽ là 0102, và ngược lại khi số là 0126 thì sẽ dịch là az. Nếu không? Nếu không thì không có quy tắc để dịch số 0126 thành chữ
Thường thì dùng mã ASCII để chuyển mỗi ký tự tương ứng với 3 con số (001 đến 255)

Cuối cùng, dù sao việc mã hoá cũng cần phải phù hợp với mục đích mã hoá của bạn, chúng tôi vẫn chưa hiểu bạn định viết ứng dụng gì?
  • 0

Phát triển phần mềm thiết kế Kết cấu Việt Nam - http://www.ketcausoft.com


#457 xaydung

xaydung

    biết lệnh trim

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

Đã gửi 11 February 2008 - 09:17 PM

Đây có thể gọi là chương trình mã hoá đơn giản, mỗi chữ cái sẽ được dịch ra thành một số
Nhưng có tới 26 chữ cái đơn giản (không dấu) và 10 con số kèm theo, nên việc mã hoá cần tương ứng mỗi chữ cái (ký tự) với ít nhất 2 con số chứ không thể là 1, ví dụ a thành 01, b thành 02z thành 26. Là vì sao? Là vì chỉ khi mã hoá như thế thì mới dịch ngược lại được
Ví dụ khi chữ là ab thì mã sẽ là 0102, và ngược lại khi số là 0126 thì sẽ dịch là az. Nếu không? Nếu không thì không có quy tắc để dịch số 0126 thành chữ
Thường thì dùng mã ASCII để chuyển mỗi ký tự tương ứng với 3 con số (001 đến 255)

Cuối cùng, dù sao việc mã hoá cũng cần phải phù hợp với mục đích mã hoá của bạn, chúng tôi vẫn chưa hiểu bạn định viết ứng dụng gì?


À , mục đích thì nó cũng là 1 cách để hạn chế phần nào việc chỉnh sửa bản vẽ khi giao file cho chủ đầu tư
, lẽ ra thì cái này mình phải post vào phần "mã hoá các text trong bản vẽ" thì hợp lý hơn !
Nhưng có tới 26 chữ cái đơn giản (không dấu) và 10 con số kèm theo, nên việc mã hoá cần tương ứng mỗi chữ cái (ký tự) với ít nhất 2 con số chứ không thể là 1, ví dụ a thành 01, b thành 02z thành 26. Là vì sao? Là vì chỉ khi mã hoá như thế thì mới dịch ngược lại được
Ví dụ khi chữ là ab thì mã sẽ là 0102, và ngược lại khi số là 0126 thì sẽ dịch là az. Nếu không? Nếu không thì không có quy tắc để dịch số 0126 thành chữ

Mình hiểu, rất cám ơn Jịn Jung, nhưng sự phân biêt ở đây là mầu , ví dụ chữ cái thứ 10,11…trở đi thì sẽ là mầu xanh chẳng hạn j,k…cách này sẽ không cần dung đến 2 con số nữa (dòng text sẽ không bị dài gấp lên 2 )

Cụ thể hơn là thế này
a,b,c,d,e,f,g,h,i tương ứng với 1,2,3,4,5,6,7,8,9 lấy màu đen
j,k,l,m,n,o,p,q,r tương ứng với 1,2,3,4,5,6,7,8,9 lấy màu xanh
s,t,u,v,w,x,y,z tương ứng với 1,2,3,4,5,6,7,8 lấy màu v àng
VD
VD : “concreate” k ết qu ả l à “365395125”
rất mong bạn giúp đỡ, mình cám ơn nhiều!
  • 0

#458 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 11 February 2008 - 09:28 PM

à, khi chọn 1 text (ví dụ text đó chỉ chứa chữ) thì lisp sẽ tự động nhận ra đâu là chữ cái
nếu có chữ cái là "a" thì sẽ chuyển thành "1"
nếu có chữ cái là "b" thì sẽ chuyển thành "2"
nếu có chữ cái là "c" thì sẽ chuyển thành "3"

dòng kết quả là đương nhiên sẽ là 123
còn về mục đích thì lisp này nói nôn na là 1 lisp dùng để mã hoá các ký tự chữ thành các ký tự số
trong bản vẽ autocad!
ở đây em chỉ ví dụ 3 chữ cái là a,b,c bởi có rất nhiều chữ cái (từ a đến z mà)
riêng lisp này em chỉ muốn xem cách viết về cơ bản, còn lại các ký tự khác (d,e...z) em sẽ tự viết tiếp cũng
được anh à, mong anh giúp đỡ !

Bạn xem ở đây: http://www.cadviet.c...p?showtopic=860
  • 0

#459 hiepga1981

hiepga1981

    biết zoom

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

Đã gửi 15 February 2008 - 06:31 AM

bác Hoành ơi e bác nghiên cứu cho e cái lisp tự chèn các block có thông số như block trong file cad này được không bác : http://www.cadviet.c...e_quy_hoach.dwg
e thấy trên này có cái lisp link giữa text với boundary để khi mình thay đổi boundary thì text cũng tự động thay đổi theo. Nhưng cái file trên của e thì text lại nằm trong attribure thì có cách nào tự thay đổi khi mình thay đổi boundary không bác. Mong bác giúp e với ! dù được hay không cũng cám ơn bác rất nhiều
  • 0

#460 anhducna

anhducna

    biết vẽ arc

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

Đã gửi 15 February 2008 - 08:24 AM

Mọi ngừời giúp tôi viết lisp này nhé, khi load lisp này nó sẽ hỏi muốn chọn đối tượng từ trái -phải hay phải - trái,trên-dưới,dưới -trên...sau khi pick vào các đối tượng, nó sẽ hỏi bạn muốn chèn kết quả vào text theo thứ tự nào :trái -phải hay phải - trái,trên-dưới,dưới -trên. Tôi đang muốn nói kết quả ở đây là tính diện tích.lần lượt diện tích của các hình mình chọn theo thứ tự nào đó sẽ được tính và chèn theo thứ tự text cũng theo thứ tự nào đó.cảm ơn nhé!
  • 0