Đến nội dung


Hình ảnh
- - - - -

Bảng toạ độ các đỉnh thửa đất


  • Please log in to reply
100 replies to this topic

#1 thanhgam2003

thanhgam2003

    biết vẽ ellipse

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

Đã gửi 30 November 2007 - 09:34 AM

em có một đôi tượng vùng, trong có có rất nhiều các đỉnh khác nhau trong file autocad. Em muốn thể hiện tất cả các đỉnh tọa độ x,y đó như một bản chú thích cho đối bằng bảng exel và insert bảng exel đó vào cad thì em phải sử dụng những lệnh nào? hay các tiện ích lisp khác? (tất cả các vấn đề đó em đều muốn làm trên autocad. hiện tại em dang dùng autocad2004)

Cảm ơn các anh.
  • 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 30 November 2007 - 02:12 PM

em có một đôi tượng vùng, trong có có rất nhiều các đỉnh khác nhau trong file autocad. Em muốn thể hiện tất cả các đỉnh tọa độ x,y đó như một bản chú thích cho đối bằng bảng exel và insert bảng exel đó vào cad thì em phải sử dụng những lệnh nào? hay các tiện ích lisp khác? (tất cả các vấn đề đó em đều muốn làm trên autocad. hiện tại em dang dùng autocad2004)

Cảm ơn các anh.

"Đối tượng vùng" là Region? Nếu đúng thì bạn nên rút kinh nghiệm, không nên dùng tiếng Việt trong các trường hợp này. Dùng thuật ngữ của chính AutoCAD thì ai cũng hiểu.
Đoạn đánh dấu đỏ tiếp theo thì... hiểu chết liền!
Chỉ có thể trả lời chung chung là AutoCAD không có lệnh để làm những việc tương tự như vậy. Nếu muốn phải dùng chương trình, nhưng trước hết, bạn phải diễn đạt lại ý mình một cách đầy đủ, cụ thể và chính xác! Về việc này, bản thân ssg cũng như anh Hoành đã nhắc nhiều lần rồi: Tôi có những cái này -> Yêu cầu chương trình làm những việc này -> Kết quả cuối cùng tôi muốn là thế này
Và tốt nhất là bạn post lên ví dụ minh họa bằng *.dwg và *.xls
  • 0

#3 thanhgam2003

thanhgam2003

    biết vẽ ellipse

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

Đã gửi 01 December 2007 - 08:16 AM

"Đối tượng vùng" là Region? Nếu đúng thì bạn nên rút kinh nghiệm, không nên dùng tiếng Việt trong các trường hợp này. Dùng thuật ngữ của chính AutoCAD thì ai cũng hiểu.
Đoạn đánh dấu đỏ tiếp theo thì... hiểu chết liền!
Chỉ có thể trả lời chung chung là AutoCAD không có lệnh để làm những việc tương tự như vậy. Nếu muốn phải dùng chương trình, nhưng trước hết, bạn phải diễn đạt lại ý mình một cách đầy đủ, cụ thể và chính xác! Về việc này, bản thân ssg cũng như anh Hoành đã nhắc nhiều lần rồi: Tôi có những cái này -> Yêu cầu chương trình làm những việc này -> Kết quả cuối cùng tôi muốn là thế này
Và tốt nhất là bạn post lên ví dụ minh họa bằng *.dwg và *.xls

em minh hoa theo hình upload nhé. Anh nào biết giúp em sớm với nhé
  • 0

#4 se7en

se7en

    biết vẽ ellipse

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

Đã gửi 02 December 2007 - 04:25 PM

em minh hoa theo hình upload nhé. Anh nào biết giúp em sớm với nhé

"Đối tượng vùng" - theo cách nói của bạn thanhgam2003 chính là polygon, nếu nghiên cứu về GIS thì trong GIS dùng từ "Polygon" = "Đối tượng vùng" - trong cad vẫn có sử dụng từ này, cụ thể là Autodesk Map, vì đây là từ chuyên môn về GIS.Nó cũng gần như tương tự Region trong Autocad.
Muốn thực hiện yêu cầu của bạn thì phải viết thêm code, chứ bản thân cad không có sẵn công cụ làm việc đó. Không biết bạn có biết về VBA trong CAD không ? nếu biết chút ít thì tôi có thể giúp bạn.còn lisp thì pó tay vì tui không biết. Yêu cầu của bạn giống như trích hồ sơ kỹ thuật thửa đất dùng trong địa chính vậy... :bigsmile:
  • 0
Mê xe và súng
Thích để súng trong xe

#5 thanhgam2003

thanhgam2003

    biết vẽ ellipse

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

Đã gửi 03 December 2007 - 08:16 AM

"Đối tượng vùng" - theo cách nói của bạn thanhgam2003 chính là polygon, nếu nghiên cứu về GIS thì trong GIS dùng từ "Polygon" = "Đối tượng vùng" - trong cad vẫn có sử dụng từ này, cụ thể là Autodesk Map, vì đây là từ chuyên môn về GIS.Nó cũng gần như tương tự Region trong Autocad.
Muốn thực hiện yêu cầu của bạn thì phải viết thêm code, chứ bản thân cad không có sẵn công cụ làm việc đó. Không biết bạn có biết về VBA trong CAD không ? nếu biết chút ít thì tôi có thể giúp bạn.còn lisp thì pó tay vì tui không biết. Yêu cầu của bạn giống như trích hồ sơ kỹ thuật thửa đất dùng trong địa chính vậy... :)

EM CẢM ƠN ANH. HIX, NHƯNG EM LÀ DÂN BẢN ĐỒ_ DÂN XÃ HỘI CHỨ KHÔNG PHẢI KỸ THUẬT, NÊN VBA EM KHÔNG BIẾT. HUHUHU...CHẮC EM LẠI PHẢI NGỒI GÕ TAY TỪNG HỒ SƠ RỒI.
  • 0

#6 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 03 December 2007 - 08:38 AM

EM CẢM ƠN ANH. HIX, NHƯNG EM LÀ DÂN BẢN ĐỒ_ DÂN XÃ HỘI CHỨ KHÔNG PHẢI KỸ THUẬT, NÊN VBA EM KHÔNG BIẾT. HUHUHU...CHẮC EM LẠI PHẢI NGỒI GÕ TAY TỪNG HỒ SƠ RỒI.


Đừng khóc, hãy làm theo hướng dẫn của bác Ssg, bạn sẽ có cơ hội được giúp đỡ.
Hãy hành động để thể hiện là bạn rất cần trước khi bó gối.
  • 0

#7 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 03 December 2007 - 08:53 AM

EM CẢM ƠN ANH. HIX, NHƯNG EM LÀ DÂN BẢN ĐỒ_ DÂN XÃ HỘI CHỨ KHÔNG PHẢI KỸ THUẬT, NÊN VBA EM KHÔNG BIẾT. HUHUHU...CHẮC EM LẠI PHẢI NGỒI GÕ TAY TỪNG HỒ SƠ RỒI.

Tôi thấy bạn này không nhiệt tình với bản thân gì cả:
Hình bạn upload đâu ?
Sao bạn không trả lời đối tượng của bạn là LWPOLYLINE hay REGION ?

*Nếu là LWPOLYLINE thì làm thủ công như sau:
Gỏ LIST ~~> chọn đối tượng,
Bấm F2 sẻ xuất hiện bảng liệt kê tọa độ các đỉnh. Bôi đen (xanh) phần liệt kê tọa độ

Đây là ví dụ
at point X=4531.0256 Y= -94.1555 Z= 0.0000
at point X=4503.4365 Y=-108.7042 Z= 0.0000
at point X=4538.6893 Y=-128.6130 Z= 0.0000
at point X=4561.6802 Y=-115.5957 Z= 0.0000

Vào EDIT ~~> Paste Special chọn kiểu text
Cad sẻ dán danh sách này vào cho bạn, bạn chỉnh sửa lại ~~> xong
*Nếu yêu cầu của bạn rỏ ràng tự nhiên sẽ có người giúp bạn con lisp làm việc ngon hơn :)
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#8 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:39 AM

Dân bản đồ mà seo hổng tìm hiểu tí xíu về lập trình nhỉ?mai mốt sẽ rất cần để giải quyết nhu cầu chứ...thui có gì tui sẽ viết cho bạn 1 cái module dùng luôn.... :)
  • 0
Mê xe và súng
Thích để súng trong xe

#9 thanhgam2003

thanhgam2003

    biết vẽ ellipse

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

Đã gửi 04 December 2007 - 08:28 AM

Dân bản đồ mà seo hổng tìm hiểu tí xíu về lập trình nhỉ?mai mốt sẽ rất cần để giải quyết nhu cầu chứ...thui có gì tui sẽ viết cho bạn 1 cái module dùng luôn.... :)

em cảm ơn các anh!
Em nói rõ yêu cầu của minh nhé:
+ Đối tượng em cân thể hiện là regoin
+ Em gui kem theo đường link file upload. Huynh nào giúp được thì giúp em sớm nhé.

http://www.cadviet.com/upfiles/guicad_1.dwg
  • 0

#10 thanhgam2003

thanhgam2003

    biết vẽ ellipse

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

Đã gửi 04 December 2007 - 08:35 AM

Tôi thấy bạn này không nhiệt tình với bản thân gì cả:
Hình bạn upload đâu ?
Sao bạn không trả lời đối tượng của bạn là LWPOLYLINE hay REGION ?

*Nếu là LWPOLYLINE thì làm thủ công như sau:
Gỏ LIST ~~> chọn đối tượng,
Bấm F2 sẻ xuất hiện bảng liệt kê tọa độ các đỉnh. Bôi đen (xanh) phần liệt kê tọa độ

Đây là ví dụ
at point X=4531.0256 Y= -94.1555 Z= 0.0000
at point X=4503.4365 Y=-108.7042 Z= 0.0000
at point X=4538.6893 Y=-128.6130 Z= 0.0000
at point X=4561.6802 Y=-115.5957 Z= 0.0000

Vào EDIT ~~> Paste Special chọn kiểu text
Cad sẻ dán danh sách này vào cho bạn, bạn chỉnh sửa lại ~~> xong
*Nếu yêu cầu của bạn rỏ ràng tự nhiên sẽ có người giúp bạn con lisp làm việc ngon hơn :)


Chức năng này em cũng đã từng làm rùi. Nó chỉ liệt kê bảng tọa độ ra thôi. Mà HS của em cân thể hiện như file em upload đó. Hix, bớt chút thời gian giúp em với.
  • 0

#11 se7en

se7en

    biết vẽ ellipse

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

Đã gửi 05 December 2007 - 11:15 AM

Chức năng này em cũng đã từng làm rùi. Nó chỉ liệt kê bảng tọa độ ra thôi. Mà HS của em cân thể hiện như file em upload đó. Hix, bớt chút thời gian giúp em với.

Thấy bạn than quá mà tui chưa có thời gian ngồi viết riêng cho bạn như đã hứa nên chỉ có thể cắt 1 phần của cái project tui đang làm cho bạn dùng.
-Bạn vào CAD load file này lên sau đó chạy macro coordinate.
-Click điểm.
-Nhấn export để xuất sang excel.
-Sau đó bạn chỉ cần bảng toạ độ từ excel vào cad là xong.
Here it is : http://www.yourfilehost.com/media.php?cat=...xport_se7en.dvb

good luck
  • 0
Mê xe và súng
Thích để súng trong xe

#12 thanhgam2003

thanhgam2003

    biết vẽ ellipse

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

Đã gửi 05 December 2007 - 04:13 PM

Thấy bạn than quá mà tui chưa có thời gian ngồi viết riêng cho bạn như đã hứa nên chỉ có thể cắt 1 phần của cái project tui đang làm cho bạn dùng.
-Bạn vào CAD load file này lên sau đó chạy macro coordinate.
-Click điểm.
-Nhấn export để xuất sang excel.
-Sau đó bạn chỉ cần bảng toạ độ từ excel vào cad là xong.
Here it is : http://www.yourfilehost.com/media.php?cat=...xport_se7en.dvb

good luck

em load file nó báo lỗi rồi anh ơi!
  • 0

#13 se7en

se7en

    biết vẽ ellipse

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

Đã gửi 05 December 2007 - 10:37 PM

em load file nó báo lỗi rồi anh ơi!

báo lỗi gì thế ?
  • 0
Mê xe và súng
Thích để súng trong xe

#14 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 06 December 2007 - 08:25 AM

*Cái này không giống với yêu cầu của bạn lắm nhưng tôi có sẳn nên nêu ra bạn xem thấyđược thì tôi gửi cho (sáng giờ upfile hoài mà rớt hoài :) ):
Trước tiên bạn phải tự đánh tên các điểm cần liệt kê tọa độ và phải chọn các điểm cần liệt kê tọa độ bằng cách click vào nó (không cần theo đúng thứ tự)
Lệnh : LKD
-Lệnh sẻ hỏi: Ban co muon chon diem toa do gia dinh khong: Co/Khong:
+Nếu không chọn tọa độ giả định thì gỏ K (tọa độ x,y sẻ đúng như tạo độ mà bạn dùng lệnh ID để xem)
+Nếu chọn tọa độ giả định thì gỏ C lệnh sẻ hỏi bạn chọn tọa độ giả định và hỏi bạn x,y của điểm vừa chọn (lệnh sẻ căn cứ vào điểm này làm chuẩn để tính các tọa độ bạn cần)
-Lệnh lại hỏi: Ti le /<Chon diem muon liet ke toa do>:
+Nếu thay đổi tỉ lệ thì gỏ T lệnh sẻ hỏi : Mot met ban ve la bao nhieu <Nhap vao>: bạn nhập vào
+Chọn các điểm cần liệt kê lệnh hỏi bạn số thứ tự của nút bạn nhập bằng số nhé không được lẩn chử vào. Lệnh se chèn BLOCK hình chử thập vào vị trí này để bạn biết nút này đã được chon.
+Bảng liệt kê sẻ viết ra tại vị trí 0.0 cứ 10 hàng thì sẻ nhảy sang bảng mới
Xong bạn chỉ cần MOVE bảng này về vị trí bạn thích là xong
Theo tôi cái này giải quyết vấn đề của bạn tốt hơn là tự động.
Bạn nhớ load cả 2 file lisp và tạo đường dẩn đến 2 block trong này nhé (nếu không thì không chạy được đâu)
**Còn có lệnh XTD chọn điểm cần liệt kê và chỉ điểm viết kết quả lệnh xẽ ghi kết qua ra tại nơi bạn chỉ
Mong rằng cái này giúp bạn đở vất vả hơn trong công việc
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#15 thanhgam2003

thanhgam2003

    biết vẽ ellipse

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

Đã gửi 06 December 2007 - 09:52 AM

báo lỗi gì thế ?

nó báo : Failed to load project from the file
  • 0

#16 thanhgam2003

thanhgam2003

    biết vẽ ellipse

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

Đã gửi 06 December 2007 - 09:57 AM

*Cái này không giống với yêu cầu của bạn lắm nhưng tôi có sẳn nên nêu ra bạn xem thấyđược thì tôi gửi cho (sáng giờ upfile hoài mà rớt hoài :) ):
Trước tiên bạn phải tự đánh tên các điểm cần liệt kê tọa độ và phải chọn các điểm cần liệt kê tọa độ bằng cách click vào nó (không cần theo đúng thứ tự)
Lệnh : LKD
-Lệnh sẻ hỏi: Ban co muon chon diem toa do gia dinh khong: Co/Khong:
+Nếu không chọn tọa độ giả định thì gỏ K (tọa độ x,y sẻ đúng như tạo độ mà bạn dùng lệnh ID để xem)
+Nếu chọn tọa độ giả định thì gỏ C lệnh sẻ hỏi bạn chọn tọa độ giả định và hỏi bạn x,y của điểm vừa chọn (lệnh sẻ căn cứ vào điểm này làm chuẩn để tính các tọa độ bạn cần)
-Lệnh lại hỏi: Ti le /<Chon diem muon liet ke toa do>:
+Nếu thay đổi tỉ lệ thì gỏ T lệnh sẻ hỏi : Mot met ban ve la bao nhieu <Nhap vao>: bạn nhập vào
+Chọn các điểm cần liệt kê lệnh hỏi bạn số thứ tự của nút bạn nhập bằng số nhé không được lẩn chử vào. Lệnh se chèn BLOCK hình chử thập vào vị trí này để bạn biết nút này đã được chon.
+Bảng liệt kê sẻ viết ra tại vị trí 0.0 cứ 10 hàng thì sẻ nhảy sang bảng mới
Xong bạn chỉ cần MOVE bảng này về vị trí bạn thích là xong
Theo tôi cái này giải quyết vấn đề của bạn tốt hơn là tự động.
Bạn nhớ load cả 2 file lisp và tạo đường dẩn đến 2 block trong này nhé (nếu không thì không chạy được đâu)
**Còn có lệnh XTD chọn điểm cần liệt kê và chỉ điểm viết kết quả lệnh xẽ ghi kết qua ra tại nơi bạn chỉ
Mong rằng cái này giúp bạn đở vất vả hơn trong công việc

]

nếu được anh gửi để em chạy với nhé.
Cảm ơn anh nhiều.
Chúc một ngày tốt lành.
  • 0

#17 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 06 December 2007 - 10:08 AM

]

nếu được anh gửi để em chạy với nhé.
Cảm ơn anh nhiều.
Chúc một ngày tốt lành.


Gửi trước bạn file lisp này khi nào up được sẻ gửi 2 block cho bạn sau
-Bạn vẻ 1 hình chử thập (kích thước phù hợp với bản vẻ của bạn)và tạo nó thành block tên NHAP và 1 cái tên tdbdiem tạm thời thế d0ể nó chạy sau đó tính sau











(Defun c:xtd ( )
(princ "\nPHAM QUOC DUY Binh Son - Quang ngai")
(command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(if (null met)(setq met 1))
(Setq temp T)
(While temp
(setq b (strcat "\nTi le /<Chon diem muon liet ke toa do>: "))
(Initget "t T")
(setq str (getpoint :))
(Cond
((= str "t") (setq met (dnint "\nMot met ban ve la bao nhieu "momet)))
((= str "T") (setq met (dnint "\nMot met ban ve la bao nhieu "momet)))
(Progn
(Setq b str)
(setq momet met)
(setq temp nil)
)
)
)
(luuos)
(setvar "osmode" 0)
(setq x (/ (car :) met))
(setq y (/ (cadr :) met))
(command "ORTHO" "OFF" "")
(setq a (getpoint b"\nChon diem muon viet ket qua: "))
(setq giatri (- (car B) (car a)))
(Cond
((< giatri 0) (command "LINE"(list (car B)(cadr B))(list (car a)(cadr a))(list (+ (car a) 30)(cadr a)) "")
(command "TEXT" (list (car a)(+ (cadr a) 2)) 4 0 (rtos x 2 4))
(command "TEXT" (list (car a)(- (cadr a) 6)) 4 0 (rtos y 2 4))
)
((> giatri 0) (command "LINE"(list (car B)(cadr B))(list (car a)(cadr a))(list (- (car a) 30)(cadr a)) "")
(command "TEXT" "j" "r" (list (car a)(+ (cadr a) 2)) 4 0 (rtos x 2 4))
(command "TEXT" "j" "r" (list (car a)(- (cadr a) 6)) 4 0 (rtos y 2 4))
)
)
(traos)

(Prin I)
)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;

(Defun C:lkd ( )
(setq lc (strcase (getstring "\nBan co muon chon diem toa do gia dinh khong: Co/Khong: ")))

(if (= lc "C")
(progn
(setq a (getpoint "\nChon diem gia dinh: "))
(setq ax (dnint "\nToa do X gia dinh "ax1))
(setq ax1 ax)
(setq ay (dnint "\nToa do Y gia dinh "ay1))
(setq ay1 ay)

(princ "\nPHAM QUOC DUY Binh Son - Quang ngai")
(command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(if (null met)(setq met 1))
(Setq temp T)
(While temp
(setq b (strcat "\nTi le /<Chon diem muon liet ke toa do>: "))
(Initget "t T")
(setq str (getpoint B))
(Cond
((= str "t") (setq met (dnint "\nMot met ban ve la bao nhieu "momet)))
((= str "T") (setq met (dnint "\nMot met ban ve la bao nhieu "momet)))
(Progn
(Setq b str)
(setq momet met)
(setq temp nil)
)
)
)
(luuos)
(setvar "osmode" 0)
(setq x (/ (car B) met))
(setq y (/ (cadr B) met))

(setq xg (/ (car a) met))
(setq yg (/ (cadr a) met))
(setq kx (- x xg))
(setq ky (- y yg))
(setq xm (+ kx ax))
(setq ym (+ ky ay))


(command "INSERT" "nhap" (list (car B)(cadr B)) 1 1 0)
(setq xht (getreal "\nSo thu tu cua nut : "))
(setq xh (- xht 1))
(setq nx (* 8 xh))
(setq sb (/ xh 10))
(setq sbn (* 100 (fix sb)))
(setq snl (- xh (fix sb)))
(setq nl (- nx (* 80 (fix sb))))

(setq CHIAM (/ XHT 10))
(setq LAMCHAN (fix CHIAM))
(setq NHANM (* LAMCHAN 10))
(setq tenkc (- XHT NHANM))
(setq tenkcn (* TENKC 100))
(setq TENKCM (fix TENKCN))

(Cond
((= TENKCM 100) (command "INSERT" "tdbdiem" (list (- sbn 14) (- 6 nl)) 1 1 0)
)
((/= TENKCM 100)
)
)

(command "TEXT" (list (+ 0 sbn) (- 0 nl)) 4 0 (rtos xm 2 4))
(command "TEXT" (list (+ 42 sbn) (- 0 nl)) 4 0 (rtos ym 2 4))
(command "TEXT" (list (- sbn 10) (- 0 nl)) 4 0 (fix xht))
(command "LINE" (list (- sbn 14) (- (- 6 nl) 8))(list (+ sbn 80) (- (- 6 nl) 8)) "")
(command "LINE" (list (- sbn 14) (- 6 nl))(list (- sbn 14)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 12) (- 6 nl))(list (+ (- sbn 14) 12)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 53) (- 6 nl))(list (+ (- sbn 14) 53)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 94) (- 6 nl))(list (+ (- sbn 14) 94)(- (- 6 nl) 8)) "")
(traos)


(setvar "MODEMACRO" "**CHUC BAN LAM VIEC HIEU QUA** PHAM QUOC DUY - BINH SON - QUANG NGAI")
(while
(setq b (getpoint "\nChon diem muon xem toa do <Hoac nhan Enter de ket thuc>: "))

(setq x (/ (car B) met))
(setq y (/ (cadr B) met))
(setq xg (/ (car a) met))
(setq yg (/ (cadr a) met))
(setq kx (- x xg))
(setq ky (- y yg))
(setq xm (+ kx ax))
(setq ym (+ ky ay))

(luuos)
(setvar "MODEMACRO" "LIET KE TOA DO TAI DIEM 0-0")
(setvar "osmode" 0)
(command "INSERT" "nhap" (list (car B)(cadr B)) 1 1 0)
(setq xht (getreal "\nSo thu tu cua nut : "))
(setq xh (- xht 1))
(setq nx (* 8 xh))
(setq sb (/ xh 10))
(setq sbn (* 100 (fix sb)))
(setq snl (- xh (fix sb)))
(setq nl (- nx (* 80 (fix sb))))

(setq CHIAM (/ XHT 10))
(setq LAMCHAN (fix CHIAM))
(setq NHANM (* LAMCHAN 10))
(setq tenkc (- XHT NHANM))
(setq tenkcn (* TENKC 100))
(setq TENKCM (fix TENKCN))

(Cond
((= TENKCM 100) (command "INSERT" "tdbdiem" (list (- sbn 14) (- 6 nl)) 1 1 0)
)
((/= TENKCM 100)
)
)

(command "TEXT" (list (+ 0 sbn) (- 0 nl)) 4 0 (rtos xm 2 4))
(command "TEXT" (list (+ 42 sbn) (- 0 nl)) 4 0 (rtos ym 2 4))
(command "TEXT" (list (- sbn 10) (- 0 nl)) 4 0 (fix xht))
(command "LINE" (list (- sbn 14) (- (- 6 nl) 8))(list (+ sbn 80) (- (- 6 nl) 8)) "")
(command "LINE" (list (- sbn 14) (- 6 nl))(list (- sbn 14)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 12) (- 6 nl))(list (+ (- sbn 14) 12)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 53) (- 6 nl))(list (+ (- sbn 14) 53)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 94) (- 6 nl))(list (+ (- sbn 14) 94)(- (- 6 nl) 8)) "")
(traos)


)


)
)


(if (= lc "K")
(progn
(princ "\nPHAM QUOC DUY Binh Son - Quang ngai")
(command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(if (null met)(setq met 1))
(Setq temp T)
(While temp
(setq b (strcat "\nTi le /<Chon diem muon liet ke toa do>: "))
(Initget "t T")
(setq str (getpoint B))
(Cond
((= str "t") (setq met (dnint "\nMot met ban ve la bao nhieu "momet)))
((= str "T") (setq met (dnint "\nMot met ban ve la bao nhieu "momet)))
(Progn
(Setq b str)
(setq momet met)
(setq temp nil)
)
)
)
(luuos)
(setvar "osmode" 0)
(setq x (/ (car B) met))
(setq y (/ (cadr B) met))
(command "INSERT" "nhap" (list (car B)(cadr B)) 1 1 0)
(setq xht (getreal "\nSo thu tu cua nut : "))
(setq xh (- xht 1))
(setq nx (* 8 xh))
(setq sb (/ xh 10))
(setq sbn (* 100 (fix sb)))
(setq snl (- xh (fix sb)))
(setq nl (- nx (* 80 (fix sb))))

(setq CHIAM (/ XHT 10))
(setq LAMCHAN (fix CHIAM))
(setq NHANM (* LAMCHAN 10))
(setq tenkc (- XHT NHANM))
(setq tenkcn (* TENKC 100))
(setq TENKCM (fix TENKCN))

(Cond
((= TENKCM 100) (command "INSERT" "tdbdiem" (list (- sbn 14) (- 6 nl)) 1 1 0)
)
((/= TENKCM 100)
)
)

(command "TEXT" (list (+ 0 sbn) (- 0 nl)) 4 0 (rtos x 2 4))
(command "TEXT" (list (+ 42 sbn) (- 0 nl)) 4 0 (rtos y 2 4))
(command "TEXT" (list (- sbn 10) (- 0 nl)) 4 0 (fix xht))
(command "LINE" (list (- sbn 14) (- (- 6 nl) 8))(list (+ sbn 80) (- (- 6 nl) 8)) "")
(command "LINE" (list (- sbn 14) (- 6 nl))(list (- sbn 14)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 12) (- 6 nl))(list (+ (- sbn 14) 12)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 53) (- 6 nl))(list (+ (- sbn 14) 53)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 94) (- 6 nl))(list (+ (- sbn 14) 94)(- (- 6 nl) 8)) "")
(traos)


(setvar "MODEMACRO" "**CHUC BAN LAM VIEC HIEU QUA** PHAM QUOC DUY - BINH SON - QUANG NGAI")
(while
(setq b (getpoint "\nChon diem muon xem toa do <Hoac nhan Enter de ket thuc>: "))
(setq x (/ (car B) met))
(setq y (/ (cadr B) met))
(luuos)
(setvar "MODEMACRO" "LIET KE TOA DO TAI DIEM 0-0")
(setvar "osmode" 0)
(command "INSERT" "nhap" (list (car B)(cadr B)) 1 1 0)
(setq xht (getreal "\nSo thu tu cua nut : "))
(setq xh (- xht 1))
(setq nx (* 8 xh))
(setq sb (/ xh 10))
(setq sbn (* 100 (fix sb)))
(setq snl (- xh (fix sb)))
(setq nl (- nx (* 80 (fix sb))))

(setq CHIAM (/ XHT 10))
(setq LAMCHAN (fix CHIAM))
(setq NHANM (* LAMCHAN 10))
(setq tenkc (- XHT NHANM))
(setq tenkcn (* TENKC 100))
(setq TENKCM (fix TENKCN))

(Cond
((= TENKCM 100) (command "INSERT" "tdbdiem" (list (- sbn 14) (- 6 nl)) 1 1 0)
)
((/= TENKCM 100)
)
)

(command "TEXT" (list (+ 0 sbn) (- 0 nl)) 4 0 (rtos x 2 4))
(command "TEXT" (list (+ 42 sbn) (- 0 nl)) 4 0 (rtos y 2 4))
(command "TEXT" (list (- sbn 10) (- 0 nl)) 4 0 (fix xht))
(command "LINE" (list (- sbn 14) (- (- 6 nl) 8))(list (+ sbn 80) (- (- 6 nl) 8)) "")
(command "LINE" (list (- sbn 14) (- 6 nl))(list (- sbn 14)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 12) (- 6 nl))(list (+ (- sbn 14) 12)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 53) (- 6 nl))(list (+ (- sbn 14) 53)(- (- 6 nl) 8)) "")
(command "LINE" (list (+ (- sbn 14) 94) (- 6 nl))(list (+ (- sbn 14) 94)(- (- 6 nl) 8)) "")
(traos)


)


)
)





(setvar "MODEMACRO" "**CHUC BAN LAM VIEC HIEU QUA** PHAM QUOC DUY - BINH SON - QUANG NGAI")
(Princ)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;

;;------------------------------------------------------------
(defun DUY_newerror (msg)
(if (and (/= msg "Function cancelled")
(/= msg "quit / exit abort")
)
(princ (strcat "\n" msg))
)
(done)
)
;;----------
(defun init ()
(setq
DUY_CMD (getvar "CMDECHO")
DUY_OLDERROR *error*
*error* DUY_newerror

)
(setvar "CMDECHO" 0)
(command ".undo" "BE")
)
;;----------
(defun done ()
(command ".redraw")
(command ".undo" "E")
(if DUY_CMD
(setvar "CMDECHO" DUY_CMD)
)
(if DUY_OLDERROR
(setq *error* DUY_OLDERROR)
)
(princ)
)
;;----------
(defun luuos ()
(setq
DUY_OSMODE (getvar "OSMODE")
DUY_AUTOSNAP (getvar "AUTOSNAP")
DUY_LAYERHH (getvar "CLAYER")
DUY_THANGXEOHH (getvar "ORTHO")
DUY_filletrad (getvar "FILLETRAD")
DUY_TEXTSTYLE (getvar "TEXTSTYLE")
)
)
(defun traos ()
(if DUY_OSMODE
(setvar "OSMODE" DUY_OSMODE)
)
(if DUY_LAYERHH
(setvar "CLAYER" DUY_LAYERHH)
)
(if DUY_THANGXEOHH
(setvar "ORTHO" DUY_THANGXEOHH)
)
(if DUY_AUTOSNAP
(setvar "AUTOSNAP" DUY_AUTOSNAP)
)
(if DUY_filletrad
(setvar "FILLETRAD" DUY_filletrad)
)
(if DUY_TEXTSTYLE
(setvar "TEXTSTYLE" DUY_TEXTSTYLE)
)


)




;-------


;---------------------------------------
(defun nstr (stri def)
(princ stri)
(princ "<")
(princ " ")
(princ def)
(princ ">")
(princ ":")
(princ " ")
);defun nstr
;--------------------
(defun nstr1 (stri)
(princ stri)
(princ "<")
(princ "Nhap vao")
(princ ">")
(princ ":")
(princ " ")
);defun nstr1
;---------------------
(defun nint (prompt def / temp)
(if def
(setq temp (getint (nstr prompt def)))
(setq def (getint (nstr1 prompt)))
);if def
(if temp
(setq def temp)
def
);if temp
);defun nint
;---------------------
(defun dnint (prompt def / temp)
(if def
(setq temp (getreal (nstr prompt def)))
(setq def (getreal (nstr1 prompt)))
);if def
(if temp
(setq def temp)
def
);if temp
);defun nint
;--------------------
(defun ndist (po prompt def / temp) ;nhan kh/cach va luu gia tri mac dinh
(if def
(setq temp (getdist po (nstr prompt def)))
(setq def (getdist po (nstr1 prompt)))
)if def
(if temp
(setq def temp)
def
);if temp
);defun ndist
;-----------------------------------





  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#18 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 07 December 2007 - 12:44 AM

Nhìn cái hình vẽ bác này pót lên là biết bác này vẽ hồ sơ thửa đất rồi. Làm như thế nếu bản vẽ có 1000 thửa hoặc hơn, mỗi thửa có N đỉnh thì ngồi pick chuột từng điểm một hết năm mất ah. Tôi thấy có bên Cty Hài Hoà có soft để làm cái hồ sơ đó trên CAD đấy. mà họ chắc chắn ko viết soft bằng Lisp đâu viết bằng C cơ.
  • 0
Share for all, all will share !

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

#19 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 07 December 2007 - 09:02 AM

Nhìn cái hình vẽ bác này pót lên là biết bác này vẽ hồ sơ thửa đất rồi. Làm như thế nếu bản vẽ có 1000 thửa hoặc hơn, mỗi thửa có N đỉnh thì ngồi pick chuột từng điểm một hết năm mất ah. Tôi thấy có bên Cty Hài Hoà có soft để làm cái hồ sơ đó trên CAD đấy. mà họ chắc chắn ko viết soft bằng Lisp đâu viết bằng C cơ.

Có vẻ như bạn là employee của Hài Hòa? Có bản demo nào share cho anh em dùng thử đi?

@thanhgam
Theo bản vẽ bạn post lên thì chẳng có liên quan gì đến Excel cả, chỉ cần đánh số thứ tự các đỉnh và kẻ bảng tọa độ trong CAD là OK? Nếu chỉ vậy thì bạn dùng thử trình này, lệnh là VC (Vertex Co-ordinate). Chương trình chấp nhận mọi đối tượng: region, polyline, line, arc (trừ loại spline), miễn là giữa chúng tạo nên 1 vùng kín. Lưu ý, khi pick điểm, bạn phải cho toàn bộ vùng cần quan tâm display đầy đủ trên màn hình, tương tự như khi bạn dùng lệnh Hatch vậy.


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;This program make ordinal numbers and co-ordinate table for vertexs.
;;;Accept any objects that are Region, Polyline, Line and Arc (except Spline)
;;;providing there is a closed area between them.
;;;Written by Ssg - December 2007 - www.cadviet.com
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;PUBLIC FUNCTIONS
;;;-------------------------------------------------------------------------------
(Defun DTR(x) (/ (* x pi) 180) ) ;;;change degree to radian, return REAL
;;;-------------------------------------------------------------------------------
(defun lineP (p0 a r / p1) ;;;Line polar: point, degree angle, radius
(setq p1 (polar p0 (dtr a) r))
(command "line" p0 p1 "")
)
;;;-------------------------------------------------------------------------------
(defun linePX (p0 x) (lineP p0 0 x)) ;;;Horizontal line: length x, from p0
;;;-------------------------------------------------------------------------------
(defun linePY (p0 y) (lineP p0 90 y)) ;;;Vertical line: length y, from p0
;;;-------------------------------------------------------------------------------
(defun getVert (e / i L) ;;;Return list of all vertex from pline e
(setq i 0 L nil)
(vl-load-com)
(repeat (fix (+ (vlax-curve-getEndParam e) 1))
(setq L (append L (list (vlax-curve-getPointAtParam e i))))
(setq i (1+ i))
)
L
)
;;;-------------------------------------------------------------------------------
(defun getth( / d h) ;;;Return current text height
(setq
d (tblsearch "style" (getvar "textstyle"))
h (cdr (assoc 40 d))
)
(if (= h 0) (setq h (cdr (assoc 42 d))))
h
)
;;;-------------------------------------------------------------------------------
(defun wtxtMC (txt p / sty d h) ;;;Write txt on graphic screen, Middle Center
(setq
sty (getvar "textstyle")
d (tblsearch "style" sty)
h1 (cdr (assoc 40 d))
h2 (cdr (assoc 42 d))
)
(if (> h1 0) (command "text" "j" "mc" p 0 txt)
(command "text" "j" "mc" p h2 0 txt)
)
)
;;;-------------------------------------------------------------------------------


;;;PRIVATE FUNCTIONS
;;;-------------------------------------------------------------------------------
(defun txt1(txtL / p1 p2 p3 p4 pL i) ;;;Write texts in 1 row
(setq
p1 (list (+ (car p0) (* 2 h)) (- (cadr p0) (* 1.5 h)))
p2 (polar p1 0 (* 6 h))
p3 (polar p2 0 (* 8 h))
p4 (polar p3 0 (* 8 h))
pL (list p1 p2 p3 p4)
i 0
)
(repeat 4
(wtxtMC (nth i txtL) (nth i pL))
(setq i (1+ i))
)
)
;;;-------------------------------------------------------------------------------
(defun mesh1() ;;;Make 1 mesh unit
(linepy p0 (* -3 h))
(command "copy" "L" "" p0 (list (+ (car p0) (* 4 h)) (cadr p0)))
(command "array" "L" "" "r" 1 4 (* 8 h))
(linepx (polar p0 (* 1.5 pi) (* 3 h)) (* 28 h))
)
;;;-------------------------------------------------------------------------------


;;;MAIN PROGRAM
;;;-------------------------------------------------------------------------------
(defun C:VC( / p et p0 pvL h oldos i pv num txtL)
;;;Vertex Co-ordinate

;;;INPUT DATA
(setq p (getpoint "\nPick a point inside polygon or region:"))
(command "boundary" p "")
(setq et (entlast))
(redraw et 3)
(setq
p0 (getpoint "\nBase point of table (upper left):")
pvL (getvert et)
h (getTh)
oldos (getvar "osmode")
)
(setvar "osmode" 0)

;;;HEADER
(linepx p0 (* 28 h))
(mesh1)
(txt1 (list "TT" "X" "Y" "Z"))
(setq p0 (polar p0 (* 1.5 pi) (* 3 h)))

;;;MAKE RECORDS AND ORDINAL NUMBER
(setq i 0)
(repeat (1- (length pvL))
(mesh1)
(setq
pv (nth i pvL)
num (itoa (1+ i))
txtL (list num (rtos (car pv)) (rtos (cadr pv)) (rtos (caddr pv)))
)
(txt1 txtL)
(wtxtMC num (polar pv 0 h))
(setq p0 (polar p0 (* 1.5 pi) (* 3 h)))
(setq i (1+ i))
)

;;;FINISH
(command "erase" et "")
(setvar "osmode" oldos)
(princ)
)
;;;-------------------------------------------------------------------------------


Lẽ ra chương trình này xong từ mấy hôm trước và có tính năng hoàn chỉnh hơn kia. Nhưng chính vì yêu cầu của bạn không rõ ràng nên bị chậm và chỉ có vậy. Bạn dùng thử sẽ thấy rõ là yêu cầu bạn nêu còn rất nhiều bất cập. Bạn phải phân tích đầy đủ những bất cập đó và nêu yêu cầu bổ sung, mình sẽ hoàn thiện tiếp. Có điều là, mình sẽ không làm lại lần thứ 3 đâu!
  • 0

#20 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 07 December 2007 - 11:23 AM

Có vẻ như bạn là employee của Hài Hòa? Có bản demo nào share cho anh em dùng thử đi?


:)
1. oh No, không phải là employee của Hài Hoà đâu. Chỉ biết vì có lần thấy ông anh tôi chạy thử soft đó thôi. Hài Hoà có dùng khoá cứng nên có cài vào mà không có khoá cũng không chạy được...hic...

2. Đoạn Lisp của bác không hiểu sao khi chạy nó báo lỗi "error: no function definition: DTR"

3. Theo tôi cách bác ssg dùng cái hàm "BOUNDARY" để tạo 1 "vùng" là không tiện vì như thế ta phải pick nhiều lắm nếu có nhiều thửa. Việc tạo vùng đó để cho user tự làm khi họ vẽ (phải bắt buộc thôi). Thực ra nếu bạn gì đó mà làm cái hồ sơ thửa này thì nên cài bản AUTOCAD MAP chứ đừng cài AUTOCAD thông thường (có các phiên bản cho các ngành như ACAD MAP, ACAD MECHANIC, ACAD ARTCHITEC...) trong phiên bản ACADMAP có thêm một menu MAP gồm các lệnh chuyên cho làm bản đồ và việc tạo vùng tự động cho mấy cái thửa kia chỉ là tíc tắc. Khoai Tây đã làm sẵn rồi thì Khoai Lang cứ thế mà dùng thôi :)

Nên chăng ssg hãy chọn cách là khi chuơng trình chạy thì cho thông báo "Select close_region" chẳng hạn, như vậy thì user có thể chọn được nhiều Object và tránh được việc "BOUNDARY" bị lỗi khi pick vào trong region (thi thoảng tôi pick vào trong 1 vùng để tạo close_region thì hàm BOUNDARY nó báo lỗi mà không hiểu tại sao)
  • 0
Share for all, all will share !

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