Đến nội dung


Hình ảnh
* * * - - 8 Bình chọn

Viết lisp theo yêu cầu [phần 2]


  • Chủ đề bị khóa Chủ đề bị khóa
3783 replies to this topic

#1641 kslethanh

kslethanh

    biết vẽ arc

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

Đã gửi 28 August 2010 - 09:56 PM

Thử cái này xem:
(Defun c:trt ( )
(princ "\nPHAM QUOC DUY Binh Son - Quang ngai")
(command "undo" "be")
(Princ "\nHay chon doi tuong :")
(setq SS (ssget '((0 . "TEXT"))))

(setq bkt (getstring "\nBan kinh vong tron:"))

(setq i 0)
(setq N (sslength ss))
(while (< i N)
(setq TEXTENT (ssname SS i))
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)
(command "ucs" "object" textent)
(setq tbTB (textbox (list (cons -1 textent)))
ll (car tbTB)
ur (cadr tbTB)
ul (list (car ll) (cadr ur))
lr (list (car ur) (cadr ll))
)

(setq daitext (distance ul lr))
(setq goctext(angle ul lr))
(setq dainuatext (/ daitext 2))
(setq diemquay (polar ul goctext dainuatext))

(command ".circle" diemquay bkt)
(command ".polygon" "30" diemquay "" bkt)
(command ".wipeout" "" "last" "y")
(command ".copy" textent "" diemquay diemquay)
(command ".erase" "Previous" "")
(command "ucs" "p")
(setq i (1+ i))
(setvar "osmode" luubatdiem)
)
(command "undo" "end")
(Princ)
)

Cảm ơn anh đx viết lisp trên,nhưng em muốn không những là hình tròn mà 1 số hình khác nữa như hình vuông hay tam giác hay đa giác chẳng hạn.Thank's anh nhiều!
  • 0
905921755

#1642 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 29 August 2010 - 01:02 PM

Đơn giản mà anh :D

(defun c:shat();show hatch
(initdia)
(command "hatch")
)
Nó hay lắm đó. Nó còn dùng để hiện các hộp thoại khác nữa à. :D

Trong lúc chờ đợi được giúp đỡ,nhờ bác Tue và mọi người cho e hỏi,khi gọi hàm (initdia) trong 1 lisp,nếu đóng gói luôn thành VLX thì sẽ xuất hiện thông báo lỗi sau :
"no function definition: INITDIA" và lệnh không thực hiện được.Nếu chuyển từ lisp sang combined lisp(*.fas) rồi đóng gói lại thì lại được.Vấn đề là ở đâu ạ :D
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#1643 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 29 August 2010 - 02:51 PM

Em Chào các bác.

CHả là thế này: em hay vẽ trong Model ( ko phải layout) của Cad theo tỷ lệ 1:1 rồi Scale khung vẽ. Thế nên việc chỉnh text_hight và text_dim khi in trên khổ giấy A3 rất mệt. hjx

Em muốn nhờ các bác viết hộ em cái Lisp như thế này để khi in bản vẽ nhìn text và dim nó đều nhau.

- Text, dim nguồn: Giả sử có
Text: text1 có style là T1 text_hight là A1.
text2 có style là T2 text_hight là A2.
....................
textn có style là Tn text_hight là An.

Dim: Dim1 có style là D1 text_hight là D1.
Dim2 có style là D2 text_hight là D2.
....................
Dimn có style là Dn text_hight là Dn.

Các bước của lệnh là:

B1: Chọn text và dim nguồn:

B2: Chọn text và dim đích:
Xử lý:
Với Text : Bất cứ Text đích nào Có Style Giống với style của text nguồn thì chuyển text_hight của Text đích = text_hight cuả text nguồn.

Với Dim :Bất cứ Dim đích nào Có Style Giống với style của Dim nguồn thì chuyển
Dim _hight của Dim đích = Dim_hight cuả Dim nguồn.
B3: Kết thúc.

Lưu ý: Với Dim đích có những dim bị sửa factor ( bị scale bản vẽ phải chỉnh lại factor).thì chỉ chuyển chiều cao của text,
- Khi chọn nguồn và đích có thể có lẫn cả line, arc , poline......và Block. Nếu đích có Block thì cũng chỉnh sửa luôn chiều cao của text và dim trong block này như nguồn luôn.

P/s: Các text và dim nguồn ở bên trong 1 block các bác nhé

Mong các bác giúp minh mình nhé Cảm ơn các bác nhiều. Chúc mọi người 1 tuần làm việc vui vẻ
Còn đây là File minh họa của mình:
http://www.mediafire...0989patwozh43mc
  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#1644 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 29 August 2010 - 03:15 PM

Chào bác Tuệ_NV,
Bác cho hỏi một chút nhé:
Vì sao trong đoạn lisp trên của bác, trong khi bác định nghĩa hàm UPWB bác lại vẫn sử dụng nó trong vòng lặp được bác nhỉ???( cái chỗ mình bôi đỏ trong đoạn lisp trên ấy bác ạ)
Theo mình hiểu thì bác phải định nghĩa cho xong cái hàm UPWB đã tức là phải kết thúc cái hàm (defun upwb (......) .........) rồi mới lôi nó ra dùng được chứ ạ.
Mình đọc mà vẫn chưa hiểu rõ chỗ này, mong bác giải thích giùm....
Cám ơn bác trước.

thuật toán đệ quy này còn rất tiện để lặp lại lệnh hoặc dùng trong các điều kiện rẽ nhánh chương trình mà không cần dùng các vòng lặp. code sẽ đơn giản hơn rất nhiều đó bác ạ :D
ví dụ:
(defun c:xxx ()
.......
(c:xxx)
);defun
  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#1645 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 29 August 2010 - 05:37 PM

Chào bác Tuệ_NV,
Bác cho hỏi một chút nhé:
Vì sao trong đoạn lisp trên của bác, trong khi bác định nghĩa hàm UPWB bác lại vẫn sử dụng nó trong vòng lặp được bác nhỉ???( cái chỗ mình bôi đỏ trong đoạn lisp trên ấy bác ạ)
Theo mình hiểu thì bác phải định nghĩa cho xong cái hàm UPWB đã tức là phải kết thúc cái hàm (defun upwb (......) .........) rồi mới lôi nó ra dùng được chứ ạ.
Mình đọc mà vẫn chưa hiểu rõ chỗ này, mong bác giải thích giùm....
Cám ơn bác trước.

Anh Bình tham khảo thêm topic này:

http://www.cadviet.c...?showtopic=6243

Chú ý ví dụ dùng đệ quy để tính giai thừa n! (một ví dụ rất hay dùng để minh họa thuật toán đệ quy).
  • 1

#1646 sucuph

sucuph

    biết zoom

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

Đã gửi 30 August 2010 - 11:30 AM

em nhờ các bác viết giúp e 1 lisp như sau:
em có:
- đối tượng A (có thể là L, PL, SPL, ARC, C....)
- và một loạt đối tượng là B, C, D, ... cắt qua A
em nhờ các bác giúp cho e 1 lisp mà khi thực hiện chỉ cần pick vào A thì toàn bộ các đối tượng B, C, D bị Break (thay vì e ngồi làm cái một ý mà)
Cám ơn các bác nhiều!
  • 0

#1647 dkkx3a

dkkx3a

    biết lệnh trim

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

Đã gửi 30 August 2010 - 01:26 PM

em nhờ các bác viết giúp e 1 lisp như sau:
em có:
- đối tượng A (có thể là L, PL, SPL, ARC, C....)
- và một loạt đối tượng là B, C, D, ... cắt qua A
em nhờ các bác giúp cho e 1 lisp mà khi thực hiện chỉ cần pick vào A thì toàn bộ các đối tượng B, C, D bị Break (thay vì e ngồi làm cái một ý mà)
Cám ơn các bác nhiều!


Bạn vào ô tìm kiếm nhé, gõ từ khóa "MyBreak" sẽ tìm có cái LISP tương tự... :D
  • 0
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#1648 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 30 August 2010 - 10:47 PM

#1672

Không bác nào giúp em ah :D
  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#1649 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 31 August 2010 - 09:14 AM

Trong lisp hide_show dùng để ẩn,hiện đối tượng,có cách nào để lưu các đối tượng đã ẩn không?Tức là khi e thực hiện lệnh ẩn,thì các đối tượng này ẩn đi.Lúc cần hiện thì gọi lệnh hiện.Sau 1 số thao tác,e lại muốn những đối tượng trước ẩn đi,hoặc thêm vài đối tượng khác nữa mà không phải chọn lại các đối tượng này không ?? (vì hiện giờ khi thao tác lại,lại phải chọn lại đối tượng -> rất rườm rà)

-Có cách nào khóa 1 đối tượng giống như đóng băng không ạ ? (k phải đóng băng layer chứa đối tượng đó)
Em thấy chức năng này rất cần thiết nhưng hình như chưa có
E nghĩ có cách là copy đối tượng sang 1 layer temp,layer này có tính chất giống layer của đối tượng,nhưng bị khóa.Sau khi unlock thì trả đối tượng về layer cũ và (có thể) xóa layer temp đi.Nhưng lại có vấn đề là nếu có nhiều đối tượng thuộc nhiều layer khác nhau thì phải tạo ra nhiều layer temp,hoặc phải lưu giữ thông tin của nhiều đối tượng trước khi bị khóa.Nhưng kể cả như vậy thì có thể thực hiênện được không ạ ??Em k biết lập trình nên không triển khai được ý đồ,mong các bác giúp đỡ ..
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#1650 leolas

leolas

    biết lệnh stretch

  • CADViet Team
  • PipPipPip
  • 163 Bài viết
Điểm đánh giá: 133 (tàm tạm)

Đã gửi 31 August 2010 - 12:15 PM

Chào các bạn
Mình có 1 file lisp tãi trên mạng dùng để vẽ bánh xích, nhưng nó chỉ vẽ theo đơn vị inch thôi. Nếu dùng mặc định bản vẽ là acadiso.dwt thì không dùng lisp được, mình nhờ các bạn sửa dùm có thêm dòng lệnh " đơn vị theo inch hay mm" để có thể vẽ theo inch hoặc theo mm đều được. Cám ơn nhiều
http://www.cadviet.c...s/3/djg_rcs.zip
  • 0
Let those who only see the thorns have eyes to see the rose

#1651 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 31 August 2010 - 03:34 PM

Trong lisp hide_show dùng để ẩn,hiện đối tượng,có cách nào để lưu các đối tượng đã ẩn không?Tức là khi e thực hiện lệnh ẩn,thì các đối tượng này ẩn đi.Lúc cần hiện thì gọi lệnh hiện.Sau 1 số thao tác,e lại muốn những đối tượng trước ẩn đi,hoặc thêm vài đối tượng khác nữa mà không phải chọn lại các đối tượng này không ?? (vì hiện giờ khi thao tác lại,lại phải chọn lại đối tượng -> rất rườm rà)

Ban Sử dụng lệnh Group để nhóm các đối tượng về 1 nhóm
  • 0

#1652 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 31 August 2010 - 04:47 PM

Hic hic...Em thực sự không biết sử dụng lệnh này...Kick đối tượng,->group,nhưng sau đó k hiện ra tên Group....
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#1653 mR.dArK

mR.dArK

    Chưa sử dụng CAD

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

Đã gửi 31 August 2010 - 06:44 PM

Chào các bác ạ, tình hình là em đang làm đường ống cấp nước mà ốp mặt cắt ngang nản quá, gần 5000 mặt cắt, nên em muốn hỏi các bác có làm được lisp ốp các mặt cắt vào địa hình như sau:
- chọn mặt cắt mẫu
- chọn điểm đặt mặt cắt
---> lisp tự động trim các đường vượt qua đường mặt đất tự nhiên, hatch vật liệu, cho ra cao độ đáy, khối lượng đào đắp...tóm lại là 1 mặt cắt hoàn chỉnh được không. Ảnh minh hoạ đây ạHình đã gửi
  • 0

#1654 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 31 August 2010 - 10:06 PM

Hic hic...Em thực sự không biết sử dụng lệnh này...Kick đối tượng,->group,nhưng sau đó k hiện ra tên Group....

có 2 loại đối tuợng group đuơc tạo ra bởi lệnh group. một là group có tên (mặc đinh, bạn fải nhập tên truớc rồi chọn đối tuợng) và một loại đối tuợng group không tên, loại này cad tự đặt tên.
nếu muốn chỉnh sửa 1 đối tượng con trong group thì bạn bấm Ctrl+shift+A để tắt liên kết giữa các đối tượng của group.
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#1655 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 31 August 2010 - 10:29 PM

Các bác viết giúp em cái Líp này với. :D :D

#1672

  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#1656 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 01 September 2010 - 12:48 AM

có bác nào viết lại được code của lệnh Ironpat của video giới thiệu này không
http://www.youtube.c...feature=related

  • 0
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#1657 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 01 September 2010 - 05:30 AM

Hic hic...Em thực sự không biết sử dụng lệnh này...Kick đối tượng,->group,nhưng sau đó k hiện ra tên Group....

Bạn có thể Tim kiếm theo từ khoá Group trên diễn đàn
Lệnh Group có thể tạo nhóm đối tượng. Thêm đối tượng vao 1 nhóm và có thể loại đối tượng ra khỏi nhóm. Bật/ tắt nhóm đối tượng Group bằng tổ hợp phím Ctrol+Shift+A
Chọn đối tượng Group có thể Pick chuột vào 1 đối tượng trong Group -> Các đối tượng trong Group sẽ được chọn
Bạn có thể nhấn phím G ở dòng Select object -> Sau đó gõ tên Group (nếu bạn nhớ tên) nếu không bạn cứ chọn theo cách Pick chuột
Select objects: G
Enter group name:

-Có cách nào khóa 1 đối tượng giống như đóng băng không ạ ? (k phải đóng băng layer chứa đối tượng đó)
Em thấy chức năng này rất cần thiết nhưng hình như chưa có
E nghĩ có cách là copy đối tượng sang 1 layer temp,layer này có tính chất giống layer của đối tượng,nhưng bị khóa.Sau khi unlock thì trả đối tượng về layer cũ và (có thể) xóa layer temp đi.Nhưng lại có vấn đề là nếu có nhiều đối tượng thuộc nhiều layer khác nhau thì phải tạo ra nhiều layer temp,hoặc phải lưu giữ thông tin của nhiều đối tượng trước khi bị khóa.Nhưng kể cả như vậy thì có thể thực hiện được không ạ ??Em k biết lập trình nên không triển khai được ý đồ,mong các bác giúp đỡ ..

Truớc mắt thì Tue_NV không biết cách để khoá 1 đối tượng (Object) nữa. Nhưng với cách của bạn thì có thể thực hiện được
- Chọn các đối tượng
- Duyệt qua các đối tượng lấy tên Layer, màu sắc, đường nét. Sau khi lấy tên Layer (ví dụ tên là "duongbao") ta thêm 1 layer mới tên là "duongbaoLock" có các tính chất giống Layer "duongbao" nhưng bị khóa. Gán đối tượng cho Layer "duongbaoLock" này. Đương nhiên với các đối tượng khác nhau sẽ phát sinh thêm nhiều "LayerLock" -> Đây là cách khóa

- Về mở khóa : Duyệt qua các đối tượng thuộc Layer có tên là "*Lock" (* là kí tự đại diện) Ví dụ là "duongbaoLock" -> gán các đối tượng này cho Layer "duongbao" ("duongbaoLock" bỏ bớt 4 kí tự cuối) -> Sau đó delete cái Layer "duongbaoLock" . Các Layer "*Lock" khác làm tương tự
Trên đây là ý kiến của mình, các bác có ý kiến khác hay, xin chỉ giúp ạ. Xin cảm ơn mọi ý kiến đóng góp :D

có bác nào viết lại được code của lệnh Ironpat của video giới thiệu này không
.....

Chào bạn phamngoctu
Cái này có khác chi mấy so với lệnh Align đâu bạn?
Tue_NV thấy có khi dùng Align còn tiện hơn. Mất công khỏi đo đạc và nhớ tên lệnh Lisp nưar
  • 0

#1658 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 01 September 2010 - 11:23 AM

Chào bạn phamngoctu
Cái này có khác chi mấy so với lệnh Align đâu bạn?
Tue_NV thấy có khi dùng Align còn tiện hơn. Mất công khỏi đo đạc và nhớ tên lệnh Lisp nưar

Chào bạn Tue_NV cái đó không giống lệnh align đâu bạn ạ. Nó giống như là stretch block.
Theo mình để xây dựng code của lệnh Ironpat như sau:
1. copy đối tượng được chọn sang vị trí mới
2. Rotate đối tượng mới với một góc là : a
3. Tạo block đối tượng mới đó
4. Chèn block vừa tạo với các hệ số scale theo trục x là: x, théo trục y là: y
5. rotate block sao cho một cạnh của block trùng với trục y
làm như vậy ta sẽ được một đối tượng mới với độ chéo là b.
Vấn đề đặt ra là a, x, y tỷ lệ như thế nào để độ chéo b theo ý muốn và một cạnh của đối tượng mới bằng với đối tượng ban đầu.
Đây là cách tư duy để xây dựng code của mình thôi. Bác nào có ý kiến khác thì góp ý cho mình.
  • 0
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#1659 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 01 September 2010 - 11:46 PM

Các bác viết giúp em cái Líp này với. :D :D

#1672

Trong khi chờ đợi hoàn thiện bạn thử dùng cái lisp này coi sao nhé. Lisp sẽ yêu cầu bạn chọn block chứa các text nguồn và dim nguồn. Thực tế bản vẽ bạn post chưa có cái block này, mình phải tự tạo ra cái block có chứa các text và dim mẫu của bạn. Lisp mới chỉ thực hiện được việc đổi chiều cao của các text và các dim có cùng style với các text và dim có trong block mẫu. Còn việc đổi các text và dim có trong các block hơi loằng ngoằng hơn nên mình chưa làm hoàn chỉnh được, bạn hãy chờ thêm chút nữa nhé.
Lisp cũng mới chỉ đổi các text trong dim về chiều cao của text trong dim mẫu chứ chưa thay đổi chiều dài đường kích thước được, vì thế sẽ có thể xảy ra việc các đường kích thước này hở khá lớn khi thu nhỏ text của dim hoặc đè lên text khi phóng lớn text của dim. Bạn chờ thêm chút nữa để mình hoàn thiện thêm nhé.

(defun c:chsize ( / bng ebl stlst htlst sdlst hdlst bln ent els stl ht bld sd ent1
els1 std hd sdlst hdlst sst n i et el st bl e1 s1 el1)
(command "undo" "be")
(setq bng (car (entsel " \n Chon doi tuong block nguon "))
ebl (entget bng)
stlst (list)
htlst (list)
sdlst (list)
hdlst (list)
)
(if (= (cdr (assoc 0 ebl)) "INSERT")
(progn
(setq bln (cdr (assoc 2 ebl))
ent (cdr (assoc -2 (tblsearch "block" bln)))
)
)
)
(while ent
(setq els (entget ent))
(if (= (cdr (assoc 0 els)) "TEXT" )
(progn
(setq stl (cdr (assoc 7 els))
ht (cdr (assoc 40 els))
stlst (append stlst (list stl))
htlst (append htlst (list(append stlst (list ht))))
stlst (list)
)
)
)
(if (= (cdr (assoc 0 els )) "DIMENSION")
(progn
(setq bld (cdr (assoc 2 els))
sd (cdr (assoc 3 els))
ent1 (cdr (assoc -2 (tblsearch "block" bld)))
)
(while ent1
(setq els1 (entget ent1))
(if (= (cdr (assoc 0 els1)) "MTEXT")
(progn
(setq std (cdr (assoc 7 els1))
hd (cdr(assoc 40 els1))
sdlst (append sdlst (list sd))
sdlst (append sdlst (list std))
hdlst (append hdlst (list (append sdlst (list hd))))
sdlst (list)
)
)
)
(setq ent1 (entnext ent1))
)
)
)

(setq ent (entnext ent))
)
(alert "\n Chon tap doi tuong dich")
(setq sst (ssget (list (cons 0 "TEXT,DIMENSION,INSERT")))
n (sslength sst)
i 0
)
(while (< i n)
(setq et (ssname sst i)
el (entget et)
)
(if (= (cdr (assoc 0 el)) "TEXT")
(progn
(setq st (cdr (assoc 7 el)))
(foreach ls htlst
(if (= (car ls) st)
(setq el (subst (cons 40 (cadr ls)) (assoc 40 el) el))
)
(entmod el)
)
)
)

(If (= (cdr(assoc 0 el)) "DIMENSION")
(progn
(setq bl (cdr (assoc 2 el))
s1 (cdr (assoc 3 el))
e1 (cdr (assoc -2 (tblsearch "block" bl)))
)
(foreach ls1 hdlst
(if (= (car ls1) s1)
(progn
(while e1
(setq el1 (entget e1))
(if (= (cdr (assoc 0 el1)) "MTEXT")
(setq el1 (subst (cons 40 (caddr ls1)) (assoc 40 el1) el1))
)
(entmod el1)
(entupd e1)
(setq e1 (entnext e1))
)
)
)
)
(command "regen")

)
)




(setq i (1+ i))
)


(command "undo" "e")
(princ)

)

  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1660 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 02 September 2010 - 12:44 AM

:D Trước hết E xin cảm ơn bác thanhbinh nhiều lắm.

E cũng vừa test thử líp bác vừa viết và có một vài chỗ mong bác hoàn thiện hộ E với nhé.

1. KHi thực hiện lísp. Đối với các text nếu có thể bác thêm hộ em với cả cái Mtext với nhé. ^^! (lúc em yêu cầu chưa có cái này, hehee, mới phát sinh )
2. Về đường Dim:
- Em thường để cái text dim nằm trên đường dim, nên cái khoảng hở của đường dim sẽ không có ( hjx, tại em vẽ cai file minh họa láu quá, nếu bác không sửa cái này cũng đã quá tốt cho em rồi).
- Khi tỉ lệ cái TEXT của dim nguồn và dim đích quá chênh lệch nhau thì cái điểm gốc của text nó vẫn bị giữ nguyên
......VD: Khi text của dim đích to gấp khoảng 10 hoặc 20 lần text của dim nguồn thì khi chạy lệnh xong, vị trí TEXT của dim đích là rất xa đường dim. Và ngược lại nếu TEXT của dim đích quá nhỏ so với TEXT của dim nguồn thì nó sẽ đè lên đường đim ( mong bác fix lại cho khoảng cách của TEXTđường đim luôn nằm trong khoảng 1/3 chiều cao của TEXT).
3. Bác giúp em bỏ cái alert đi được không, tại nó làm mình phải thêm 1 thao tác bấm OK ( he, em lười quá, nhưng khi làm với nhiều bản vẽ cũng khá mệt )

EM cảm ơn bác rất nhiều !!! *****

:D Chúc mọi ngươi một quốc khánh vui vẻ :D
  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860