Đến nội dung


Hình ảnh
- - - - -

tìm kiếm và hiển thị thông tin


  • Please log in to reply
10 replies to this topic

#1 tnmtpc

tnmtpc

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 370 Bài viết
Điểm đánh giá: 206 (khá)

Đã gửi 30 November 2007 - 03:56 PM

Mình là dân bản đồ,rất thích dùng Autocad. Đang rất cần đọan lisp với yêu cầu như sau: mình đã có một bản đồ gồm nhiều thửa đất, trên đó đã có các thông tin: lọai ruộng đất, số hiệu thửa đất, diện tích thửa đất, tên chủ sử dụng...Mỗi thông tin được thiết kế trên một lớp riêng biệt (ví dụ lọai ruộng đất thuộc lớp "loaidat"), khi nhập thông tin cần tìm theo lớp(số hiệu thửa đất hoặc tên chủ sử dụng...),lisp tìm kiếm và zoom tới thửa đất đó. Các sư huynh giúp mình với nhé! mình là tân binh, mong các huynh chỉ giáo
  • 0

#2 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 30 November 2007 - 04:21 PM

Mình là dân bản đồ,rất thích dùng Autocad. Đang rất cần đọan lisp với yêu cầu như sau: mình đã có một bản đồ gồm nhiều thửa đất, trên đó đã có các thông tin: lọai ruộng đất, số hiệu thửa đất, diện tích thửa đất, tên chủ sử dụng...Mỗi thông tin được thiết kế trên một lớp riêng biệt (ví dụ lọai ruộng đất thuộc lớp "loaidat"), khi nhập thông tin cần tìm theo lớp(số hiệu thửa đất hoặc tên chủ sử dụng...),lisp tìm kiếm và zoom tới thửa đất đó. Các sư huynh giúp mình với nhé! mình là tân binh, mong các huynh chỉ giáo



Cái này thì dùng MapInfo là OK liền. Dùng chi Acad cho cực.
  • 0

#3 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 30 November 2007 - 04:36 PM

Mình là dân bản đồ,rất thích dùng Autocad. Đang rất cần đọan lisp với yêu cầu như sau: mình đã có một bản đồ gồm nhiều thửa đất, trên đó đã có các thông tin: lọai ruộng đất, số hiệu thửa đất, diện tích thửa đất, tên chủ sử dụng...Mỗi thông tin được thiết kế trên một lớp riêng biệt (ví dụ lọai ruộng đất thuộc lớp "loaidat"), khi nhập thông tin cần tìm theo lớp(số hiệu thửa đất hoặc tên chủ sử dụng...),lisp tìm kiếm và zoom tới thửa đất đó. Các sư huynh giúp mình với nhé! mình là tân binh, mong các huynh chỉ giáo

Bạn dùng lệnh find sẽ thấy ngay cái mình cần!
  • 0

#4 tnmtpc

tnmtpc

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 370 Bài viết
Điểm đánh giá: 206 (khá)

Đã gửi 30 November 2007 - 04:49 PM

Cái này thì dùng MapInfo là OK liền. Dùng chi Acad cho cực.

Cám ơn bạn,dùng Mapinfo thì tuyệt chiêu rồi,nhưng ở đây chỉ có file dữ liệu không gian, chưa có file dữ liệu thuộc tính mà!
  • 0

#5 tnmtpc

tnmtpc

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 370 Bài viết
Điểm đánh giá: 206 (khá)

Đã gửi 30 November 2007 - 04:53 PM

Bạn dùng lệnh find sẽ thấy ngay cái mình cần!

Mình dùng thử rồi (trên Autocad 14),nhưng lệnh find chỉ tìm và thay thế text,đâu zoom tới trung tâm màn ảnh vị trí thửa đất như mình đã nêu
  • 0

#6 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 December 2007 - 01:23 PM

Mình dùng thử rồi (trên Autocad 14),nhưng lệnh find chỉ tìm và thay thế text,đâu zoom tới trung tâm màn ảnh vị trí thửa đất như mình đã nêu

Mình bỏ R14 lâu rồi, không nhớ nữa. Sao bạn không dùng CAD mới hơn? Nếu máy yếu có thể dùng cỡ 2002 cũng được. Trong hộp thoại Find and Replace, nếu tìm thấy thì bấm vào "Zoom to". Lập trình lisp cho cái này thì dễ thôi, nhưng khó coi lắm!
  • 0

#7 se7en

se7en

    biết vẽ ellipse

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

Đã gửi 03 December 2007 - 10:50 AM

Mình là dân bản đồ,rất thích dùng Autocad. Đang rất cần đọan lisp với yêu cầu như sau: mình đã có một bản đồ gồm nhiều thửa đất, trên đó đã có các thông tin: lọai ruộng đất, số hiệu thửa đất, diện tích thửa đất, tên chủ sử dụng...Mỗi thông tin được thiết kế trên một lớp riêng biệt (ví dụ lọai ruộng đất thuộc lớp "loaidat"), khi nhập thông tin cần tìm theo lớp(số hiệu thửa đất hoặc tên chủ sử dụng...),lisp tìm kiếm và zoom tới thửa đất đó. Các sư huynh giúp mình với nhé! mình là tân binh, mong các huynh chỉ giáo

Dùng CAD fiên bản mới hơn đi bạn.Mà nếu dùng cách này thì cũng không hay vì không chọn lọc được dữ liệu. Ví dụ có cả chục tên chủ sử dụng trùng nhau thì chẳng lẻ zoom đến từng cái để tìm ah? Nếu là dân bản đồ thì bạn không nên quản lý thông tin như thế, chịu khó ngồi xuống edit lại dữ liệu,chuyển sang dùng MapInfo hay ArcGIS.Bỏ công làm dữ lại dữ liệu 1 lần, rồi sau này dùng cho thoải mái...
  • 0
Mê xe và súng
Thích để súng trong xe

#8 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 14 January 2008 - 08:52 PM

Mình là dân bản đồ,rất thích dùng Autocad. Đang rất cần đọan lisp với yêu cầu như sau: mình đã có một bản đồ gồm nhiều thửa đất, trên đó đã có các thông tin: lọai ruộng đất, số hiệu thửa đất, diện tích thửa đất, tên chủ sử dụng...Mỗi thông tin được thiết kế trên một lớp riêng biệt (ví dụ lọai ruộng đất thuộc lớp "loaidat"), khi nhập thông tin cần tìm theo lớp(số hiệu thửa đất hoặc tên chủ sử dụng...),lisp tìm kiếm và zoom tới thửa đất đó. Các sư huynh giúp mình với nhé! mình là tân binh, mong các huynh chỉ giáo

Lisp dưới đây tìm kiếm text và zoom tới nó. Lệnh là FZ (find and zoom).
(defun c:fz( / tf sst lste ent p1 p2)
(setq
tf (getstring t "\nChuoi can tim (ket thuc bang enter):")
sst (ssget "X" (list (cons 0 "TEXT")
(cons 1 (strcat "*" tf "*"))
)
)
lste (ss2ent sst)
)
(alert (strcat "\nCo " (itoa (length lste)) " doi tuong duoc tim thay!"))
(foreach ent lste
(setq
tt (entget ent)
p (cdr (assoc 10 tt))
z (textbox tt)
p1 (trans (mapcar '+ p (car z)) 0 1)
p2 (trans (mapcar '+ p (cadr z)) 0 1)
)
(command ".zoom" p1 p2)
(command ".zoom" "0.5xp")
(getstring "\nNhan enter hoac spacebar de tiep tuc!")
)
(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)
)

  • 3

#9 hoangkimoanh

hoangkimoanh

    biết vẽ spline

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

Đã gửi 12 June 2015 - 09:35 AM

Nhờ các bác sửa thêm phần đếm đối tượng đang cần tìm là thứ mấy trong tổng số đối tượng cần tìm với ạ!

Nhan enter hoac spacebar de tiep tuc (doi tuong thu 2)!

Nhan enter hoac spacebar de tiep tuc (doi tuong thu 3)!

Nhan enter hoac spacebar de tiep tuc (doi tuong thu ...)!


  • 0

#10 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 12 June 2015 - 10:40 AM

Đây bạn!

(defun c:fz( / tf sst lste ent tt p z p1 p2 y)
 (setq tf (getstring t "\nChuoi can tim (ket thuc bang enter):")
       sst (ssget "X" (list (cons 0 "TEXT") (cons 1 (strcat "*" tf "*"))))
       lste (ss2ent sst))
 (alert (strcat "\nCo " (itoa (length lste)) " doi tuong duoc tim thay!"))
 (setq y 1)
 (foreach ent lste
  (setq tt (entget ent)
        p (cdr (assoc 10 tt))
        z (textbox tt)
        p1 (trans (mapcar '+ p (car z)) 0 1)
        p2 (trans (mapcar '+ p (cadr z)) 0 1))
  (command ".zoom" p1 p2)
  (command ".zoom" "0.3xp")
  (getstring (strcat "\nNhan enter hoac spacebar de tiep tuc (doi tuong thu " (itoa y) ")!"))
  (setq y (1+ y)))
 (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))

  • 1

* 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.


#11 hoangkimoanh

hoangkimoanh

    biết vẽ spline

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

Đã gửi 14 June 2015 - 06:41 AM

cảm ơn bác Hà nhiều nhé!


  • 0