Đến nội dung


Hình ảnh
- - - - -

Cần lisp đánh toạ độ cọc.


  • Please log in to reply
7 replies to this topic

#1 leemindjan

leemindjan

    biết pan

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

Đã gửi 01 July 2008 - 07:44 AM

Mình lại gặp rắc rối với mấy cái cọc,chán ghê,nhờ các bác giúp đỡ,mình chỉ là newbie đang mò mẫm về Autolisp.
Mình có 1 mặt bằng cọc gần cả ngàn cọc nhưng bên nhà thầu thi công lại yêu cầu phải đánh toạ độ quốc gia cho từng cái cọc ấy,thế có chết kô chứ.Mình xin nhờ các bác giúp giùm cái lisp khi chọn vào các vòng tròn ( cọc ) thì nó sẽ ghi ra toạ độ tâm của vòng tròn bên cạnh vòng tròn đó so với 1 toạ độ đã ấn định trước.
Xin các bác giúp giùm mình,đang cần gấp lắm,nhà thầu thi công hối từng ngày.Cám ơn các bác trước nhé. :mellow:
  • 0

#2 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 01 July 2008 - 09:15 AM

Mình lại gặp rắc rối với mấy cái cọc,chán ghê,nhờ các bác giúp đỡ,mình chỉ là newbie đang mò mẫm về Autolisp.
Mình có 1 mặt bằng cọc gần cả ngàn cọc nhưng bên nhà thầu thi công lại yêu cầu phải đánh toạ độ quốc gia cho từng cái cọc ấy,thế có chết kô chứ.Mình xin nhờ các bác giúp giùm cái lisp khi chọn vào các vòng tròn ( cọc ) thì nó sẽ ghi ra toạ độ tâm của vòng tròn bên cạnh vòng tròn đó so với 1 toạ độ đã ấn định trước.
Xin các bác giúp giùm mình,đang cần gấp lắm,nhà thầu thi công hối từng ngày.Cám ơn các bác trước nhé. :mellow:

Bạn dùng thử lisp này, lệnh CC, chọn hàng loạt vòng tròn. Chỗ nào chưa đúng ý (liên quan đến toạ độ quy ước, trình bày kết quả...) thì nêu cụ thể, sửa 1 phát nữa là OK:

;;;-------------------------------------------------------
(defun wtxt (txt p / sty d h) ;;;Write txt on graphic screen, defaul setting
(setq
sty (getvar "textstyle")
d (tblsearch "style" sty)
h (cdr (assoc 40 d))
)
(if (= h 0) (setq h (cdr (assoc 42 d))))
(entmake
(list (cons 0 "TEXT") (cons 7 sty) (cons 1 txt) (cons 10 p) (cons 40 h) (assoc 41 d))
)
)
;;;-------------------------------------------------------
(defun C:CC( / ss e p) ;;;Coordinate of Circles
(setq ss (ssget '((0 . "CIRCLE"))))
(while (setq e (ssname ss 0))
(setq p (cdr (assoc 10 (entget e))))
(wtxt (strcat "x=" (rtos (car p)) "; y=" (rtos (cadr p))) p)
(ssdel e ss)
)
(princ)
)
;;;-------------------------------------------------------

  • 1

#3 cuongtk2

cuongtk2

    biết vẽ ellipse

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

Đã gửi 01 July 2008 - 03:19 PM

ssq viết code gọn gàng đấy. Giờ biết thêm chiêu (while .... (ssdel e ss )) , hay quá. Đi một ngày đàng học 1 sàng khôn.
  • 0

#4 leemindjan

leemindjan

    biết pan

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

Đã gửi 02 July 2008 - 12:50 AM

Bạn dùng thử lisp này, lệnh CC, chọn hàng loạt vòng tròn. Chỗ nào chưa đúng ý (liên quan đến toạ độ quy ước, trình bày kết quả...) thì nêu cụ thể, sửa 1 phát nữa là OK:


;;;-------------------------------------------------------
(defun wtxt (txt p / sty d h) ;;;Write txt on graphic screen, defaul setting
(setq
sty (getvar "textstyle")
d (tblsearch "style" sty)
h (cdr (assoc 40 d))
)
(if (= h 0) (setq h (cdr (assoc 42 d))))
(entmake
(list (cons 0 "TEXT") (cons 7 sty) (cons 1 txt) (cons 10 p) (cons 40 h) (assoc 41 d))
)
)
;;;-------------------------------------------------------
(defun C:CC( / ss e p) ;;;Coordinate of Circles
(setq ss (ssget '((0 . "CIRCLE"))))
(while (setq e (ssname ss 0))
(setq p (cdr (assoc 10 (entget e))))
(wtxt (strcat "x=" (rtos (car p)) "; y=" (rtos (cadr p))) p)
(ssdel e ss)
)
(princ)
)
;;;-------------------------------------------------------


Mình làm được rồi,cám ơn bác ssg nhiều lắm.
  • 0

#5 trungudic

trungudic

    biết zoom

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

Đã gửi 10 July 2008 - 11:02 AM

Hay quá, mình muốn hỏi ssg là bạn có thể viết cho mình một cái list để đánh toạ độ điểm được không và toạ độ XY khi hiện lên có thể chỉnh được thành 1 hoặc 2 hàng tuỳ bố cục bản vẽ.
  • 0

#6 eng-hiep

eng-hiep

    biết lệnh erase

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

Đã gửi 08 December 2009 - 08:43 AM

Bạn dùng thử lisp này, lệnh CC, chọn hàng loạt vòng tròn. Chỗ nào chưa đúng ý (liên quan đến toạ độ quy ước, trình bày kết quả...) thì nêu cụ thể, sửa 1 phát nữa là OK:


;;;-------------------------------------------------------
(defun wtxt (txt p / sty d h) ;;;Write txt on graphic screen, defaul setting
(setq
sty (getvar "textstyle")
d (tblsearch "style" sty)
h (cdr (assoc 40 d))
)
(if (= h 0) (setq h (cdr (assoc 42 d))))
(entmake
(list (cons 0 "TEXT") (cons 7 sty) (cons 1 txt) (cons 10 p) (cons 40 h) (assoc 41 d))
)
)
;;;-------------------------------------------------------
(defun C:CC( / ss e p) ;;;Coordinate of Circles
(setq ss (ssget '((0 . "CIRCLE"))))
(while (setq e (ssname ss 0))
(setq p (cdr (assoc 10 (entget e))))
(wtxt (strcat "x=" (rtos (car p)) "; y=" (rtos (cadr p))) p)
(ssdel e ss)
)
(princ)
)
;;;-------------------------------------------------------

Bác ơi ! Sao em dùng lisp này ko được nhỉ ??? Gõ AP và Load file này rồi ra ngoài màn hình gõ CC ko thấy gì cả ??? Thx
  • 0

#7 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1435 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 08 December 2009 - 09:28 AM

Bác ơi ! Sao em dùng lisp này ko được nhỉ ??? Gõ AP và Load file này rồi ra ngoài màn hình gõ CC ko thấy gì cả ??? Thx

Đừng dowload bằng cách click vào Download lisp file.
(chức năng này của diễn đàn đang bị lỗi)
Bạn copy toàn bộ text trong mục CODEBOX và luu thành file *.lsp.

hoặc tại file CC.lsp (mà bạn đã dowload bằng cách click vào Download lisp file. )
thay thế dòng (setq ss (ssget \'((0 . "CIRCLE"))))
bằng dòng : (setq ss (ssget '((0 . "CIRCLE"))))

To ADMIN :
- đề nghị Admin xem xét, cân nhắc giữa tiện lợi và phiền phức của chức năng Download lisp file trên diễn đàn !
  • 1

#8 eng-hiep

eng-hiep

    biết lệnh erase

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

Đã gửi 08 December 2009 - 09:55 AM

Đừng dowload bằng cách click vào Download lisp file.
(chức năng này của diễn đàn đang bị lỗi)
Bạn copy toàn bộ text trong mục CODEBOX và luu thành file *.lsp.

hoặc tại file CC.lsp (mà bạn đã dowload bằng cách click vào Download lisp file. )
thay thế dòng (setq ss (ssget \'((0 . "CIRCLE"))))
bằng dòng : (setq ss (ssget '((0 . "CIRCLE"))))

To ADMIN :
- đề nghị Admin xem xét, cân nhắc giữa tiện lợi và phiền phức của chức năng Download lisp file trên diễn đàn !

Đúng vậy ! Em đã làm được rồi , cảm ơn bác nhiều nhé .

Tiện đây ,cho em hỏi thêm là có lisp (hay lệnh) nào có thể chèn 1 ký tự bất kỳ (VD như P , B...) vào 1 số hoặc 1 nhóm số được chọn (sẽ thành P1 ,P2...B1...) không ạ ?

Thx các bác đã quan tâm .
  • 0