Đến nội dung


Hình ảnh
- - - - -

Cho mình xin Lisp Erase short object và Extend undershoots!


  • Please log in to reply
10 replies to this topic

#1 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 08 January 2010 - 10:00 AM

Nhờ các bạn viết dùm mình lisp dùng để Erase short object và Extend undershoots được ko ah?Do em làm quy hoạch hay xử lý nền địa chính mà bên đo đạc gửi qua, nhưng bên đó vẽ ẩu nên có những line nó ngắn quá làm chưa kín thửa, hoặc nó vẽ dài quá dư!
- Đối với lisp Erase short object thì cho phép người nhập khoảng cách dư dài nhất thì các đoạn nhỏ hơn nó sẽ tự hiểu và Trim.
- Đối với lisp Extend undershoots Lisp cũng vậy, cho phép người nhập giá trị MAX cần extend thì các đồi tượng có giá trị nhỏ hơn sẽ tự động extend!
Cảm ơn các bạn trước!
Cho mình gửi file ví dụ nhe!
http://www.cadviet.c...iles/2/vd_5.dwg
  • 0

#2 elleHCSC

elleHCSC

    biết lệnh copy

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

Đã gửi 08 January 2010 - 11:41 AM

Nhờ các bạn viết dùm mình lisp dùng để Erase short object và Extend undershoots được ko ah?Do em làm quy hoạch hay xử lý nền địa chính mà bên đo đạc gửi qua, nhưng bên đó vẽ ẩu nên có những line nó ngắn quá làm chưa kín thửa, hoặc nó vẽ dài quá dư!
- Đối với lisp Erase short object thì cho phép người nhập khoảng cách dư dài nhất thì các đoạn nhỏ hơn nó sẽ tự hiểu và Trim.
- Đối với lisp Extend undershoots Lisp cũng vậy, cho phép người nhập giá trị MAX cần extend thì các đồi tượng có giá trị nhỏ hơn sẽ tự động extend!
Cảm ơn các bạn trước!
Cho mình gửi file ví dụ nhe!
http://www.cadviet.c...iles/2/vd_5.dwg


Bạn kiếm và cài phiên bản AutoCad Map vào mà dùng...trong đó nó có tool "Cleanup" làm được tất cả các yêu cầu của bạn với "chi phí" 8.000 VND

Hình đã gửi

Chúc vui !
  • 0
Share for all, all will share !

--------------------
HTTP://WWW.HCSC.VN
HTTP://WWW.HCSC.COM.VN

#3 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 08 January 2010 - 11:46 AM

Bạn kiếm và cài phiên bản AutoCad Map vào mà dùng...trong đó nó có tool "Cleanup" làm được tất cả các yêu cầu của bạn với "chi phí" 8.000 VND

Thanks bạn!minh đang dùng Autodesk 3D Map 2010 nè!Cái mình muốn là mình chỉ nhập giá trị MAX thôi!còn những cái nhỏ hơn nó sẽ tự động luôn!Với lại dùng Lisp nó nhẹ hơn là phải cài thêm 1 phần mềm!Với lại mỗi lần mình dùng máy khác thì lại mắc công cài MAP vào nữa!Thanks!
  • 0

#4 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 08 January 2010 - 02:20 PM

Thanks bạn!minh đang dùng Autodesk 3D Map 2010 nè!Cái mình muốn là mình chỉ nhập giá trị MAX thôi!còn những cái nhỏ hơn nó sẽ tự động luôn!Với lại dùng Lisp nó nhẹ hơn là phải cài thêm 1 phần mềm!Với lại mỗi lần mình dùng máy khác thì lại mắc công cài MAP vào nữa!Thanks!

Truong Thanh có thể đọc các bài viết trong topic này :
Nhờ các bạn viết lisp overshoot và undershoot
  • 1

#5 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 08 January 2010 - 03:40 PM

Truong Thanh có thể đọc các bài viết trong topic này :
Nhờ các bạn viết lisp overshoot và undershoot

- Cho mình hỏi 1 tí được ko vậy TUE_NV!Lisp này nó chỉ đúng với 2 layer 1 và layer 2 thôi!Mình muốn 2 cái đó cùng 1 layer được ko hoặc là nếu 2 layer thì 2 layer đó mình tự chọn được ko?
- Với lại cái này chỉ đúng với Pline thôi, mình muốn thêm LINE dc ko?
Thanks TUE_NV trước!
File Lisp http://www.cadviet.c...files/2/chk.lsp
File Cad http://www.cadviet.c.../drawing3_1.dwg
  • 0

#6 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 January 2010 - 10:38 AM

- Cho mình hỏi 1 tí được ko vậy TUE_NV!Lisp này nó chỉ đúng với 2 layer 1 và layer 2 thôi!Mình muốn 2 cái đó cùng 1 layer được ko hoặc là nếu 2 layer thì 2 layer đó mình tự chọn được ko?
- Với lại cái này chỉ đúng với Pline thôi, mình muốn thêm LINE dc ko?
Thanks TUE_NV trước!
File Lisp http://www.cadviet.c...files/2/chk.lsp
File Cad http://www.cadviet.c.../drawing3_1.dwg

Chào truongthanh

Dựa vào file .dwg mà bạn đã upload, Tue_NV có thể hiểu rằng bạn muốn kiểm tra overshoot và undershoot với 2 đường LINE ngắn thuộc Layer THUADAT. Nhưng khi chạy Lisp thì Lisp không những kiểm tra overshoot và undershoot với 2 đường LINE ngắn mà còn kiểm tra với 2 đường LINE dài thuộc Layer THUADAT. Vì LINE ngắn và LINE dài đều thuộc 1 layer THUADAT và ta thấy đường LINE dài cũng bị vượt quá hoặc chưa vượt quá.

TRUONGTHANH có thể nói rõ hơn và upload file .dwg đầy đủ hơn và nói rõ : Bạn muốn kiểm tra overshoot và undershoot với loại đường nào? thuộc Layer nào? Nếu chúng cùng thuộc 1 Layer thì tất cả các đường thuộc Layer đó đều bị kiểm tra cả. Bạn nói rõ nhé.
  • 1

#7 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 12 January 2010 - 08:48 AM

Chào truongthanh

Dựa vào file .dwg mà bạn đã upload, Tue_NV có thể hiểu rằng bạn muốn kiểm tra overshoot và undershoot với 2 đường LINE ngắn thuộc Layer THUADAT. Nhưng khi chạy Lisp thì Lisp không những kiểm tra overshoot và undershoot với 2 đường LINE ngắn mà còn kiểm tra với 2 đường LINE dài thuộc Layer THUADAT. Vì LINE ngắn và LINE dài đều thuộc 1 layer THUADAT và ta thấy đường LINE dài cũng bị vượt quá hoặc chưa vượt quá.

TRUONGTHANH có thể nói rõ hơn và upload file .dwg đầy đủ hơn và nói rõ : Bạn muốn kiểm tra overshoot và undershoot với loại đường nào? thuộc Layer nào? Nếu chúng cùng thuộc 1 Layer thì tất cả các đường thuộc Layer đó đều bị kiểm tra cả. Bạn nói rõ nhé.

ý mình là làm sao nó hiểu được những chỗ mà mình đánh dấu đỏ đó TUE_NV!Mình ko biết là nếu 2 đối tượng đó cùng 1 layer thì nó có hiểu và cho kết quả như mình muốn ko nữa?Chắc phải nhờ TUE_NV đưa ra giải pháp dùm mình nhé!Tốt nhất là một layer!nếu ko được thì 2 layer và 2 layer đó do mình chọn!nhờ TUE_NV giúp mình nhé!
http://www.cadviet.c...s/2/vdmau_1.dwg
  • 0

#8 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 January 2010 - 02:44 PM

ý mình là làm sao nó hiểu được những chỗ mà mình đánh dấu đỏ đó TUE_NV!Mình ko biết là nếu 2 đối tượng đó cùng 1 layer thì nó có hiểu và cho kết quả như mình muốn ko nữa?Chắc phải nhờ TUE_NV đưa ra giải pháp dùm mình nhé!Tốt nhất là một layer!nếu ko được thì 2 layer và 2 layer đó do mình chọn!nhờ TUE_NV giúp mình nhé!
http://www.cadviet.c...s/2/vdmau_1.dwg

truongthanh sử dụng code này thử xem nhé :

(defun c:ous(/ oldco oldos mau lay ss i ent dau cuoi ang sskd sskc)
(setq oldco (getvar "cecolor"))
(setvar "cecolor" "1")
(setvar "pdmode" 3)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq mau (car(entsel "\n Pick vao duong mau :")))
(command "zoom" "e")
(setq lay (cdr(assoc 8 (entget mau))))
(setq ss (ssget "X" (list(cons 0 "*LINE") (cons 8 lay)))i 0)
(command "layer" "off" "*" "y" "on" lay "")
(while (< i (sslength ss))
(setq ent (ssname ss i)
dau (vlax-curve-getStartpoint ent)
cuoi (vlax-curve-getendpoint ent)
ang (angle dau cuoi)
sskd (ssget "f" (list dau (polar dau ang 0.01)))
sskc (ssget "f" (list cuoi (polar cuoi ang 0.01)))
)
(if (= (sslength sskd) 1) (command "point" dau))
(if (= (sslength sskc) 1) (command "point" cuoi))
(setq i (1+ i))
)
(command "layer" "on" "*" "")
(command "zoom" "P")
(setvar "osmode" oldos)
(setvar "cecolor" oldco)
(setvar "pdsize" 1)
(princ)
)


:cheers:
  • 1

#9 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 12 January 2010 - 04:48 PM

truongthanh sử dụng code này thử xem nhé :
[

cảm ơn TUE_NV rất rất nhiều!mình đang test thử và chưa thấy có vấn đề gì phát sinh!có gì mình sẽ báo cho TUE nhé!
Nhưng TUE_NV có thể cải tiến thêm 1 tí nữa được ko? đó là cho phép mình chọn vùng để làm!chứ mình mới test thử 1 file khá nhiều nhà thì máy bị treo mất!mình muốn chọn từng vùng để làm dc ko?Thanks TUE_NV rất nhiều!Chúc sức khỏe bạn!
  • 0

#10 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 13 January 2010 - 05:46 AM

cảm ơn TUE_NV rất rất nhiều!mình đang test thử và chưa thấy có vấn đề gì phát sinh!có gì mình sẽ báo cho TUE nhé!
Nhưng TUE_NV có thể cải tiến thêm 1 tí nữa được ko? đó là cho phép mình chọn vùng để làm!chứ mình mới test thử 1 file khá nhiều nhà thì máy bị treo mất!mình muốn chọn từng vùng để làm dc ko?Thanks TUE_NV rất nhiều!Chúc sức khỏe bạn!

truongthanh thử code này xem nhé :

(defun c:ous(/ oldco oldos mau lay ss i ent dau cuoi ang sskd sskc chon)
(vl-load-com)
(setq oldco (getvar "cecolor"))
(setvar "cecolor" "1")
(setvar "pdmode" 3)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq mau (car(entsel "\n Pick vao duong mau :")))

(setq lay (cdr(assoc 8 (entget mau))))
(initget "V A")
(setq chon (getkword "\n Ban muon chon theo Vung hay chon toan bo data < V / A > :"))
(if (= chon "V")
(setq ss (ssget (list(cons 0 "*LINE") (cons 8 lay))))
(setq ss (ssget "X" (list(cons 0 "*LINE") (cons 8 lay))))
)
(command "zoom" "e")
(setq i 0)
(while (< i (sslength ss))
(setq ent (ssname ss i)
dau (vlax-curve-getStartpoint ent)
cuoi (vlax-curve-getendpoint ent)
ang (angle dau cuoi)
sskd (ssget "f" (list dau (polar dau ang 0.01)))
sskc (ssget "f" (list cuoi (polar cuoi ang 0.01)))
)
(if (= (sslength sskd) 1) (command "point" dau))
(if (= (sslength sskc) 1) (command "point" cuoi))
(setq i (1+ i))
)
(command "zoom" "P")
(setvar "osmode" oldos)
(setvar "cecolor" oldco)
(setvar "pdsize" 1)
(princ)
)

  • 1

#11 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 13 January 2010 - 06:46 AM

truongthanh thử code này xem nhé :

Hix hix!ko biết nói gì ngoài 2 chữ CẢM ƠN TUE_NV!Bạn thật giỏi và nhiệt tình!ý tưởng của TUE thật là hay!
Thanks!
  • 0