tannguyen291
-
Số lượng nội dung
498 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
51
Bài đăng được đăng bởi tannguyen291
-
-
Vào lúc 15/7/2026 tại 19:17, cuongtk2 đã nói:Không có dạng .addin hả Tân?
Ribbon Excel thường là dạng XML mà bác. Với lập trình VBA thì em thấy chỉ có vài dạng cơ bản như xlam, xla, xlsm, xls...
Còn vụ file .addin thì em còn chưa biết đến luôn :)
-
Chào cả nhà, thời gian qua vấn đề bản quyền khá gắt nên nhiều doanh nghiệp hoặc cá nhân chuyển qua sử dụng WPS Office.
Qua thời gian ban đầu mình nhận thấy WPS rất giống với Microsoft Office, giống từ cách sử dụng cho đến lập trình VBA, C#...
Tuy nhiên nhiều chỗ vẫn có điểm khác biệt, rõ nhất vẫn là thiếu tài liệu.
Sau một thời gian đọc các Web trung và công cụ AI hỗ trợ mình cũng đã vọc vạch được cách tạo ribbon cho sheet.
Chúng ta sẽ không đi theo hướng tạo file XML \AppData\Local\Microsoft\Office\Excel.officeUI" như với Excel.
Thay vào đó chúng ta tao customUI ngay trong addins .XLAM.
Cấu trúc của 1 customUI như sau:
Folder: customUI - Folder: _rels - File: customUI.xml.rels - Folder: images - File: inmage1.png, inmage2.png...... - File: customUI.xmlFile customUI.xml.rels có dạng:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> <Relationship Id="Image1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="images/Image1.png"/> <Relationship Id="Image2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="images/Image2.png"/> <Relationship Id="Image3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="images/Image3.png"/> ..... </Relationships>
File customUI.xml có dạng:
<?xml version="1.0" encoding="UTF-8"?> <customUI onLoad="Ribbon_Load" xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab idMso="Tab1" label="ADDins1"> <group id="IDGroup1" label="NameGroup"> <button id="ID1" image="Image1" onAction="Button01" label="Phim 1" size="large" /> <button id="ID2" image="Image2" onAction="Button02" label="Phim 2" size="large" /> <button id="ID3" image="Image3" onAction="Button03" label="Phim 3" size="large" /> </group> .... </tab> ..... </tabs> </ribbon> </customUI>
Tới đây chúng ta đã có đủ cấu trúc của một customUI cần chèn vào File XLAM.
Tạo 1 file XLAM bất kỳ sau đó đổi tên file .xlam thành .zip
Mở file .zip Mở folder_rels (có sẵn trong file .zip), tìm file .rels và mở bằng Notepad.
thêm dòng sau vào cuối:
<Relationship Id="myCustomUI" Type="http://schemas.microsoft.com/office/2007/relationships/ui/extensibility" Target="customUI/customUI.xml"/>
Lưu file nén sau đó đổi tên lại thành XLAM.
Như vậy chúng ta đã có 1 file Addins có ribbon hoàn chỉnh việc tiếp theo là viết code VBA như bình thường.
Cách này cảm giác có hơi trích lỏ nhưng nó đã hoạt động.
Chúc các bạn thành công trong công việc sắp tới.
-
40 phút trước, tuyenvq đã nói:Mọi người ai có file cài autocad 2025 bản quyền có thể cho mình xin với được không.
Giờ này lên Autodesk tải về thôi :))
-
Chào mọi cả nhà. khoảng thời gian gần đây diễn đàn có vẻ hơi yên tĩnh và chính mình cũng đang khá bận với công việc không tham gia diễn đàn nhiều.
Hôm nay mình trở lại với một thuật toán khá hay để kiểm tra điểm nằm bên trong đường polyline kín.
Việc kiểm tra này có khá nhiều thuật toán và nhiều người viết chương trình cũng rất ổn thường biết đến như Ray cating, Triangulation Method, Winding number...
Với Các ngôn ngữ bậc cao hơn còn tận dụng được các ưu thế có sẵn như Brep hoặc Mpolygon đển xác định.
Đối với chúng ta dễ tìm nhất là Thuật toán Ray Catting tuy nhiên Việc tạo ra đối tượng Ray mới, Tính toán giao điểm + Loại từ đi qua đỉnh hoặc chạm biên làm thuật toán khá cồng kềnh.
Hôm nay mình xin giới thiệu đến các bạn 2 ý tưởng cho hàm kiểm tra Point Inside Polygon. Không tạo ra đối tượng mới để kiểm tra (Ray, Brep, Mpolygon) dẫn đến tối ưu thuật toán và thời gian chạy chương trình.
Phương pháp 1: Orientation Test.
- Tính diện tich có hướng của polyline (Shoelace Formula)
- Tìm điểm gần nhất của Point đến Polyline => vector V1.
- Xác định tích có hướng của V1 với vector tiếp tuyến tại điểm đó.
- Khi 2 hướng này ngược chiều có thể xác định Point nằm trong Polyline.
Phương pháp 2: Winding number extension.
- Phươnng pháp này mình mở rộng từ Winding number chuẩn (đếm vòng quấn quanh polygon) để có thể tính được cạnh cong trong pline.
- Chia Pline thành 2 phần: 1 là pline không có đường cong và 2 tập hợp các hình viên phân (hình được giới hạn bởi đường cong và dây cung)
- Dùng phương pháp Winding number để kiểm tra Point in Pline (kết quả -1 nếu nằm trong 1 nếu nằm ngoài)
- Duyệt qua từng hình viên phân xác định điểm nằm trong hình
- Nhân toàn bộ kết quả với nhau nếu < 0 là nằm trong nêu > 0 là nằm ngoài.
Mở rộng: Nếu có nhiều Polyline có thể tính từng polyline rồi nhân kết quả lại âm là trong dương là ngoài.
Với 2 cách trên chúng ta có thể xác định điểm nằm trong Polyline không quan tâm Polyline có tự giao hay nhiều Polyline có giao với nhau hay không.
Trân trọng.
-
Nếu bạn làm chuyên quy hoạch hoặc các công việc thường phải triển khai các bản vẽ thửa đất quy hoạch có thể tham khảo chương trình của mình:
-
Nếu bạn cần một bộ phần mềm chuyên nghiệp, chuyên dụng cho công việc quy hoạch có thể nhắn mình.
Mình có rất nhiều công cụ phục vụ quy hoạch từ phương án ý tưởng - thống kê - cảnh quan...
Tham khảo: Tools quy hoạch sử dụng đất, chia lô, cảnh quan
SĐT: 0395.218.999
-
1
-
-
Hoặc có thể win đời tống quá. Cái thằng windows xử lý rác hơi tệ. 1 năm cài lại win 1 lần dùng cho mượt.
-
G code là mã otp của google về số điện thoại à bạn. :)) ngôn ngữ chuyên ngành quá không có hiểu. :)
-
XIN GIÚP ĐỠ VỀ LISP
trong AutoLisp
28 phút trước, dungpham01 đã nói:vãi, lại đi hỏi AI tiếp
vậy là bạn không biết rồi AI của bác Cường pro lắm. mất nhiều công huấn luyện mới được đấy.
Minh h cũng hay dùng AI để code. Trước tiên cần thảo luận với AI về các vấn đề học thuật đưa ra mô hình phương pháp nghiên cứu đầy đủ cho 1 bài toán sau đó bắt nó code theo. Mượt luôn.
-
1
-
-
phải như thế này mới tròn chứ:
(if (= (getvar 'PEDITACCEPT) 0)
(command "pedit" "m" ss "" "Y" "j" "0" "")
(command "pedit" "m" ss "" "j" "0" "")
)
Thực ra người viết ngay từ đầu lập danh sách point rồi cuối cùng entmake pline sẽ sạch nhất
-
2
-
-
-
3 phút trước, cuongtk2 đã nói:(dùng Chat GPT)
Autolisp: chọn một Text muốn tính ra A (khoảng cách rải), sau đó nhập vào đường kính d . A = pi * d * d * 1000 / ( 4 * 100 * TBC) . Sau đó làm tròn A đến 10. Kết quả có dạng 16a250 với 16 là đường kính, 250 là A. Kết quả này là text sẽ được đặt vào autocad với điểm pick, các thuộc tính khác lấy từ text đã chọn. Text đã chọn sẽ đổi màu sang màu 3.
Kết quả sẽ ra như bạn mong muốn.
Có lần yêu cầu phức tạp hơn cả code, em từng viết cái prompt dài như 1 cái sớ và dài hơn cả code nếu viết gọn mấy cái xuống dòng lại.
-
1
-
-
4 phút trước, Htn02 đã nói: a có font ko cho e xin với ạ
Font unicode chính là các font có sẵn của windows như: Arial, Time new roman, Calibri... ngoài ra có thể tải các font unicode khác trên google font nhiều vô số kể.
-
Thôi các bố dẹp mấy font .vn đi, lỗi lòi mắt. bây giờ văn bản giấy tờ đã yêu cầu sử dụng font unicode theo TC 6909 rồi. mấy bố vẽ kỹ thuật cứ ôm khư khư mấy font đời tống.
-
Trình độ DCL của bạn gần như chưa có gì nên là tốt nhất tham khảo những code đã có.
Mình từng đăng 1 dcl tặng mọi người có thể xem tại đây:
-
Đừng gọi lisp là list. Với pline tính diện tích bằng công thức Shoelace nên luôn ra kết quả. nhưng với hatch hoặc 1 số đối tượng khác việc cạnh biên tự giao thì không thể lấy được diện tích hoặc không thể tạo thành đối tượng. trong trường hợp này công thức tính kể trên cũng là tính sai nên cố gắng vẽ lại pline để hatch có diện tích.
-
30 phút trước, TTdra đã nói:Thầy cho em hỏi, em mới làm quen với autocad thì có nên học lập trình VBA ngay không ạ?
Em cảm ơn thầy ạ
Không biết bạn hoạt động trong ngành gì. nếu trong ngành xây dựng thì học autolisp ,vba. nếu bạn muốn đi theo đường code chuyên nghiệp thì c++, c#.
VBA lợi thế là vừa viết cho cad vừa viết được cho exel. autolisp lợi thế dễ học.
Còn khi đã thích thì ngôn ngữ nào cũng được.
-
1
-
-
Mình k dùng cad map. chỉ biết là có chức năng này thôi. bạn tự tìm hiểu xem: https://www.youtube.com/watch?v=y8m697I5-eU&t=323s
-
15 giờ trước, nguyenhong3868 đã nói:Em đang có các tờ bản đồ địa chính File Autocad, trên bản đồ có rất nhiều thửa đất được vẽ bằng Line
Nhiệm vụ của em là : Bo từng thửa đất để tạo thành thửa khép kín bằng đường Polyline ở 1 Level hiện tại và màu Level hiện tại đó Nếu sử dụng lệnh Bo từng thửa 1 thì mất rất nhiều thời gian và có khi còn bị sót không kiểm soát được
>>> EM CÓ TÌM THẤY 1 LISP TRÊN DIỄN ĐÀNTRONG LISP NAY tác giả đang viết Hatch và TÔ MÀU cho từng thửa và từng vùng một
Em không biết gì về viết code Lisp. Em nhờ các cao nhân giúp em sửa lại Lisp trên thành Lisp :- Tên lệnh : taovungthua
- Lisp chỉ tạo đường BO cho từng thửa riêng lẻ (KHÔNG BO CHO CẢ MỘT VÙNG RỘNG LỚN)
- KHÔNG TÔ MÀU CHO THỬA
- Làm sao để chạy nhanh hơn vì em thấy Lisp trên nếu quét một vùng nhiều thửa thấy chạy chậm lắm ạ
* HOẶC CÓ CÁCH NÀO XỬ LÝ TRÊN FILE CAD ĐƯỢC KHÔNG Ạ
Rất mong được các cao nhân giúp đỡ ạ. Em xin cảm ơn rất nhiều
111.dwg
Chuyển qua dùng autocad map. có sẵn chức năng này. chạy siêu nhanh. còn với lisp thì khắc phục tốn quá nhiều nơron nên bỏ qua. trên autodesk app có ông bán chương trình kiểu này có mấy trăm k. công việc phức tạp như này tìm lisp không ai có đâu.
-
1
-
-
Lisp hay đấy ông nhưng tôi chụp màn hình bắt chatgpt chuyển thành bảng ổn lắm :)
-
1
-
-
C# autocad mới thành thạo 2d. chưa biết gì 3d có được không :))
-
1
-
-
Vứt cái chatgpt sang 1 bên. bài này có 3 cách giải.
1. duyệt qua từng rectange lấy listpoint sử dụng (ssget "CP" listpoint '((0 . "CIRCLE"))) để chọn được các vòng tròn nằm trong nó.
note: câu lệnh đơn giản, chạy với polyline bất kỳ không nhất thiết là hình chữ nhật. nhưng nếu vòng tròn lớn hơn polyline thì không chọn được.
2. sử dụng hàm trong express tool để kiểm tra điểm nằm trong 1 danh sách điểm (acet-geom-point-inside p1 lst dst) {hoặc bất kỳ hàm point inside nào trên mạng} để loại trừ
not: chạy với polyline bất kỳ không nhất thiết là hình chữ nhật.
3. sử dụng cách của chatgpt tuy nhiên nên dùng 1 vòng lặp for.
note: chỉ áp dụng với hình chữ nhật.
còn hướng dẫn bạn sửa thì không. bạn học tập đi đừng ném chatgpt lên nhóm nhờ mọi người sửa.
-
1
-
-
Mới học thì nên tham khảo nhưng đừng phụ thuộc.
(while rect
(while circle
(ssdel circle
)
(ssdel rect
)
cái này là cái gì. hiểu thuật toán chứ.???
qua vòng 1: danh sách circle đã bị xóa sạch rồi còn làm gì cho các vòng sau nữa.
phụ thuộc ít thôi.
-
1
-
-
1 code chatgpt ra tay. :)) đóng mở ngoặc còn không đủ thì chạy kiểu gì. :))
-
1
-

Autocad.NET Cad to Klm
trong Lập trình khác
Đã đăng · Trả lời báo cáo
Bác Cường xem lại tham số xem có sai chỗ nào không. Em thấy chương của bác lệch với của em nên tải thêm HHmap về check lại.