Chuyển đến nội dung
Diễn đàn CADViet
emhn

AutoCAD với Excel

Các bài được khuyến nghị

Tôi muốn các bạn chia sẽ cách nhập và xuất số liệu giữa Autocad và Excel, được viết bằng ngôn ngữ AutoLISP. nếu được có thể cho xem ví dụ mẫu.

Cám ơn.

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tại trang tin cũng đã có 1 ví dụ về chương trình LISP nhập xuất dữ liệu giữa AutoCAD và Excel.

http://www.cadviet.com/content/view/20/1/

 

Đó là chương trình eiPoint (Export Import Point), là chương trình khá đơn giản và cơ bản. Chúng ta có thể cải tiến nó để đáp ứng được từng mục đích riêng của mình.

 

Dưới đây là mã lệnh của chương trình eiPoint (lấy từ trang tin):

(defun c:exppnt	(/ fn fid i sdt tp ent p x y z)
 (princ "\neiPoint © 2007 Cadviet.com")
 (setq
   ssp	(ssget '((0 . "POINT")))
   fn	(getfiled "Ten tep de xuat toa do x y z"
	  (getvar "dwgprefix")
	  "txt"
	  1
)
   i	0
   sdt	(cond (ssp (sslength ssp))
      (t 0)
)
   tp	nil
   fid	(open fn "w")
 )

 (repeat sdt
   (setq ent (ssname ssp i)
  i   (1+ i)
  p   (cdr (assoc 10 (entget ent)))
  x   (car p)
  y   (cadr p)
  z   (caddr p)
   )
   (princ (strcat (rtos x) "\t" (rtos y) "\t" (rtos z) "\n")
   fid
   )
 )
 (close fid)
 (princ)
)

(defun c:imppnt	( / fn fid strht vt x y z)
 (defun pos (sub st / l1 l2 index)
   (setq index	1
  l1	(strlen sub)
  l2	(strlen st)
   )
   (while
     (and (       (setq index (1+ index))
   )
   (if	(= sub (substr st index l1))
     index
     nil
   )
 )
 (princ "\neiPoint © 2007 Cadviet.com")
 (setq	fn  (getfiled "Ten tep de nhap toa do x y z"
	      (getvar "dwgprefix")
	      "txt"
	      2
    )
fid (open fn "r")

 )
 (while (setq strht (read-line fid))
   (setq strht (strcat strht "\t\t\t"))
   (if	(/= strht "   ")
     (progn
(setq
  vt	(pos "\t" strht)
  x	(atof (substr strht 1 (1- vt)))
  strht	(substr strht (1+ vt))
  vt	(pos "\t" strht)
  y	(atof (substr strht 1 (1- vt)))
  strht	(substr strht (1+ vt))
  vt	(pos "\t" strht)
  z	(atof (substr strht 1 (1- vt)))
)
(entmake (list
	   (cons 0 "POINT")
	   (list 10 x y z)
	 )
)
     )
   )
 )
 (close fid)
)
(princ "\neiPoint da duoc nap. su dung 2 lenh: ExpPnt va ImpPnt de xuat va nhap Point")

 

Bản chất của quá trình trao đổi dữ liệu giữa AutoCAD và Excel trong ví dụ trên là tạo ra một tệp có đuôi .txt làm trung gian.

  • Vote tăng 4

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tại trang tin cũng đã có 1 ví dụ về chương trình LISP nhập xuất dữ liệu giữa AutoCAD và Excel.

http://www.cadviet.com/content/view/20/1/

 

Đó là chương trình eiPoint (Export Import Point), là chương trình khá đơn giản và cơ bản. Chúng ta có thể cải tiến nó để đáp ứng được từng mục đích riêng của mình.

 

Dưới đây là mã lệnh của chương trình eiPoint (lấy từ trang tin):

(defun c:exppnt	(/ fn fid i sdt tp ent p x y z)
 (princ "\neiPoint © 2007 Cadviet.com")
 (setq
   ssp	(ssget '((0 . "POINT")))
   fn	(getfiled "Ten tep de xuat toa do x y z"
	  (getvar "dwgprefix")
	  "txt"
	  1
)
   i	0
   sdt	(cond (ssp (sslength ssp))
      (t 0)
)
   tp	nil
   fid	(open fn "w")
 )

 (repeat sdt
   (setq ent (ssname ssp i)
  i   (1+ i)
  p   (cdr (assoc 10 (entget ent)))
  x   (car p)
  y   (cadr p)
  z   (caddr p)
   )
   (princ (strcat (rtos x) "\t" (rtos y) "\t" (rtos z) "\n")
   fid
   )
 )
 (close fid)
 (princ)
)

(defun c:imppnt	( / fn fid strht vt x y z)
 (defun pos (sub st / l1 l2 index)
   (setq index	1
  l1	(strlen sub)
  l2	(strlen st)
   )
   (while
     (and (<= (+ index l1 -1) l2) (/= sub (substr st index l1)))
      (setq index (1+ index))
   )
   (if	(= sub (substr st index l1))
     index
     nil
   )
 )
 (princ "\neiPoint © 2007 Cadviet.com")
 (setq	fn  (getfiled "Ten tep de nhap toa do x y z"
	      (getvar "dwgprefix")
	      "txt"
	      2
    )
fid (open fn "r")

 )
 (while (setq strht (read-line fid))
   (setq strht (strcat strht "\t\t\t"))
   (if	(/= strht "   ")
     (progn
(setq
  vt	(pos "\t" strht)
  x	(atof (substr strht 1 (1- vt)))
  strht	(substr strht (1+ vt))
  vt	(pos "\t" strht)
  y	(atof (substr strht 1 (1- vt)))
  strht	(substr strht (1+ vt))
  vt	(pos "\t" strht)
  z	(atof (substr strht 1 (1- vt)))
)
(entmake (list
	   (cons 0 "POINT")
	   (list 10 x y z)
	 )
)
     )
   )
 )
 (close fid)
)
(princ "\neiPoint da duoc nap. su dung 2 lenh: ExpPnt va ImpPnt de xuat va nhap Point")

 

Bản chất của quá trình trao đổi dữ liệu giữa AutoCAD và Excel trong ví dụ trên là tạo ra một tệp có đuôi .txt làm trung gian.

 

 

Trước hết mình xin chân thành cám ơn bạn "nguyen hoanh" vì sự nhiệt tình và sẳn sàng chia sẽ. Nhưng vấn đề là mình muốn làm việc trực tiếp vào các file Excel, không muố nhờ vào tep trung gian (*.txt). Xin bạn vui lòng hương dẫn.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bó tay.

 

Cái này thì phải nhờ một cao thủ nào đó trên diễn đàn thôi, kiến thức của tôi không giải đáp được cho bạn rồi.

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

@emhn: tại sao lại muốn làn việc trực tiếp ngay trên file ex ? bạn có thể nêu nguyên do để chúng ta cùng thảo luận:P

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Trước hết mình xin chân thành cám ơn bạn "nguyen hoanh" vì sự nhiệt tình và sẳn sàng chia sẽ. Nhưng vấn đề là mình muốn làm việc trực tiếp vào các file Excel, không muố nhờ vào tep trung gian (*.txt). Xin bạn vui lòng hương dẫn.

Lisp chỉ có thể làm việc (read và write) với text file, không xâm nhập được vào cấu trúc của *.xls (nếu được, chắc bác Bill Gate đã phá sản rồi!).

Có 2 dạng file mà Lisp và Excel cùng hiểu và xử lý được là *.txt và *.csv. Mình xin phân tích kỹ hơn:

Text file là... file dạng text, nội dung gồm tập hợp các ký tự ASCII, thường là *.txt. Cho dù bạn có đổi nó thành *.abc, *.def, *.doc... thậm chí là *.xls cũng được(!) nhưng bản chất của nó vẫn là text file (cốt khỉ vẫn là... cốt khỉ!).

Một bảng dữ liệu bao gồm các số liệu được tổ chức theo hàng (row - record) và cột (column - field). Excel hiểu bảng dữ liệu của text file như sau:

1) Đối với file *.txt:

- Field: căn cứ vào ký tự TAB ("\t")

- Record: căn cứ vào ký tự xuống dòng ("\n")

2) Đối với file *.csv (Comma Separated Value File):

- Field: phân biệt bằng dấu phẩy (,)

- Record: theo ký tự xuống dòng như trên

Bạn có thể mở 2 kiểu file trên bằng Excel để xem, sửa, bổ sung; có thể dùng được các công cụ của Excel (ngay cả gán function) rất thuận tiện cho biên tập. Nhưng khi save, bạn phải giữ nguyên định dạng cũ (Excel sẽ hiện cảnh báo đối với các trường hợp này). Nếu bạn save theo dạng *.xls, toàn bộ cấu trúc file sẽ thay đổi (theo đúng kiểu của MicroSoft), và sau đó chương trình lisp của bạn sẽ không thể nào đọc nó được nữa!

Nếu bạn muốn làm việc trực tiếp với *.xls thì phải dùng VBA (MicroSoft Visual Basic for Application) thay cho Lisp. VBA trong Acad là sản phẩm hợp tác của Autodesk và MicroSoft nên việc hiểu và xử lý *.xls là "chuyện nhỏ".

Nếu bạn có hứng thú với VBA, chúng ta có thể đề nghị Admin lập thêm một box mới cho mục này.

 

PS:

Khi bạn dùng Excel để open 3 kiểu file *.txt, *.csv, *.xls, chúng hiển thị giống nhau nhưng bản chất khác nhau một trời một vực:

- *.txt và *.csv: chỉ chứa giá trị (value)

- *.xls: ngoài value, mỗi cell của nó còn chứa rất nhiều thông tin khác: định dạng (format), công thức (function), tham chiếu (reference), liên kết (link).... và nhiều thứ khác nữa!

  • Vote tăng 10
  • Vote giảm 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Nghĩa là làm việc với *.txt rất là dễ dàng.

Không chỉ khi viết Lisp mà với rất nhiều chương trình tự động tính toán khác, người ta luôn sử dụng file trung gian là *.txt. Bởi vì trong tất cả các ngôn ngữ lập trình đều có hỗ trợ mở (open), đọc (read) và ghi (save) file text

Không hiểu ý đồ của emhn là gì khi muốn thực hiện trực tiếp trên file *.xls , mặc dù vậy chắc là có muốn cũng không được, vì cứ như danh sách các lệnh Lisp mà anh Nguyễn Hoành từng liệt kê ra thì Lisp không hỗ trợ các thao tác với cơ sở dữ liệu (Database), và SSG cũng phân tích rất đúng: file *.xls không chỉ lưu trữ các số liệu, cũng như *.doc không chỉ lưu trữ các text

Song cũng có giải pháp là dùng VBA cho CAD, cái này chắc được

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

có bác nào biết kết nối CAD với access ko?

viết VBA trong CAD kết nối vói ễcl nưa?

biết chỉ dùm hộ em.bài tập lớn thầy ra mà em chưa biết gì cả?

cảm ơn các bác trước :lol:

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Nếu chỉ là dùng VBA của AutoCAD để kết nối với Excel thì mã lệnh điển hình như sau:

 

Sub Ch12_Extract()
   Dim Excel As Excel.Application
   Dim ExcelSheet As Object
   Dim ExcelWorkbook As Object

   Dim RowNum As Integer
   Dim Header As Boolean
   Dim elem As AcadEntity
   Dim Array1 As Variant
   Dim Count As Integer

   ' Launch Excel.
   Set Excel = New Excel.Application

   ' Create a new workbook and find the active sheet.
   Set ExcelWorkbook = Excel.Workbooks.Add
   Set ExcelSheet = Excel.ActiveSheet
   ExcelWorkbook.SaveAs "Attribute.xls"

   RowNum = 1
   Header = False
   ' Iterate through model space finding
   ' all block references.
   For Each elem In ThisDrawing.ModelSpace
       With elem
           ' When a block reference has been found,
           ' check it for attributes
           If StrComp(.EntityName, "AcDbBlockReference", 1) _
               = 0 Then
               If .HasAttributes Then
                   ' Get the attributes
                   Array1 = .GetAttributes
                   ' Copy the Tagstrings for the
                   ' Attributes into Excel
                   For Count = LBound(Array1) To UBound(Array1)
                       If Header = False Then
                           If StrComp(Array1(Count).EntityName, _
                                 "AcDbAttribute", 1) = 0 Then
                               ExcelSheet.Cells(RowNum, _
                                   Count + 1).value = _
                                   Array1(Count).TagString
                           End If
                       End If
                   Next Count
                   RowNum = RowNum + 1
                   For Count = LBound(Array1) To UBound(Array1)
                       ExcelSheet.Cells(RowNum, Count + 1).value _
                                   = Array1(Count).textString
                   Next Count
                   Header = True
               End If
           End If
       End With
   Next elem
   Excel.Application.Quit
End Sub

 

mã lệnh VBA này gọi Excel lên, sau đó add một SheetShet và saveas với tên file là Attribute.xls sau đó quét qua tất cả các đối tượng của AutoCAD, tìm các block, kiểm tra xem nó có Attribute không, nếu có thì viết giá trị của từng attribute vào các ô của excel. Mỗi giá trị một ô, mỗi block một dòng. Sau đó thì close chương trình Excel.

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Một ví dụ dùng VBA giao tiếp với Excel (mã VBA chứa trong bản vẽ):

 

http://www.cadviet.com/upfiles/VD_VBA.dwg

 

Hướng dẫn:

1) Mở VD_VBA.dwg

2) Chọn Tool - Macro - Macros (hoặc bấm Alt + F8)

3) Chọn Macro XUAT - Run

File C:\Vd.xls được tạo với các số liệu 100, 120, 0, 50 ở các cell A1, B1, C1, D1

Bạn có thể mở file này để xem kết quả.

4)Chạy Macro NHAP theo cách như trên.

Chương trình đọc các số liệu tại các cell A1, B1, C1, D1 và vẽ đường tròn tâm (100, 120, 0), bán kính 50

5) Chọn Tool - Macro - Visual Basic Editor (hoặc Alt + F11) để xem mã nguồn

 

Chương trình đơn giản nhưng chứng tỏ VBA có khả năng giao tiếp với các ứng dụng của Microsoft (kể cả Access) rất tốt.

Nếu các bạn thấy hứng thú thì "ngâm cứu" thêm. Bản thân ssg đã quen với lisp, không dùng VBA.

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Không biết vì sao không download được. Ssg đã upload đúng theo hướng dẫn mà?

Nếu các bạn cũng không down được, vui lòng làm như sau:

- Copy và Paste đoạn code dưới vào MS-Word

- Chạy Acad

- Bấm Alt + F11

- Bấm F7

- Copy đoạn code từ MS-Word và Paste vào

- Save và quay lại Acad

- Làm bước 2, 3 và 4 như đã nói ở bài trên

 


Dim ExcelSheet As Object
Dim CirObj As AcadCircle
Dim CenP(0 To 2) As Double
Dim X, Y, Z, R As Double

Public Sub XUAT()
Set ExcelSheet = CreateObject("Excel.Sheet")
ExcelSheet.Application.Visible = True
ExcelSheet.Application.Range("A1").Value = 100
ExcelSheet.Application.Range("B1").Value = 120
ExcelSheet.Application.Range("C1").Value = 0
ExcelSheet.Application.Range("D1").Value = 50
ExcelSheet.SaveAs "C:\VD.XLS"
Set ExcelSheet = Nothing
End Sub

Public Sub NHAP()
Set ExcelSheet = GetObject("C:\VD.XLS")
X = ExcelSheet.Application.Range("A1")
Y = ExcelSheet.Application.Range("B1")
Z = ExcelSheet.Application.Range("C1")
R = ExcelSheet.Application.Range("D1")
CenP(0) = X: CenP(1) = Y: CenP(2) = Z
Set CirObj = ThisDrawing.ModelSpace.AddCircle(CenP, R)
ZoomAll
Set ExcelSheet = Nothing
End Sub

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bổ sung:

Có thể chạy macro bằng lisp: (command "vbarun" "MacroName")

Ví dụ trên:

(command "vbarun" "xuat")

(command "vbarun" "nhap")

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Một điều quan trọng nhất để điều khiển Excel từ AutoCad bằng VBA là bạn phải khai báo thư viện đối tượng trong cửa sổ VBE của AutoCad không thì thủ tục sẽ báo lỗi.

Cách khai báo: vào menu Tools/References và tìm Micosoft Office XX Object Library. XX chính là đời Office bạn cài. :lol:

Còn thủ tục trên có thể rút gọn bằng With ... End With như sau:

 

ExcelSheet.Application.Range("A1").Value = 100

ExcelSheet.Application.Range("B1").Value = 120

ExcelSheet.Application.Range("C1").Value = 0

ExcelSheet.Application.Range("D1").Value = 50

With ExcelSheet.Application

.Range("A1").Value = 100

.Range("B1").Value = 120

.Range("C1").Value = 0

.Range("D1").Value = 50

End With

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình dùng Cad2002 và Office2003 không cần khai báo vẫn chạy tốt. Có lẽ do hai "thằng" đó tương thích nhau (nếu thay đời 1 trong 2 thằng thì chưa chắc). Đó là lý do khiến mình ít thích dùng VB. Một trình VB (nói chung, không riêng gì VBA for Acad) chạy tốt trên máy mình, nhưng khi đưa sang máy khác thì Runtime Error!?

Bạn phantuhuong có thể phân tích sâu hơn vấn đề này để anh em được mở rộng tầm mắt?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

VBA thì nói chung là dễ học, dễ viết - Ưu điểm

Nhưng nhược điểm thì nhiều hơn:

1. Cùng làm môt chức năng thì nặng hơn LISP rất nhiều.

2. Ít tương thích giữa các version của AutoCad...

3. Hay bị nghi ngờ là có Virus hay Macro độc hại khi tải vào bản vẽ.

4. Hay bị thông báo thiếu function được định nghĩa sẵn của VB (Cách tốt nhất là cài một phiên bản VB lên máy tính rồi viết VBA trong AutoCad)

Việc trao đổi dữ liệu từ CAD và Excel có thể không cần thông qua file.txt. File.txt để dùng được trong Excel phải có cấu trúc dữ liệu phân cách bởi các dấu TAB (\t) nhưng gặp những trường dữ liệu dài ngắn khác nhau thì chỉnh sửa cũng "đỏ con mắt bên phải, mỏi con mắt bên trái luôn".

Có một cách đơn giản là xuất dữ liệu từ CAD thành một file.XML. Và hầu như tất cả các phần mềm bảng tính đều hỗ trợ đọc dữ liệu từ XML.

Còn đọc file.XML để import dữ liệu vào CAD thì quá đơn giản...

:lol:

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
4. Hay bị thông báo thiếu function được định nghĩa sẵn của VB (Cách tốt nhất là cài một phiên bản VB lên máy tính rồi viết VBA trong AutoCad)

 

Đúng là VBA còn một số nhược điểm như bạn vndesperados đã nói nhưng không hẳn là đúng hẳn. Hàm VB hay VBA đều như nhau (tất nhiên phải tương ứng theo phiên bản).

Cái lợi nhất sử dụng VBA là củng cố kiến thức về lập trình Visual Basic. Những người đã lập trình trên VB thì dễ dàng sử dụng được VBA khi tìm hiểu thêm đối tượng, phương thức và thuộc tính của chúng.

Còn học và để thành thạo AutoLisp không phải đơn giản vì là ngôn ngữ khác biệt. Việc thiết kế giao diện trong AutoLisp tương đối phức tạp, trong khi đó VBA lại dễ dàng. Khả năng liên kết của AutoLisp với môi trường bên ngoài rất hạn chế, còn VBA thì rất ổn nhờ DLL. Đặc biệt trong lĩnh vực kỹ thuật, việc trao đổi giữa Excel và AutoCad là rất cần thiết và hợp lý. Bạn có thể sử dụng VBA trong Excel hay AutoCad đều được, thậm chí cả VB6 cũng ổn. Như vậy hướng phát triển VBA sẽ ứng dụng được rộng hơn so với AutoLisp,...

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
...

Cái lợi nhất sử dụng VBA là củng cố kiến thức về lập trình Visual Basic. Những người đã lập trình trên VB thì dễ dàng sử dụng được VBA khi tìm hiểu thêm đối tượng, phương thức và thuộc tính của chúng.

Còn học và để thành thạo AutoLisp không phải đơn giản vì là ngôn ngữ khác biệt. Việc thiết kế giao diện trong AutoLisp tương đối phức tạp, trong khi đó VBA lại dễ dàng. Khả năng liên kết của AutoLisp với môi trường bên ngoài rất hạn chế, còn VBA thì rất ổn nhờ DLL. Đặc biệt trong lĩnh vực kỹ thuật, việc trao đổi giữa Excel và AutoCad là rất cần thiết và hợp lý. Bạn có thể sử dụng VBA trong Excel hay AutoCad đều được, thậm chí cả VB6 cũng ổn. Như vậy hướng phát triển VBA sẽ ứng dụng được rộng hơn so với AutoLisp,...

Cũng không hoàn toàn đồng ý với bạn được

Mặc dù VBA quả nhiên có nhiều ưu điểm, nhưng gặp phải các hạn chế như:

- Thực thi lệnh nặng nề

- Muốn chạy thì trừ phi viết thêm một Lisp với dòng "vbarun" nếu không thì đành phải dùng Run Macro

 

Lisp hiển nhiên là đứa con được cưng chiều nhất của Cad, ssg có thăm qua đây chắc cũng phải đồng ý với điều này, vì chính như anh đã nói trong màn chào sân: Nick ssg nghĩa là ssget (creates a selection set from the selected object) - một khái niệm rất cơ bản của lisp. Theo hiểu biết của tôi, làm chủ được SS, bạn có thể làm được mọi thứ mình muốn bằng lsp. Quả vậy! Lisp chứa đựng mọi công cụ đủ để tác động trực tiếp lên các đối tượng trong Cad bằng bản chất của chúng. Điều đó khiến chùng ta có cảm giác AutoCad được các nhà lập trình tạo ra với công thức: Cad = Giao diện đồ họa + phần bổ trợ + các lệnh Lisp vậy

Tất nhiên cũng cần xét đến yếu tố cá nhân, mỗi người có một thói quen và cách thức làm việc riêng, và ai cũng có một ngôn ngữ đắc ý của mình. Jin tin rằng chúng ta hoàn toàn có thể tìm cách để hoặc dùng độc lập, hoặc sử dụng kết hợp các ngôn ngữ để giải quyết các vấn đề của mình

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Hay qua, lại biết thêm 01 món nữa. Bác Nguyen Hoanh ơi cho e hỏi bác có chương trình nào nhập điểm vào theo cả tọa độ đề các và tọa độ cực không nhỉ, chỉ cho e với (Tọa độ nhập từ excel). Xin bác chỉ kỹ kỹ 1 xíu vì e mới vào nghề nên còn non lắm. thank bác.

Nhân tiện cho e hỏi e ở Thủ Đức - TPHCM muốn đi học lập trình Autolisp thì học ở đâu là tiện nhỉ.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Hay qua, lại biết thêm 01 món nữa. Bác Nguyen Hoanh ơi cho e hỏi bác có chương trình nào nhập điểm vào theo cả tọa độ đề các và tọa độ cực không nhỉ, chỉ cho e với (Tọa độ nhập từ excel). Xin bác chỉ kỹ kỹ 1 xíu vì e mới vào nghề nên còn non lắm. thank bác.

Nhân tiện cho e hỏi e ở Thủ Đức - TPHCM muốn đi học lập trình Autolisp thì học ở đâu là tiện nhỉ.

Để làm gì hả bạn?

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Để làm gì hả bạn?

 

Dạ e đi đo mặt bằng, nhập điểm lập bình đồ. Nếu đo bằng máy kinh vĩ thì chỉ có khoảng cách và góc quay so với mốc chuẩn thôi bác ạ. Còn nếu đo bằng máy toàn đạc có tọa độ X,Y,Z thì họ cũng đổ vào excel khi giao cho e. Ngồi nhập từng điểm 1 thì lâu quá. Mong bác chỉ cho.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Dạ e đi đo mặt bằng, nhập điểm lập bình đồ. Nếu đo bằng máy kinh vĩ thì chỉ có khoảng cách và góc quay so với mốc chuẩn thôi bác ạ. Còn nếu đo bằng máy toàn đạc có tọa độ X,Y,Z thì họ cũng đổ vào excel khi giao cho e. Ngồi nhập từng điểm 1 thì lâu quá. Mong bác chỉ cho.

Nếu bạn save as file excel sang txt, tôi sẽ viết chương trình giúp bạn.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Dạ e đi đo mặt bằng, nhập điểm lập bình đồ. Nếu đo bằng máy kinh vĩ thì chỉ có khoảng cách và góc quay so với mốc chuẩn thôi bác ạ. Còn nếu đo bằng máy toàn đạc có tọa độ X,Y,Z thì họ cũng đổ vào excel khi giao cho e. Ngồi nhập từng điểm 1 thì lâu quá. Mong bác chỉ cho.

Hoặc giả bạn hãy gửi hẳn một file excel lên để xem cách thức trình bày của nó ra sao, thì chúng tôi mới làm việc được.

Có thế viết một modul cho Excel để xuất dữ liệu sang file text theo ý đồ và từ đó viết lisp để đọc file và thể hiện phần còn lại

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

E gửi thử 1 mẫu đơn giản với 02 phương án khác nhau như sau, có 03 điểm nhưng khi số điểm nhập vào được hỏi trước.

 

phương án 1: Hệ tọa độ cực

Điểm 1 Điểm 2 Điểm 3 Điểm …

Cao độ 1.450 1.250 -0.560

Độ dài 72 128 201

Góc quay 69.722 359.367 358.939

 

phương án 2 :Hệ tọa độ đề các

Điểm 1 Điểm 2 Điểm 3 Điểm …

X 117623 117639 117655

Y 53600 53625 53655

Cao độ 1.450 1.250 -0.560

 

Sau khi nhập vào có thêm 01 text Tên điểm, 01 text cao độ của điểm đó.

Rất mong các bác giúp hộ.Thank nhiều.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
E gửi thử 1 mẫu đơn giản với 02 phương án khác nhau như sau, có 03 điểm nhưng khi số điểm nhập vào được hỏi trước.

 

phương án 1: Hệ tọa độ cực

Điểm 1 Điểm 2 Điểm 3 Điểm …

Cao độ 1.450 1.250 -0.560

Độ dài 72 128 201

Góc quay 69.722 359.367 358.939

 

phương án 2 :Hệ tọa độ đề các

Điểm 1 Điểm 2 Điểm 3 Điểm …

X 117623 117639 117655

Y 53600 53625 53655

Cao độ 1.450 1.250 -0.560

 

Sau khi nhập vào có thêm 01 text Tên điểm, 01 text cao độ của điểm đó.

Rất mong các bác giúp hộ.Thank nhiều.

Mẫu này không đơn giản lắm!

Cấu trúc file kiểu này, nếu có 1000 điểm mỗi file có 4 dòng, mỗi dòng cỡ 15000 ký tự? Lisp xử lý 1 dòng là treo máy luôn!

 

Bạn hãy upload 1 file thực sự lên.

Mẫu vừa rồi không phải 1 file. Vì trong file không bao giờ có ký tự 'Điểm 1', 'Điểm 2',.. hay 'X', 'Y',...

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×