phamngoctukts 712 Báo cáo bài đăng Đã đăng Tháng 3 5, 2011 Chương trình đếm số lượng Text hoặc Block trong vùng chọn. http://www.cadviet.com/upfiles/3/loc_text_1.rar 5 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
phamthanhbinh 3.145 Báo cáo bài đăng Đã đăng Tháng 3 5, 2011 Chương trình đếm số lượng Text hoặc Block trong vùng chọn. http://www.cadviet.com/upfiles/3/dembt.rar Hề hề hề, Chào bác phamngoctukts, Chương trình này là bác sưu tầm hay tự viết ra vậy. Ứng dụng nó cho việc thống kê text hay block trên bản vẽ khá tốt. Có điều xài thì được chứ còn mót ở đây khó quá !!!! Giá như nó là file .lsp thì hay quá..... 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
ketxu 2.947 Báo cáo bài đăng Đã đăng Tháng 3 5, 2011 @ bác Tú : xử lý tốt ở bảng mã TCVN3, cái này e thích lắm ^^ Tuy nhiên tốc độ chậm, có lẽ do tương tác từ VB sang, và chưa array sort ^^ Điều quan trọng nhất cần thiết đó là thể hiện nó trên bản vẽ của bác ạ, hok thì cũng cho người ta copy lại chứ hè ^^ ^^ @bác Bình : lisp thì có thống kê text của bác gia_bach đó ạ ^^ 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
duyhung 9 Báo cáo bài đăng Đã đăng Tháng 3 5, 2011 Giao diện đẹp nhưng tốc độ xử lý chưa nhanh bác ah. Cám ơn bác. 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
phamngoctukts 712 Báo cáo bài đăng Đã đăng Tháng 3 5, 2011 @ bác Tú : xử lý tốt ở bảng mã TCVN3, cái này e thích lắm ^^ Tuy nhiên tốc độ chậm, có lẽ do tương tác từ VB sang, và chưa array sort ^^ Điều quan trọng nhất cần thiết đó là thể hiện nó trên bản vẽ của bác ạ, hok thì cũng cho người ta copy lại chứ hè ^^ ^^ @bác Bình : lisp thì có thống kê text của bác gia_bach đó ạ ^^ Anh đang xây dựng tiếp phần xuất bảng. Có thể chọn trực tiếp những dòng nào mà mình muốn xuất sang bảng bên CAD. 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
phamngoctukts 712 Báo cáo bài đăng Đã đăng Tháng 3 5, 2011 Đã xây dựng xong phần tạo bảng Up lên cho các bạn test. http://www.cadviet.com/upfiles/3/loc_text.rar Sau khi chọn block hoặc text các bạn giữ Ctrl chọn các dòng muốn xuất trong cột giá trị để tạo bả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
Tue_NV 3.908 Báo cáo bài đăng Đã đăng Tháng 3 5, 2011 Đã xây dựng xong phần tạo bảng Up lên cho các bạn test. http://www.cadviet.com/upfiles/3/loc_text.rar Sau khi chọn block hoặc text các bạn giữ Ctrl chọn các dòng muốn xuất trong cột giá trị để tạo bảng. Chạy rất tốt. Tuy nhiên, tốc độ hơi chậm và chưa xử lý việc sắp xếp theo thứ tự a, b, c Bạn có thể giới thiệu và nếu có thể cho Tue_NV xin tài liệu lập trình món này không? Rất tuyệt, bạn ạ. Thanks 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
phamngoctukts 712 Báo cáo bài đăng Đã đăng Tháng 3 5, 2011 Chạy rất tốt. Tuy nhiên, tốc độ hơi chậm và chưa xử lý việc sắp xếp theo thứ tự a, b, c Bạn có thể giới thiệu và nếu có thể cho Tue_NV xin tài liệu lập trình món này không? Rất tuyệt, bạn ạ. Thanks Thú thực với Bác là em cũng chẳng có tài liệu gì. Trong tay em chỉ có mỗi cái help VBA của cad thôi bác ạ. Toàn phải tự mò thôi. Nếu Bác Cần tham khảo thì em share code lên cho mọi người cùng xem. 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
Tue_NV 3.908 Báo cáo bài đăng Đã đăng Tháng 3 5, 2011 Thú thực với Bác là em cũng chẳng có tài liệu gì. Trong tay em chỉ có mỗi cái help VBA của cad thôi bác ạ. Toàn phải tự mò thôi. Nếu Bác Cần tham khảo thì em share code lên cho mọi người cùng xem. Ồ!! Nếu được như vậy, xin tạ ơn bạn lắm lắm :wub: 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
phamngoctukts 712 Báo cáo bài đăng Đã đăng Tháng 3 5, 2011 Ồ!! Nếu được như vậy, xin tạ ơn bạn lắm lắm :wub: Code đây Bác. Nhân tiện các bạn cho ý kiến luôn nhé. Public Class Form1 Public AcadApp As Object Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load On Error Resume Next AcadApp = GetObject(, "AutoCAD.Application") If Err.Number <> 0 Then Err.Clear() AcadApp = CreateObject("AutoCAD.Application") End If AppActivate(AcadApp.caption) AcadApp.visible = True AcadApp.windowstate = 3 End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Label1.Text = "Bảng thống kê Text" On Error Resume Next Me.Hide() DataGridView1.Rows.Clear() Dim ss As Object AcadApp.ActiveDocument.SelectionSets("SS").delete() ss = AcadApp.ActiveDocument.SelectionSets.Add("SS") Dim dtcode(0 To 0) As Short Dim gpcode(0 To 0) As Object dtcode(0) = 0 gpcode(0) = "Text" ss.selectOnScreen(dtcode, gpcode) Me.Show() Dim i As Integer, j As Integer, n As Integer, k As Integer k = 0 For i = 0 To ss.count - 1 n = 1 For j = 0 To ss.count - 1 Step 1 If ss(i).textstring = ss(j).textstring And i < j Then n = n + 1 End If If ss(i).textstring = ss(j).textstring And i > j Then GoTo t End If Next DataGridView1.Rows.Insert(k, k + 1, ABC2Uni(ss(i).textstring), n) k = k + 1 t: Next i End Sub Public Function ABC2Uni(ByVal str) As String Dim i As Integer, arrUNI() As String, sUni As String = "", ABC, UNI ABC = "¸µ¶·¹¨¾»¼½Æ©ÊÇÈÉËÐÌÎÏѪÕÒÓÔÖÝרÜÞãßáâä«èåæçé¬íêëìîóïñòôøõö÷ùýúûüþ®¸µ¶·¹¡¾»¼½Æ¢ÊÇÈÉËÐÌÎÏÑ£ÕÒÓÔÖÝרÜÞãßáâä¤èåæçé¥íêëìîóïñòô¦øõö÷ùýúûüþ§" UNI = "225,224,7843,227,7841,259,7855,7857,7859,7861,7863,226,7845,7847,7849,7851,7853,233,232,7867,7869,7865,234,7871,7873,7875,7877,7879,237,236,7881,297,7883,243,242,7887,245,7885,244,7889,7891,7893,7895,7897,417,7899,7901,7903,7905,7907,250,249,7911,361,7909,432,7913,7915,7917,7919,7921,253,7923,7927,7929,7925,273,225,224,7843,227,7841,258,7855,7857,7859,7861,7863,194,7845,7847,7849,7851,7853,233,232,7867,7869,7865,202,7871,7873,7875,7877,7879,237,236,7881,297,7883,243,242,7887,245,7885,212,7889,7891,7893,7895,7897,416,7899,7901,7903,7905,7907,250,249,7911,361,7909,431,7913,7915,7917,7919,7921,253,7923,7927,7929,7925,272" arrUNI = Split(UNI, ",") For i = 1 To Len(str) If InStr(ABC, Mid(str, i, 1)) > 0 Then sUni = sUni & ChrW(arrUNI(InStr(ABC, Mid(str, i, 1)) - 1)) Else sUni = sUni & Mid(str, i, 1) End If Next ABC2Uni = sUni End Function Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Label1.Text = "Bảng thống kê Block" On Error Resume Next DataGridView1.Rows.Clear() Me.Hide() Dim ss As Object AcadApp.ActiveDocument.SelectionSets("SS").delete() ss = AcadApp.ActiveDocument.SelectionSets.add("SS") Dim dtcode(0 To 0) As Short Dim gpcode(0 To 0) As Object dtcode(0) = 0 gpcode(0) = "INSERT" ss.selectOnScreen(dtcode, gpcode) Me.Show() Dim i As Integer, j As Integer, n As Integer, k As Integer k = 0 For i = 0 To ss.count - 1 n = 1 For j = 0 To ss.count - 1 Step 1 If ss(i).name = ss(j).name And i < j Then n = n + 1 End If If ss(i).name = ss(j).name And i > j Then GoTo t End If Next DataGridView1.Rows.Insert(k, k + 1, ABC2Uni(ss(i).name), n) k = k + 1 t: Next i End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Close() End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Me.Hide() Dim sl, i As Integer Dim p1(0 To 2) As Double Dim table As Object p1 = AcadApp.ActiveDocument.Utility.Getpoint(, "Chọn điểm chèn bảng") sl = DataGridView1.SelectedCells.Count table = AcadApp.ActiveDocument.modelspace.addtable(p1, sl + 2, 3, 100, 1000) table.regeneratetablesuppressed = False table.vertcellmargin = (0.25 * 100) table.horzcellmargin = (0.75 * 100) table.setcolumnwidth(0, 300) table.setcolumnwidth(1, 2000) table.setcolumnwidth(2, 600) table.setText(0, 0, (Label1.Text)) table.setText(1, 0, ("STT")) table.setText(1, 1, ("Giá trị")) table.setText(1, 2, ("Số lượng")) table.SetTextHeight(0, 50) table.SetTextHeight(1, 50) Dim sl1(0 To sl - 1) As String For i = 0 To sl - 1 Step 1 table.SetCellAlignment(i + 2, 1, 1) table.SetTextHeight(i + 2, 50) table.settext(i + 2, 0, i + 1) table.settext(i + 2, 1, (DataGridView1.SelectedCells(i).FormattedValue)) 'table.settext(i + 2, 1, (DataGridView1.Rows(DataGridView1.SelectedCells(i).RowIndex).FormattedValue)) Dim b = DataGridView1(2, DataGridView1.SelectedCells(i).RowIndex).FormattedValue table.settext(i + 2, 2, B) Next table.update() Me.Show() End Sub End Class 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
anhcos 188 Báo cáo bài đăng Đã đăng Tháng 3 5, 2011 Để chạy nhanh hơn, khi bắt đầu xử lý, bạn ẩn AutoCad đi, và hiện lại nó sau khi làm xong. Tốc độ hoàn toàn khác biệt gấp vài lần. Còn thuật toán có thể cải tiến 1 chút: Khi so sánh chuỗi trực tiếp từ tập chọn --> thao tác sẽ lâu hơn vì chương trình phải trích xuất dữ liệu từ ứng dụng khác. Vì thế tạo một mảng chỉ chứa riêng Text và tiến hành sắp xếp trên nó, tức là trong bộ nhớ sẽ nhanh hơn. 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
phamngoctukts 712 Báo cáo bài đăng Đã đăng Tháng 3 6, 2011 Mình đã fix về tốc độ và sắp xếp lại theo thứ tự AnfaB. http://www.cadviet.com/upfiles/3/loc_text_2.rar 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
funnyzui 1 Báo cáo bài đăng Đã đăng Tháng 3 18, 2011 chương trình của bạn rất hay. Nhưng mình thấy phần sắp xếp anphaB chưa ổn lắm. Sao mình làm 3,4 lần mà nó toàn sắp ngược lại kô?? 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
phamngoctukts 712 Báo cáo bài đăng Đã đăng Tháng 3 18, 2011 chương trình của bạn rất hay. Nhưng mình thấy phần sắp xếp anphaB chưa ổn lắm. Sao mình làm 3,4 lần mà nó toàn sắp ngược lại kô?? Bạn dùng file mình up cuối cùng ý. 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
gia_bach 1.531 Báo cáo bài đăng Đã đăng Tháng 3 19, 2011 Bạn dùng file mình up cuối cùng ý. Chắc bạn ý nói đến tình huống này : Kinh nghiệm rút ra từ Lisp thống kê bản vẽ ! <_< 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
duyhung 9 Báo cáo bài đăng Đã đăng Tháng 3 19, 2011 Em thấy tốc độ đã cải thiện nhieu` nhưng hình như chưa có thêm phần up hình của block hả bác? Nếu có thì có vẻ trực quan hơn. Ah nó có thể đặt lệnh tắt hay khi dùng luôn phải chạy file .exe hả bác. 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
phamngoctukts 712 Báo cáo bài đăng Đã đăng Tháng 3 19, 2011 Chắc bạn ý nói đến tình huống này : Kinh nghiệm rút ra từ Lisp thống kê bản vẽ ! <_< Hề hề. Thực ra chương trình này em viết lại từ cái lisp thống kê text cua Bác thêm mắm thêm muối tí thô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
funnyzui 1 Báo cáo bài đăng Đã đăng Tháng 3 24, 2011 Bạn dùng file mình up cuối cùng ý. mình đã dùng file cuối của bạn rồi đó chứ. Tình huống là bị giống như cái hình bác gia_bach đã up. Cái tiếp theo là khi xuất table ra autocad, nó bị ngược lại hết (tứclà xếp theo B-anpha) PS: theo hình của bác gia_bach thì sao dòng đầu tiên ko theo thứ tự gì hết vậy 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
babaria333 2 Báo cáo bài đăng Đã đăng Tháng 7 24, 2017 Chương trình đếm số lượng Text hoặc Block trong vùng chọn. http://www.cadviet.com/upfiles/3/loc_text_1.rar Anh ơi, anh có thể chỉnh lại phần mềm một chút được không ạ! em thấy chương trình của a rất hay, tiện lợi cho việc thống kê, nhưng em lại đang cần liệt kê, VD: có 5 text: A B C A D, thì em muốn phần mềm liệt kê cho em thành dòng 1 là A, dòng 2 là B, dòng 3 là C, dòng 4 lại là A và dòng 5 là D. Chứ không thống kê có bao nhiêu cái giống nhau được không ạ. Cám ơn a trước P/S: có cao thủ nào biết chỉnh phần mềm này chỉnh giúp em với ạ :( 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