Chuyển đến nội dung
Diễn đàn CADViet
Nguyen Hoanh

Viết Lisp theo yêu cầu

Các bài được khuyến nghị

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)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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ì?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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 đỡ !

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
à, 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ì?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Đâ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!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
à, 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.com/forum/index.php?showtopic=860

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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.com/upfiles/ban_ve_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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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é!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

cho tôi hỏi là, khi mình chọn tính diện tích các hình như thế, cad có phân biệt được hình nào mình pick trước,hình nào pick sau không.nếu có thì trong lisp trên khi chọn đối tượng không cần phải chọn đối tượng từ trái -phải hay phải - trái,trên-dưới,dưới -trên...mà chọn theo thứ tự nào đó theo text định sẵn.sau khi pick xong 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, sau đó chọn tất cả đối tượng text nó sẽ tự động thay dổi kết quả.cảmơn!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Có ai có hoặc viết được lisp trên giúp tôi với,đang rất cần.Cảm ơn nhiều hén!

Tôi đã đọc bài viết của bạn ngay từ khi bạn post bài thứ nhất, nhưng không rõ bạn muốn gì? bạn hỏi quá nhiều thứ, tôi không đủ thông minh để nhận biết được đây là câu hỏi về kiến thức lisp hay đề nghị viết lisp, nên chẳng giúp bạn được.

 

Trong chủ đề viết lisp theo yêu cầu này đừng làm loãng nó bằng các câu hỏi như: liệu lisp có phân biệt được thế này hay thế kia không, liệu lisp có khả năng làm cái này không,.... bởi nếu trả lời có hay không thì cũng chẳng liên quan gì đến chủ đề này.

 

Vì thế nếu câu hỏi của bạn là một câu hỏi về kiến thức lisp, bạn hãy post nó ở mục Hỏi về lisp. Còn nếu câu hỏi của bạn là một đề nghị viết lisp theo yêu cầu thì hãy đơn giản hóa yêu cầu của bạn bằng các gạch đầu dòng:

- Thứ bạn có

- Bạn muốn lisp làm gì

- Thứ bạn muốn

Tốt nhất là bạn upload file dwg bao gồm 2 trạng thái, một là trước khi chạy lisp (thứ bạn có) và một là sau khi chạy lisp (cái bạn muốn).

 

Không chỉ trong diễn đàn CADViet.com, mà cả các nơi khác kể cả trong cuộc sống, hãy biết cách giúp đỡ người mà mình muốn nhờ bằng cách nêu thật rõ và ngắn gọn điều mình mong muốn. Như thế dễ dàng và tốt đẹp cho cả 2 phía.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Hic.Xin lỗi vì chưa có kinh ngiệm. Công việc của tôi là tính diện tích đào đăp thông qua trắc ngang. Với mỗi trắc ngang, sẽ có các hạng mục là : diện tích đất cấp 3, đất cấp 4, đá cấp 4, diện tích đào nền, diện tích đào rãnh...và 1 bảng khối lượng đã liệt kê các hạng mục trên. sau khi pick lần lượt các diện tích trên, chọn vào text ghi kết quả chinh la bảng khối lượng đã liệt kê các hạng mục trến theo thứ tự mình đã pick các diện tích.Kết quả tính toán diện tích sẽ tự động điền vào đúng hạng mục mình mong muốn.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Hic.Xin lỗi vì chưa có kinh ngiệm. Công việc của tôi là tính diện tích đào đăp thông qua trắc ngang. Với mỗi trắc ngang, sẽ có các hạng mục là : diện tích đất cấp 3, đất cấp 4, đá cấp 4, diện tích đào nền, diện tích đào rãnh...và 1 bảng khối lượng đã liệt kê các hạng mục trên. sau khi pick lần lượt các diện tích trên, chọn vào text ghi kết quả chinh la bảng khối lượng đã liệt kê các hạng mục trến theo thứ tự mình đã pick các diện tích.Kết quả tính toán diện tích sẽ tự động điền vào đúng hạng mục mình mong muốn.

Cảm ơn bạn đã diễn đạt ngắn gọn, tôi hiểu thêm được nhiều. Tuy nhiên, tôi không phải là dân san nền nên vẫn còn chút thắc mắc.

 

Tôi có các câu hỏi sau mong bạn giải đáp giúp thì tôi sẽ viết được lisp:

- Câu 'sau khi pick lần lượt các diện tích trên' thì diện tích ở đây là đối tượng gì?

- Số lượng các đối tượng 'diện tích' với số các đối tượng text có bằng nhau không? Xử lý thế nào khi 2 lần chọn không bằng nhau?

- Thứ tự liên quan giữa pick đối tượng và text ra sao? VD: đối tượng pick trước thì gán vào text pick trước, hay text phía trên, hay text phía trái? vì tôi không biết bảng của bạn bố cục ra sao. Đối tượng diện tích có sự liên quan về vị trí với nhau không? nếu có thì bạn đỡ phải pick từng cái, sẽ chọn toàn bộ 1 lúc luôn, lisp tự phân chia thứ tự.

- Bạn dùng AutoCAD version bao nhiêu, nếu là lớn hơn 2005 thì có thể làm được sự liên kết động giữa giá trị diện tích của một đối tượng và giá trị text, tức là khi diện tích đối tượng thay đổi, text sẽ tự thay đổi theo.

 

Nếu được thì tốt nhất, bạn hãy upload 1 file dwg, có 2 trạng thái, trạng thái 1 là trước khi chạy lisp, trạng thái 2 là sau khi chạy lisp, tôi sẽ tự hiểu tất cả các vấn đề về đối tượng cũng như version ACAD mà bạn đang dùng, sẽ không phải hỏi bạn nhiều.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Xin lỗi vì đang ở nhà nên không có bản vẽ ở đây, Tôi sẽ cố gắng giải thích ý của tôi một cách rõ ràng nhất :

- Câu 'sau khi pick lần lượt các diện tích trên' thì diện tích ở đây là đối tượng gì? : diện tích ở đây là các hình khép kín, có thể là chữ nhât, tam giác, hoặc đa giác, ...đó chính là các diện tích như diện tích khuôn đường, diện tích đào đá cấp 3, hoặc đất cấp 3, diện tích nền ..... trên trắc ngang. Mỗi lần chuyển qua một hạng mục khác kết thúc bằng enter có ngiã là :ví dụ- Diện tích đào khuôn đường có thể gồm nhiều hình khác nhau, sau khi pick các hình này xong để chuyển qua hạng mục khác như diện tích đào đá cấp 3, hoặc đất cấp 3, diện tích nền....kết thúc bằng enter.Kết quả diện tích đào khuôn đường chính là tổng diện tích các hình mình đã pick .

- "Số lượng các đối tượng 'diện tích' với số các đối tượng text có bằng nhau không? Xử lý thế nào khi 2 lần chọn không bằng nhau?"do các đối tượng text có thể edit dễ dàng nên tốt nhất là số lượng dối tượng 'diện tích' với số các đối tượng text bằng nhau.có thể bão lỗi trong trường hợp không bằng nhau.

- "Thứ tự liên quan giữa pick đối tượng và text ra sao? VD: đối tượng pick trước thì gán vào text pick trước, hay text phía trên, hay text phía trái? vì tôi không biết bảng của bạn bố cục ra sao. Đối tượng diện tích có sự liên quan về vị trí với nhau không? nếu có thì bạn đỡ phải pick từng cái, sẽ chọn toàn bộ 1 lúc luôn, lisp tự phân chia thứ tự." đúng, sau khi pick xong các đối tượng, sẽ chọn toàn bộ một lúc, đến đây lisp sẽ yêu cầu : chọn trật tự trên-dưới,dưới trên,trái-phải,phải trải ..của đối tượng text.sau khi chọn thì kết quả sẽ tương ứng thứ tự pick và trật tự mình chọn.

Bố cục text tôi thường làm là trên xuống, nhưng có thể để tổng quát cho nhiều trường hợp là chọn trật tự trên-dưới,dưới trên,trái-phải,phải trái

- tôi dùng cad 2007.Cảm ơn vì đã quan tâm!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Chương trình dưới đây thực hiện điều bạn muốn.

 

Lệnh là gdt (gán diện tích).

(defun gan (entob enttext / tt gt)
 (setq
   tt (entget enttext)
   gt (strcat "%	       (itoa (vla-get-ObjectID (vlax-ename->vla-object entob)))
       ">%).Area \\f \"%lu2\">%"	       
      )
 )
 (entmod (subst (cons 1 gt) (assoc 1 tt) tt))
 (entupd enttext)  
)

(defun sapxep (lstt dx dy)
 (vl-sort lstt
   '(lambda (e1 e2)
      (		    (* (cadr (cdr (assoc 10 (entget e1)))) dy)
	 )
	 (+ (* (car (cdr (assoc 10 (entget e2)))) dx)
	    (* (cadr (cdr (assoc 10 (entget e2)))) dy)
	 )
      )
    )
 )
)

(defun c:gdt ()
 (princ "\nHay chon cac doi tuong dien tich: ")
 (setq 
   ssob (ssget	'((-4 . "		  (0 . "HATCH")
	  (0 . "*POLYLINE")
	  (0 . "CIRCLE")
	  (0 . "REGION")
	  (-4 . "OR>")
	 )
 )
 )
 (princ "\nHay chon cac doi tuong text: ")
 (setq 
   sst	 (ssget '((0 . "TEXT")))
 )
 (if (/= (sslength ssob) (sslength sst))
   (alert "So doi tuong cua 2 lan chon khac nhau!!!")
   (progn
     (initget "Trai-phai Phai-trai tRen-xuong Duoi-len tHeo pick"
     )
     (setq
lstob (ss2ent ssob)
lstt  (ss2ent sst)
chon  (getkword
	"\nChon thu tu cua text (Trai-phai/Phai-trai/tRen-xuong/Duoi-len/): "
      )
     )
     (if (= chon "Trai-phai")
(setq lstt (sapxep lstt 1 0))
     )
     (if (= chon "Phai-trai")
(setq lstt (sapxep lstt -1 0))
     )
     (if (= chon "Duoi-len")
(setq lstt (sapxep lstt 0 1))
     )
     (if (= chon "tRen-xuong")
(setq lstt (sapxep lstt 0 -1))
     )
     (mapcar 'gan lstob lstt)
   )
 )
 (command ".regen")
 (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)
)

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Xin lisp vẽ hình trụ tròn (khối solid) từ 1 (hoặc nhiều) đối tượng line được chọn có nội dung như sau:

trên màn hình là 1 line, chạy lisp hỏi chọn line, kết quả là chương trình sẽ vẽ ra được 1 đối tượng hình trụ tròn có chiều dài bằng line, và đường thẳng đó

thì đi qua tâm của hình trụ. mong bác Hoành giúp đỡ, em cám ơn nhiều!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Xin lisp vẽ hình trụ tròn (khối solid) từ 1 (hoặc nhiều) đối tượng line được chọn có nội dung như sau:

trên màn hình là 1 line, chạy lisp hỏi chọn line, kết quả là chương trình sẽ vẽ ra được 1 đối tượng hình trụ tròn có chiều dài bằng line, và đường thẳng đó

thì đi qua tâm của hình trụ. mong bác Hoành giúp đỡ, em cám ơn nhiều!

Bán kính trụ thì sao bạn?

Nhập vào hay pick điểm, có thay đổi không?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tôi dùng rồi.cảm ơn bác nhé.Nhưng việc chọn đối tượng như lisp này không tiện bằng cách pick vào trong miền các đối tượng như việc tô màu vật liệu ấy (Hatch).Việc lựa chọn bằng cách pick nhanh hơn và thực hiện đc trực tiếp trên trắc ngang.Còn như lisp này thì phải bo lại mới dùng đc.Bác sửa giúp tôi nhé!

 

Có nhiều hạng mục chẳng hạn Diện tích đào nền gồm nhiều đối tượng pick tách rời nhau,vì bác chưa hiểu ý của tôi, cũng do cách diễn đạt của tôi còn khó hiểu:

+co nhiều hạng mục tính toán:tôi lấy ví dụ có 2 - diện tích đào khuôn đường(DKĐ)

- diện tích đào đá cấp 3(DĐĐ)

DKĐ gồm nhiều đối tượng hình vẽ,sau khi load lisp này mình sẽ pick lần lượt các đối tượng hình vẽ và hoàn thành = cách ấn enter và chuyển sang DĐĐ cũng nhiều đối tượng hình vẽ.sau khi chọn xong đối tượng hình vẽ lisp yêu cầu chọn text. Trong lisp của bác yêu cầu chọn từng text nhưng theo tôi có thể chọn tất cả các đối tượng text một lần sau đó sẽ chọn trật tự trên dưới,trái -phải...và kết quả sẽ theo thứ tự ..

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Bán kính trụ thì sao bạn?

Nhập vào hay pick điểm, có thay đổi không?

À vâng, lisp hỏi nhập thêm bán kính trụ tròn nữa anh ạ, có thể nhập trực tiếp bằng số

thực (real) hoặc pick 2 điểm trên màn hình! thanks bác trước!!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Có nhiều hạng mục chẳng hạn Diện tích đào nền gồm nhiều đối tượng pick tách rời nhau,vì bác chưa hiểu ý của tôi, cũng do cách diễn đạt của tôi còn khó hiểu:

+co nhiều hạng mục tính toán:tôi lấy ví dụ có 2 - diện tích đào khuôn đường(DKĐ)

- diện tích đào đá cấp 3(DĐĐ)

DKĐ gồm nhiều đối tượng hình vẽ,sau khi load lisp này mình sẽ pick lần lượt các đối tượng hình vẽ và hoàn thành = cách ấn enter và chuyển sang DĐĐ cũng nhiều đối tượng hình vẽ.sau khi chọn xong đối tượng hình vẽ lisp yêu cầu chọn text. Trong lisp của bác yêu cầu chọn từng text nhưng theo tôi có thể chọn tất cả các đối tượng text một lần sau đó sẽ chọn trật tự trên dưới,trái -phải...và kết quả sẽ theo thứ tự ..

Bạn hãy post file DWG lên.

 

Nếu bạn post file lên từ đầu, đã không mất quá nhiều công sức và thời gian của bạn và tôi.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
À vâng, lisp hỏi nhập thêm bán kính trụ tròn nữa anh ạ, có thể nhập trực tiếp bằng số

thực (real) hoặc pick 2 điểm trên màn hình! thanks bác trước!!

Lệnh là L2C (line to cylinder)

(defun c:l2c ()
 (defun cyl (ent / tt)
   (setq
     tt (entget ent)
     p1 (trans (cdr (assoc 10 tt)) 0 1)
     p2 (trans (cdr (assoc 11 tt)) 0 1)
   )
   (command ".CYLINDER" p1 r "a" p2)
 )

 (setq	ss    (ssget '((0 . "LINE")))
r     (getdist "\nBan kinh Cylinder: ")
oldos (getvar "osmode")
 )
 (setvar "osmode" 0)
 (sudung cyl ss)
 (setvar "osmode" oldos)
 (princ)
)

(defun sudung (ham ss / sodt index entdt soapp)
 (setq	sodt  (cond
	(ss (sslength ss))
	(t 0)
      )
soapp 0
index 0
 )
 (repeat sodt
   (setq entdt	(ssname ss index)
  index	(1+ index)
   )
   (if	(ham entdt)
     (setq soapp (1+ soapp))
   )
 )
 soapp
)

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Khách
Chủ đề này bây giờ đã bị đóng lại để trả lời thêm.

×