Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp Dim R tại Arc của LWPolyline


  • Please log in to reply
15 replies to this topic

#1 vothanhdn

vothanhdn

    biết vẽ ellipse

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

Đã gửi 21 May 2012 - 02:37 PM

Nhờ mọi người viết giùm e lisp Dim bán kính tại vị trí của bất kỳ đường Arc nào trong 1 đường LWPolyline khép kín...
Phần này e mày mò mãi mà vẫn chưa ra được.

Cám ơn các bác.
  • 0

Ứng dụng hỗ trợ thiết kế mạng lưới thoát nước VTD

  - Tính toán mạng lưới thoát nước

  - Vẽ trắc dọc, bình đồ thoát nước

......

Truy cập http://www.vtdvn.com

------------------------------------------------------------------------------------------

"Không có gì chắc chắn, chỉ có 1 điều chắc chắn là không có gì chắc chắn"...!!!


#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5449 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 21 May 2012 - 02:44 PM

Nhờ mọi người viết giùm e lisp Dim bán kính tại vị trí của bất kỳ đường Arc nào trong 1 đường LWPolyline khép kín...
Phần này e mày mò mãi mà vẫn chưa ra được.
Cám ơn các bác.

Tại sao phải dùng lisp? Muốn Dim Radius ở đâu trên pline thì cứ chọn dimradius, sau đó pick vào đoạn arc thì OK thôi mà.
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#3 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 21 May 2012 - 02:47 PM

(defun c:test()(command "qdim" (car (entsel "\nChon Pline :")) "" "R"))

  • 1

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


#4 vothanhdn

vothanhdn

    biết vẽ ellipse

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

Đã gửi 21 May 2012 - 02:54 PM

Tại sao phải dùng lisp? Muốn Dim Radius ở đâu trên pline thì cứ chọn dimradius, sau đó pick vào đoạn arc thì OK thôi mà.


Cám ơn a!
E muốn Dim số lượng lớn chứ không hẳn chỉ là 1 đường LWPolyline nên Dim từng đoạn Arc rất lâu, nên e muốn nhờ mấy bác viết hộ
  • 0

Ứng dụng hỗ trợ thiết kế mạng lưới thoát nước VTD

  - Tính toán mạng lưới thoát nước

  - Vẽ trắc dọc, bình đồ thoát nước

......

Truy cập http://www.vtdvn.com

------------------------------------------------------------------------------------------

"Không có gì chắc chắn, chỉ có 1 điều chắc chắn là không có gì chắc chắn"...!!!


#5 vothanhdn

vothanhdn

    biết vẽ ellipse

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

Đã gửi 21 May 2012 - 02:58 PM

(defun c:test()(command "qdim" (car (entsel "\nChon Pline :")) "" "R"))


Thank a!
Lisp của a chưa gải quyết triệt để được vấn đề của e cho lắm, nó còn 1 số chỗ:
1. Nếu LWPolyline của e có n đường Arc thì chỉ Dim được (n-1) đường thôi
2. A có thể chỉnh cho nét Dim của đường Arc nắm về hướng tâm của đường Arc được không ah, tại vì tất cả đường Dim này đều nằm hướng ra phía ngoài của đường Arc

Cảm ơn !
  • 0

Ứng dụng hỗ trợ thiết kế mạng lưới thoát nước VTD

  - Tính toán mạng lưới thoát nước

  - Vẽ trắc dọc, bình đồ thoát nước

......

Truy cập http://www.vtdvn.com

------------------------------------------------------------------------------------------

"Không có gì chắc chắn, chỉ có 1 điều chắc chắn là không có gì chắc chắn"...!!!


#6 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 21 May 2012 - 03:25 PM

Mình không có làm ra, cái này do thằng CAD nó cung cấp lệnh đó thôi :) ^^
  • 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


#7 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 22 May 2012 - 11:52 AM


Thank a!
Lisp của a chưa gải quyết triệt để được vấn đề của e cho lắm, nó còn 1 số chỗ:
1. Nếu LWPolyline của e có n đường Arc thì chỉ Dim được (n-1) đường thôi
2. A có thể chỉnh cho nét Dim của đường Arc nắm về hướng tâm của đường Arc được không ah, tại vì tất cả đường Dim này đều nằm hướng ra phía ngoài của đường Arc

Cảm ơn !

Hề hề hề,
Phải chăng bạn muốn cái này.


(defun c:darp (/ oldos ent obj elst plst blst p par pd i)
(vl-load-com)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(command "undo" "be")
(setq ent (car (entsel "\n Chon lwpolyline chua arc"))
obj (vlax-ename->vla-object ent)
elst (entget ent)
plst (list)
blst (list)
)
(foreach a elst
(if (= (car a) 10)
(setq plst (append plst (list (cdr a))))
)
(if (= (car a) 42)
(setq blst (append blst (list (cdr a))))
)
)
(setq i 0)
(foreach b blst
(if (not (equal b 0 0.000001))
(progn
(setq p (nth i plst)
par (vlax-curve-getparamatpoint obj p)
pd (vlax-curve-getpointatparam obj (+ par 0.5))
)
(command "dimradius" pd (getpoint pd "\n Chon diem dat kich thuoc"))
)
)
(setq i (1+ i))
)
(command "undo" "e")
(setvar "osmode" oldos)
(princ)
)
Chú ý là việc chọn điểm đặt dim ngoài hay trong hay gì gì đó là do bạn tự chọn chớ không phải do lisp nghen. Lisp sử dụng dimstyle hiện hành của bạn nên nó xấu hay đẹp cũng là do bạn tự chọn dimstyle chớ lisp nó hổng có chịu trách nhiệm nghen.
Nếu có gì chưa ưng ý thì hãy post lên nghen.
  • 2
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#8 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 22 May 2012 - 02:11 PM

Qdim rõ ràng dim đủ n arc, không hiểu số n-1 là ở đâu ra :)
  • 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


#9 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5449 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 22 May 2012 - 02:29 PM

n và (n-1) Két ạ. Khi vẽ đến điểm thứ 2 của arc mà chọn close thì nó (n-1), còn lại là n. Cái này chắc cad có ý đồ gì chăng, hay sơ suất?
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#10 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 22 May 2012 - 05:42 PM

Cái này ket cũng k rõ nữa :D

Đã test, đúng là với Vertex đóng bằng close thì cad k tính vào khi đo, ngay cả với đoạn thẳng.
  • 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


#11 vothanhdn

vothanhdn

    biết vẽ ellipse

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

Đã gửi 23 May 2012 - 09:10 AM

Hề hề hề,
Phải chăng bạn muốn cái này.



(defun c:darp (/ oldos ent obj elst plst blst p par pd i)
(vl-load-com)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(command "undo" "be")
(setq ent (car (entsel "\n Chon lwpolyline chua arc"))
obj (vlax-ename->vla-object ent)
elst (entget ent)
plst (list)
blst (list)
)
(foreach a elst
(if (= (car a) 10)
(setq plst (append plst (list (cdr a))))
)
(if (= (car a) 42)
(setq blst (append blst (list (cdr a))))
)
)
(setq i 0)
(foreach b blst
(if (not (equal b 0 0.000001))
(progn
(setq p (nth i plst)
par (vlax-curve-getparamatpoint obj p)
pd (vlax-curve-getpointatparam obj (+ par 0.5))
)
(command "dimradius" pd (getpoint pd "\n Chon diem dat kich thuoc"))
)
)
(setq i (1+ i))
)
(command "undo" "e")
(setvar "osmode" oldos)
(princ)
)
Chú ý là việc chọn điểm đặt dim ngoài hay trong hay gì gì đó là do bạn tự chọn chớ không phải do lisp nghen. Lisp sử dụng dimstyle hiện hành của bạn nên nó xấu hay đẹp cũng là do bạn tự chọn dimstyle chớ lisp nó hổng có chịu trách nhiệm nghen.
Nếu có gì chưa ưng ý thì hãy post lên nghen.


Cám ơn a!

Có cách nào getpoint chính là tâm của đường Arc không vậy a, chứ làm theo lisp kiểu này e nghĩ thì cũng giống với việc dùng DRA để Dim rồi, hy vọng mọi người giúp được phần này.

Cám ơn mọi người nhiều...
  • 0

Ứng dụng hỗ trợ thiết kế mạng lưới thoát nước VTD

  - Tính toán mạng lưới thoát nước

  - Vẽ trắc dọc, bình đồ thoát nước

......

Truy cập http://www.vtdvn.com

------------------------------------------------------------------------------------------

"Không có gì chắc chắn, chỉ có 1 điều chắc chắn là không có gì chắc chắn"...!!!


#12 vothanhdn

vothanhdn

    biết vẽ ellipse

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

Đã gửi 24 May 2012 - 09:18 AM

E thấy hình như vấn đề này khó giải quyết thì phải? Không thấy ai giúp nữa rồi...
  • 0

Ứng dụng hỗ trợ thiết kế mạng lưới thoát nước VTD

  - Tính toán mạng lưới thoát nước

  - Vẽ trắc dọc, bình đồ thoát nước

......

Truy cập http://www.vtdvn.com

------------------------------------------------------------------------------------------

"Không có gì chắc chắn, chỉ có 1 điều chắc chắn là không có gì chắc chắn"...!!!


#13 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5449 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 24 May 2012 - 10:06 AM

E thấy hình như vấn đề này khó giải quyết thì phải? Không thấy ai giúp nữa rồi...

Cũng hơi vất vả tí. Tôi đã thử chọn tâm arc thì hình dim nó ra 1 đường thẳng nhìn rất kỳ. Tôi ngại không đúng ý bạn. Bạn đã thử chưa, nếu rồi và ok thì post bản vẽ kết quả lên xem mặt mũi, kẻo sợ viết sai ý bạn thì khổ.
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#14 vothanhdn

vothanhdn

    biết vẽ ellipse

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

Đã gửi 24 May 2012 - 11:35 AM

Cũng hơi vất vả tí. Tôi đã thử chọn tâm arc thì hình dim nó ra 1 đường thẳng nhìn rất kỳ. Tôi ngại không đúng ý bạn. Bạn đã thử chưa, nếu rồi và ok thì post bản vẽ kết quả lên xem mặt mũi, kẻo sợ viết sai ý bạn thì khổ.


Yêu cầu giống như file CAD nè a.
Có thể Dim Arc chọn điểm đích để Dim tại trung điểm của tâm đường Arc và điểm giữa của cung tròn
Hy vọng có thể được
http://www.cadviet.c.../3/67034_vd.dwg

Cám ơn a
  • 0

Ứng dụng hỗ trợ thiết kế mạng lưới thoát nước VTD

  - Tính toán mạng lưới thoát nước

  - Vẽ trắc dọc, bình đồ thoát nước

......

Truy cập http://www.vtdvn.com

------------------------------------------------------------------------------------------

"Không có gì chắc chắn, chỉ có 1 điều chắc chắn là không có gì chắc chắn"...!!!


#15 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 24 May 2012 - 02:09 PM

E thấy hình như vấn đề này khó giải quyết thì phải? Không thấy ai giúp nữa rồi...

Hề hề hề,
Khó thật đấy. Khó nhất là phải đọc những điều ..... dở hơi ở trên bạn ạ.
Hãy thử cái này coi đã hết khó chưa ???


(defun c:darp (/ oldos ent obj elst plst blst p par pd i pt ssl)
(vl-load-com)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq ent (car (entsel "\n Chon lwpolyline chua arc"))
obj (vlax-ename->vla-object ent)
elst (entget ent)
plst (list)
blst (list)
)
(foreach a elst
(if (= (car a) 10)
(setq plst (append plst (list (cdr a))))
)
(if (= (car a) 42)
(setq blst (append blst (list (cdr a))))
)
)
(setq i 0)
(foreach b blst
(if (not (equal b 0 0.000001))
(progn
(setq p (nth i plst)
par (vlax-curve-getparamatpoint obj p)
pd (vlax-curve-getpointatparam obj (+ par 0.5))
)
(command "undo" "be")
(setq ssl (acet-explode ent))
(setq pt (cdr (assoc 10 (entget (ssname ssl i)))))
(command "undo" "e")
(command "undo" 1)
(command "dimradius" pd (list (/ (+ (car pt) (car pd)) 2) (/ (+ (cadr pt) (cadr pd)) 2)))
)
)
(setq i (1+ i))
)
(setvar "osmode" oldos)
(princ)
)

Bạn hãy bỏ cái kiểu nói khó nghe ở trên đi nhé nếu còn muốn có sự giúp đỡ.
  • 3
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#16 vothanhdn

vothanhdn

    biết vẽ ellipse

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

Đã gửi 25 May 2012 - 08:53 AM

Hề hề hề,
Khó thật đấy. Khó nhất là phải đọc những điều ..... dở hơi ở trên bạn ạ.
Hãy thử cái này coi đã hết khó chưa ???



(defun c:darp (/ oldos ent obj elst plst blst p par pd i pt ssl)
(vl-load-com)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq ent (car (entsel "\n Chon lwpolyline chua arc"))
obj (vlax-ename->vla-object ent)
elst (entget ent)
plst (list)
blst (list)
)
(foreach a elst
(if (= (car a) 10)
(setq plst (append plst (list (cdr a))))
)
(if (= (car a) 42)
(setq blst (append blst (list (cdr a))))
)
)
(setq i 0)
(foreach b blst
(if (not (equal b 0 0.000001))
(progn
(setq p (nth i plst)
par (vlax-curve-getparamatpoint obj p)
pd (vlax-curve-getpointatparam obj (+ par 0.5))
)
(command "undo" "be")
(setq ssl (acet-explode ent))
(setq pt (cdr (assoc 10 (entget (ssname ssl i)))))
(command "undo" "e")
(command "undo" 1)
(command "dimradius" pd (list (/ (+ (car pt) (car pd)) 2) (/ (+ (cadr pt) (cadr pd)) 2)))
)
)
(setq i (1+ i))
)
(setvar "osmode" oldos)
(princ)
)

Bạn hãy bỏ cái kiểu nói khó nghe ở trên đi nhé nếu còn muốn có sự giúp đỡ.


Thank a!

Cám ơn a và mọi người nhiều
Sorry mọi người vì nếu có câu nào làm mọi người không vui lòng
  • 0

Ứng dụng hỗ trợ thiết kế mạng lưới thoát nước VTD

  - Tính toán mạng lưới thoát nước

  - Vẽ trắc dọc, bình đồ thoát nước

......

Truy cập http://www.vtdvn.com

------------------------------------------------------------------------------------------

"Không có gì chắc chắn, chỉ có 1 điều chắc chắn là không có gì chắc chắn"...!!!