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

anhcos

Nhà quảng cáo
  • Số lượng nội dung

    305
  • Đã tham gia

  • Lần ghé thăm cuối

  • Ngày trúng

    21

Bài đăng được đăng bởi anhcos


  1. Ví dụ khi chạy chương trình em muốn thay đổi chiều dài của Line, Polyline, ... bằng cách nhập số vào ô textbox có được không ạ

    AddLine(x1,y1,x2,y2) thêm vào một Line qua 2 điểm

    gán x1 cho textbox1

    x2 cho textbox2

    y1 cho textbox3

    y2 cho textbox4

    Mới học nên ngôn ngữ lập trình chưa diễn tả đúng mong bác thông cảm !

     

    Gởi bạn một ví dụ về thêm mới Line bằng cách nhập tọa độ từ chương trình.

    • Vote tăng 1

  2. Phiên bản 1.1 (26-12-2011): Hình như không sử dụng được bác ah, - Chưa thấy add biến cho textbox để người dùng có thể thay đổi tùy biến

     

    Mình vẫn thấy dùng được, cũng không có ai phản hồi thêm.

    Add biến cho textbox là sao, VD cụ thể hơn đi bạn.

     

    Properties Box sử dụng đối tượng gì đấy anhcos ơi???

     

    Câu hỏi này không rõ ràng lắm, dù sao Detailing cũng đã trả lời dùm bạn rồi.

     

    Bổ sung 1 chút thôi, cú pháp để cho 1 thuộc tính thể hiện trong PropertyGrid là:

     

    - Chèn vào đầu tiên

    Imports ComponentModel

     

    ...

     

    - Khai báo thuộc tính

    <Category("Tên nhóm các thuộc tính"),DisplayName("Tên thuộc tính"),Description("Diễn giải ý nghĩa thuộc tính")>

    public Property ThuocTinh as ...

     

    Tất cả các cấp độ dưới cấp public thì thuộc tính sẽ không xuất hiện trong PropertyGrid

    • Vote tăng 2

  3. Tải về

     

    * 05-Jul-2012

    - Thêm User Control - NumericAcad giúp lấy số liệu từ Acad. Kế thừa từ Control NumericUpDown, ngoài ra còn đo khoảng cách hoặc lấy chiều dài cung, đường thẳng, polyline, số trong text và mtext, kích thước / nội dung của Dimesion.

     

    * 02-May-2012:

    - Bổ sung thêm lệnh ArrayPolar và ArrayRectangle

     

    * 26-Dec-2011:

    - Cải tiến chút ít cho dễ sử dụng

     

    Bài mẫu:

     

    1. http://www.fshare.vn/file/TW7GWAWQ5T

     

    2. http://www.fshare.vn/file/TY8FG2D0JT

    • Vote tăng 2

  4. Hướng dẵn sử dụng
    Chú ý: Nên sử dụng bằng VB.NET trong bộ Visual Studio (VS)

    1. Đưa điều kiểm (control) vào Form Designer
    - Ấn chuột phải và Toolbox, chọn Choose Item.. như hình vẽ:
    29151211.png

    - Trong Tab .NET Framework Components chọn nút Browse... và chọn file thư viện EquipmentPreview.dll (tải về trước ở post#3):
    93993275.png

    - Nhấn OK, trên Toolbox sẽ hiện thêm ra một điều kiểm mới như hình dưới, bên trái:
    Đưa điều kiểm vào trong Form, như hình giữa.
    Các thuộc tính ban đầu nằm bên phải, trong đó:
    ShowCommand, ShowOrigin, ShowPreview, ShowStatusbar, ShowToolbar: thể hiện or không các thành phần xuất hiện trong điều kiểm.
    70172471.png


    - Chèn vào dòng đầu tiên vào phần viết code của form (sẽ thuận tiện hơn cho việc coding):
    Imports EquipmentPreview

    2. Điều kiểm EquipmentPreview sẽ thể hiện một đối tượng kế thừa từ lớp cơ sở TEquipment, cách khai báo như sau:
    VD: điều kiểm nằm trên Form1 có tên là eqPreview, thì cầu lệnh sau:
    eqPreview.SelectObject = equip

    trong đó equip được khai báo (màu đỏ bắt nuộc phải có):
    Tạo một Class kết thừa từ lớp TEquipment

    Class MyEquip
    Inherits TEquipment 'dòng này bắt buộc phải có

    'hàm khởi tạo, có thể tùy biến, nhưng phải gọi hàm khởi tạo cơ sở
    Sub New(Name as String)
    MyBase.New(Name)

    'Code do người dùng viết thêm nằm ở đây
    End Sub
    End Class
    Dim equip as new MyEquip("Của tôi")

    3. Thao tác với các đối tượng

    - Tạo dữ liệu thể hiện cho đối tượng
    + Tạo hàm ghi đè Create2D như sau:
    Public Overrides Sub Create2D()
    ClearEntities() 'dùng dòng này để xóa các dữ liệu cũ

    'Phần thêm các đối tượng vào đây

    End Sub

    + Các thực thể cơ bản xây dựng nên đối tượng bao gồm Line, Polylile (chưa có cung), Rectangle, Arc, Circle, Text.
    Sử dụng các hàm tương ứng để thêm vào các thực thể:
    AddLine(x1,y1,x2,y2) thêm vào một Line qua 2 điểm
    AddPolyline(đỉnhs,Closed) tạo một polyline với các đỉnh nằm trong mảng 2 phần tử X,Y liên tiếp nhau. Closed dùng để đóng hay mở polyline
    AddPolyline(x,y,Width,Height) ' tạo một hình chữ nhật
    AddCircle(CenX, CenY,Radius) dùng để thêm vào một vòng tròn
    AddArc(CenX,CenY,Radius,StartAngle,EngAngle) thêm vào một cung tròn, các góc đều ở radians
    AddText(x,y,Text,Height,Rotation) tạo một dòng văn bản, góc nghiêng tính bằng radians

    + Tất cả các hàm trên đều có 2 tham số mặc định nằm cuối cùng là Layer và Type
    và một hàm nạp chồng với màu chỉ định có kiểu Color của VB.NET

    Layer chọn theo sau:
    Public Enum TLayer As Integer
    Continuous = 0
    Center = 1
    Hidden = 2
    Text = 3
    Dimension = 4
    End Enum

    và Type
    Public Enum TEntityType As Integer
    'Trông thấy và xuất qua acad được, được thêm vào đối tượng khác (cha)
    Normal = 1
    'Trông thấy được nhưng không xuất qua acad được và không thêm vào đối tượng khác (cha)
    Preview = 2
    'Trông thấy được và xuất qua acad được nhưng không thêm vào đối tượng khác (cha)
    Privated = 3
    End Enum

    VD:
    AddLine(1,2,6,-1,TLayer.Center)' tạo đường thẳng qua 2 điểm (1,2) và (6,-1) nằm trong lớp Center
    AddLine(1,2,6,-1,Color.Red,TLayer.Center)' tạo đường thẳng qua 2 điểm (1,2) và (6,-1) nằm trong lớp Center, màu đỏ
    AddLine(1,2,6,-1,Color.Yellow)tạo đường thẳng qua 2 điểm (1,2) và (6,-1) màu vàng

    AddArc(0,1,1,7*PI/4,PI/4,TLayer.Hidden,TEntityType.Preview) cung tròn có góc bắt đầu lớn hơn góc cuối, chỉ thấy trên điều kiểm nhưng không xuất qua Acad được.

    - Để xuất qua AutoCAD, ta dùng câu lệnh
    equip.Draw(acad_app), trong đó acad_app là biến đại diện cho chương trình AutoCAD đang chạy.

    Hàm Draw chỉ xuất các dữ liệu được phép của đối tượng qua AutoCAD (hiện tại bản 1.1 tất cả các đối tượng đều tạo vào layer và textstyle hiện hành)

    Còn tiếp ...

    • Vote tăng 3

  5. Giao diện hỗ trợ lập trình trong thiết kế

     

    Đây là một trong những dự án tâm đắc nhất của tôi, nay đưa lên đây chia sẻ với mọi người.

     

    Hy vọng nó sẽ hỗ trợ cho các kỹ sư tạo thêm được các ứng dụng cho riêng mình với trình bày đẹp mắt hơn.

     

    Các tính năng chính của điều kiểm mới (Control), là một phần thể hiện trước ý tưởng thiết kế trước khi xuất dữ liệu qua Acad hay Excel.

    Giao diện có 3 phần, thanh công cụ trên cùng, phần dưới cùng là thanh trạng thái và phần chính giữa là nơi thể hiện.

     

    designcontrol.png

     

    Trong đó có các chức năng chính:

    - Thể hiện các đối tượng như Line, Polyline, Cirle, Arc và Text.

    - Có thể phóng to, thu nhỏ và dời bằng chuột

    - Đo khoảng cách với truy bắt điểm (kết hợp với zoom và pan như acad)

    - Không phụ thuộc vào Acad

     

    Sau đây là một số mẫu VD:

     

    - VD về dữ liệu có chuyển động

    samplef.png

     

     

    - Khung dầm:

     

    framea.png

     

    - Vẽ cây chơi:

     

    treen.png

     

    - Chương trình vẽ mặt cắt:

     

    makesection.png

     

    Tải chương trình mẫu ở đây (yêu cầu .NET 2.0)

    • Vote tăng 14

  6. Dùng phương trình tham số không thích hợp cho việc coding.

    Nên dùng phương trình chính tắc:

    Ax + By + C = 0

     

    Phương trình qua hai điểm A(xA, yA), B(xB, yB) như sau:

    (x-xA) / (xB-xA) = (y-yA) / (yB-yA)

    sau khi khai triển bạn sẽ biết được 3 tham số A, B, C

     

    Giao 2 đường thẳng d1, d2:

    Chi tiết hơn xem ở đây: giải tích - đường thẳng

     

    Các diễn giải trên chỉ dùng cho 2D, trong 3D sẽ phức tạp hơn nhiều.

    • Vote tăng 1

  7. MText thì Align theo kiểu khác:

    Nó sử dụng định dạng riêng:

     

    Format Multiline Text in an Alternate Text Editor

    If you use an alternate text editor, you apply formatting by entering format codes. You can underline text, add a line over text, and create stacked text. You can also change color, font, and text height. You can change the spaces between text characters or increase the width of the characters themselves. To apply formatting, use the format codes shown in the following table.

     

    mtextformat.png

     

    Braces can be nested up to eight levels deep.

    You can also use control codes to add special characters, such as tolerance or dimensioning symbols.

    • Vote tăng 1

  8. Cú pháp chỉnh canh chữ:

    object.Alignment = giá trị

    trong đó object là Attribute, AttributeRef, Text

    Các giá trị

    acAlignmentLeft = 0

    acAlignmentCenter =1

    acAlignmentRight ..

    acAlignmentAligned

    acAlignmentMiddle

    acAlignmentFit

    acAlignmentTopLeft

    acAlignmentTopCenter

    acAlignmentTopRight

    acAlignmentMiddleLeft

    acAlignmentMiddleCenter

    acAlignmentMiddleRight

    acAlignmentBottomLeft

    acAlignmentBottomCenter

    acAlignmentBottomRight=14

     

    textalign.png

     

    Quy định và ngoại lệ:

    Text aligned to acAlignmentLeft uses the InsertionPoint property to position the text.

    Text aligned to acAlignmentAligned, or acAlignmentFit uses both the InsertionPoint and TextAlignmentPoint properties to position the text.

    Text aligned to any other position uses the TextAlignmentPoint property to position the text.

    • Vote tăng 1

  9. Trước đây, tôi có viết chương trình vẽ mặt cắt cho người bạn, với một số tính năng đơn giản theo yêu cầu của nó.

    Tôi không chuyên về phần này nên hiện giờ không biết giờ có ai cần chương trình như thế nữa hay không. Nay mang em nó lên đây, mọi người xem cần thay đổi và bổ sung gì, tôi sẽ hoàn thiện cho mọi người dùng.

     

    taomatcat.png

     

    Thư mục chương trình và file bình đồ mẫu kèm theo.

     

    Một số thắc mắc:

    secex.jpg

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

  10. Xin chào, các anh.

    Em đang làm đồ án tốt nghiệp rất cần phần mềm này.

    Các anh có thể up lên cho em được không ạ!

    Em xin chân thành cảm ơn!

    Mình chỉ có thể hướng dẫn, còn code thì không thể up lên rồi.

    Mình cũng hay đi chôm code, nhưng chỉ là những đoạn ngắn, chứ nguyên một chương trình thì không cách gì mà lần ra cho thông suốt.


  11. Hầu như tất cả các chương trình đều cung cấp sẵn thư viện để nhúng.

    Ngay từ ACAD R14 cũng đã có sẵn rồi, Excel hay Word cũng nhúng được.

     

    Phần nhúng có sẵn cái hay riêng của nó, vì thực tế nó là một Preview xịn và chiếm dụng ít tài nguyên hơn là một phiên của AutoCAD.

     

    Ý của mình mong muốn có 1 cái preview độc lập, xử lý dữ liệu độc lập và lúc nào cần thì mới xuất dữ liệu qua Acad.


  12. Cài đặt font unicode chuẩn và đầy đủ của microsoft (font arial.ttf lúc đó khoảng chừng 30MB), và các font hỗ trợ khác như msminchu... cả bộ gõ tiếng Nhật, Trung kèm theo trong bộ cài đặt Windows.

     

    WinXP vào control panel --> Regional and language option, chọn Language, tick vào mục Install files for East Asian languages.

    Sau đó nó sẽ yêu cầu đĩa cài đặt gốc của WinXP để cài.

     

    Sau khi cài xong có thể vào control panel --> Regional and language option, chọn Language --> ấn nút details dể thêm bớt các bộ gõ Nhật Trung ... (gõ hiraga, katakana or kanji đều được)

     

    Win7 thì tự tìm thôi...


  13. Có thể tìm được giao điểm của một mặt và 1 Spline phẳng nằm trong 3D không nhỉ?

    Tôi đang gặp bài toán thực tế này mà chưa tìm ra hướng giải quyết. Các bô lão lisp nếu biết thì chỉ hướng đi giùm, còn nếu khẳng định được là "không thể được" thì cũng xin cho ý kiến để tôi tìm hướng đi khác.

    Thanks!

     

    Đầu tiên tìm đường thẳng giao giữa 2 mặt phẳng, sau đó tìm giao giữa đường thẳng đó với SPline (cái này nhờ CAD tính)

     

    Tôi đã xây dựng một thư viện dll về hình học trong không gian gần như đầy đủ với các đối tượng như điểm, đường thẳng, mặt phẳng, đường tròn là ellipse. Tuy nhiên thư viện chỉ hỗ trợ lập trình ngoài, lisp thì tôi không rõ.


  14. Các bác ơi cho em hỏi sao hàm RemoveItems & AddItems của SelectionSet chạy toàn báo lỗi vậy

    =================================================

    Invalid argument Items in RemoveItems

    =================================================

     

    Một số Property và Method không dùng theo kiểu later binding được, mình chẳng biết tại sao, mặc dù cú pháp không sai tí nào.

     

    Trường hợp này giải quyết bằng cách lọc ngay từ đầu cho phần chọn đối tượng.


  15. Khi dùng hàm IntersectWith bạn đã tạo ra 2 line (entity) nhưng chủ topic lại ko thích như vậy (ko hiểu tại sao hehe)

    Đôi khi có những cách suy nghĩ tự làm khó mình như chủ topic đây ???? Tại sao ko dc vẽ thêm 2 line để dễ tìm giao điểm nhỉ? hehehe

     

    Chúng ta cùng bàn nau về ý tưởng và thuật toán thôi, chứ chủ thớt quẳng topic đâu mất rồi à.

     

    Đúng là tạo ra 2 đối tượng, tìm ra giao xong rồi xóa, vừa dễ mà chính xác.

     

    Như vậy nếu vận dụng các công thức tính toán trong hình học giải tích hẳn sẽ xác định được giao điểm của các line mà không nhất thiết phải vẽ nó ra (tức là phải thêm các đối tượng vào trong CAD).

     

    Để tính toán theo công thức như bác nêu là chuẩn nhất, nhưng triển khai thì rất mất thời gian và phức tạp.


  16. Cái này đâu cần phải lập trình VBA. Bạn chỉ cần làm như sau:

    Đánh lệnh PLine (hoặc Line),

    Đánh lệnh 'CAL

    Rồi nhập ILLE, sau đó bạn chọn 4 điểm End (theo thứ tự A, B, C, D). Như vậy là đã bắt được giao điểm của 2 đường Ab và CD rồi.

    Công việc tiếp theo là rất đơn giản đúng không bạn?

    Không đơn giản nếu có nhiếu hơn 100 or nhiều hơn lần như thế, khi chủ thớt post vào chuyên mục này là có dụng ý riêng.

     

    Đúng như Detailing nói trong VBA không có cách gì tìm được giao điểm với 4 điểm đó. Chỉ có cách vẽ 2 đường line rồi tìm giao điểm của chúng. Trong lisp thì việc này lại đơn giản chỉ cần dùng hàm (inters p1 p2 p3 p4 nil) là được giao điểm.

     

    Cái này sai, VBA dư sức làm chuyện này bằng cách sử dụng hàm IntersectWith, và có thể tìm giao giữa 2 đối tượng bằng cách kết hợp có kéo dài và không kéo dài 2 đối tượng giao.

×