Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
hoathuongphuoc

Vẽ hình vuông chỉ cần 1 click trên cad

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

Chào các bạn,

Có bạn nào có cách chỉ cần click 1 điểm và thêm chiều dài 1 cạnh có thể vẽ được 1 hình vuông không. Mình dùng vb.net để vẽ. Cảm ơn mọi người.

 

Đề bài thiếu dữ liệu: click 1 điểm và thêm chiều dài 1 cạnh

1 điểm đó là điểm nào, đó là đỉnh của hình vuông, có nằm trên cạnh đã cho hay không? Hay điểm đó là tâm của hình vuông, hay điểm đó nằm trong hình vuông, hay....

- Nếu bạn ra đề như thế thì câu trả lời là có thể sẽ không vẽ được vì cái điểm đó nằm ở mô mô....... ;) 

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

Điểm đó làm tâm hình vuông và mình cho sẵn chiều dài của nó. Thank các bạn.

 

Biết 1 điểm là tâm hình vuông và chiều dài 1 cạnh -> kết quả sẽ cho ra vô số nghiệm.............

Hình vuông có cạnh // Ox hay hình vuông có cạnh // với 1 Line nào đó, vẽ như thế nào cũng được hay sao?  

  • 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

Chào các bạn,

Có bạn nào có cách chỉ cần click 1 điểm và thêm chiều dài 1 cạnh có thể vẽ được 1 hình vuông không. Mình dùng vb.net để vẽ. Cảm ơn mọi người.

 

Nếu chỉ cần click 1 điểm và thêm chiều dài 1 cạnh có thể vẽ được 1 khối hộp vuông với chiều cao tùy ý bằng lệnh Polysolid:

Command: polysolid

Specify start point or [Object/Height/Width/Justify] <Object>:

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 sẽ click trong 1 hình khác ví dụ như hình dưới đây(Hình chỉ mang tính chất minh họa)

http://www.cadviet.com/upfiles/3/125141_ex.dwg

 

Nghĩa là mình click trong hình đó và nó sẽ vẽ ra 1 hình vuông có cạnh // 1 trong các cạnh của hình đó. mình dùng vb.net để vẽ. cảm ơn các 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

Hic. Ý của mình là chỉ cần click vào 1 điểm và vẽ 1 hình vuông, cho biết độ dài cạnh của hình vuông đó. và cạnh của hình vuông đó song song với 1 line nào đó. Không biết có đủ điều kiện chưa. MÌnh dùng vb.net để làm việc này. Theo các bạn có làm được không. Nói chung mình chỉ cần click 1 điểm và vẽ đc 1 hình vuông thôi. Mình cảm ơn các 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

Hic. Ý của mình là chỉ cần click vào 1 điểm và vẽ 1 hình vuông, cho biết độ dài cạnh của hình vuông đó. và cạnh của hình vuông đó song song với 1 line nào đó. Không biết có đủ điều kiện chưa. MÌnh dùng vb.net để làm việc này. Theo các bạn có làm được không. Nói chung mình chỉ cần click 1 điểm và vẽ đc 1 hình vuông thôi. Mình cảm ơn các bạn.

Bạn có thể tham khảo topic này, muốn vẽ gì cũng được, bởi nó "siêu đẳng" như nhau.

http://www.cadviet.com/forum/topic/15204-cach-nao-aeaf-va-nhanh-aecang-thalng-khep-kin-tam-giac/

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 lập trình bằng vb.net để làm việc này bạn ơi. huhu.

Đừng có đưa vb.net ra mà "hù" thiên hạ chứ.

Và cũng đừng có viết lòng vòng có thể làm mọi người xì-trét. (hoặc xem lại khả năng diễn đạt của mình)

 

Tốt nhất là bạn đưa ra "thuật toán khả dụng " có thể giải quyết vấn đề của bạn bằng lệnh Cad trước khi nghĩ đến lập trình (bằng bất cứ ngôn ngữ nào).

Hy vọng khả năng trình bày bằng lưu đồ của bạn khá hơ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

Tham khảo một số lệnh vẽ hình vuông bằng vb.Net

Imports System.Math
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.EditorInput

Public Class Gia_Bach
    <CommandMethod("hinhVuong1")> _
    Public Sub hinhVuong1()
        Dim doc As Document = Application.DocumentManager.MdiActiveDocument
        Dim ed As Editor = doc.Editor
        Dim db As Database = doc.Database

        Dim opts As New PromptEntityOptions(vbLf & "Chọn đường thẳng (Line) xác đinh góc ngiêng: ")
        opts.SetRejectMessage(vbLf & "Chỉ được chọn đường thẳng (Line) ...")
        opts.AddAllowedClass(GetType(Line), False)
        Dim res As PromptEntityResult = ed.GetEntity(opts)
        If res.Status <> PromptStatus.OK Then
            ed.WriteMessage("Không chọn được đường thẳng ! EXIT.")
            Exit Sub
        End If

        Dim ppo As PromptPointOptions = New PromptPointOptions("")
        ppo.Message = vbLf & "Chọn điểm chèn hình vuông:  "
        Dim ppr As PromptPointResult = ed.GetPoint(ppo)
        If ppr.Status <> PromptStatus.OK Then
            ed.WriteMessage("Không chọn được điểm chèn ! EXIT.")
            Return
        End If
        Dim pt1 As Point3d = ppr.Value

        Dim pdo As PromptDistanceOptions = New PromptDistanceOptions(vbLf & "Nhập độ dài cạnh hình vuông: ")
        pdo.UseBasePoint = True
        pdo.BasePoint = pt1
        pdo.UseDashedLine = True
        Dim pdr As PromptDoubleResult = ed.GetDistance(pdo)
        If pdr.Status <> PromptStatus.OK Then
            ed.WriteMessage("Chưa nhập độ dài cạnh hình vuông ! EXIT.")
            Return
        End If

        Using tr As Transaction = db.TransactionManager.StartTransaction()
            Dim canh As Double = pdr.Value
            Dim duongthang As Line = res.ObjectId.GetObject(OpenMode.ForRead)
            Dim ang As Double = duongthang.Angle
            Dim pt2, pt3, pt4 As Point2d
            pt2 = New Point2d(pt1.X + canh * Cos(ang), pt1.Y + canh * Sin(ang))
            pt3 = New Point2d(pt2.X + canh * Cos(ang + PI / 2), pt2.Y + canh * Sin(ang + PI / 2))
            pt4 = New Point2d(pt3.X + canh * Cos(ang + PI), pt3.Y + canh * Sin(ang + PI))

            Dim btr As BlockTableRecord = tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite)
            Dim hinhVuong As Polyline = New Polyline()
            hinhVuong.SetDatabaseDefaults()
            hinhVuong.AddVertexAt(0, New Point2d(pt1.X, pt1.Y), 0, 0, 0)
            hinhVuong.AddVertexAt(1, pt2, 0, 0, 0)
            hinhVuong.AddVertexAt(2, pt3, 0, 0, 0)
            hinhVuong.AddVertexAt(3, pt4, 0, 0, 0)
            hinhVuong.ColorIndex = 1
            hinhVuong.Closed = True
            hinhVuong.Elevation = pt1.Z
            btr.AppendEntity(hinhVuong)
            tr.AddNewlyCreatedDBObject(hinhVuong, True)
            tr.Commit()
        End Using

    End Sub

    <CommandMethod("hinhVuong2")> _
    Public Sub hinhVuong2()
        Dim doc As Document = Application.DocumentManager.MdiActiveDocument
        Dim ed As Editor = doc.Editor
        Dim db As Database = doc.Database

        Dim ppo As PromptPointOptions = New PromptPointOptions("")
        ppo.Message = vbLf & "Chọn đỉnh thứ nhất của hình vuông:  "
        Dim ppr As PromptPointResult = ed.GetPoint(ppo)
        If ppr.Status <> PromptStatus.OK Then
            Return
        End If
        Dim pt1 As Point3d = ppr.Value

        ppo.Message = vbLf & "Chọn đỉnh thứ hai của hình vuông:  "
        ppo.UseBasePoint = True
        ppo.BasePoint = pt1
        ppo.UseDashedLine = True
        ppr = ed.GetPoint(ppo)
        If ppr.Status <> PromptStatus.OK Then
            Return
        End If

        Using tr As Transaction = db.TransactionManager.StartTransaction()
            Dim pt2 As Point3d = ppr.Value
            Dim canh As Double = pt1.DistanceTo(pt2)
            Dim ang As Double = pt1.GetVectorTo(pt2).AngleOnPlane(New Plane(Point3d.Origin, Vector3d.ZAxis))
            Dim pt3, pt4 As Point2d
            pt3 = New Point2d(pt2.X + canh * Cos(ang + PI / 2), pt2.Y + canh * Sin(ang + PI / 2))
            pt4 = New Point2d(pt3.X + canh * Cos(ang + PI), pt3.Y + canh * Sin(ang + PI))

            Dim btr As BlockTableRecord = tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite)
            Dim hinhVuong As Polyline = New Polyline()
            hinhVuong.SetDatabaseDefaults()
            hinhVuong.AddVertexAt(0, New Point2d(pt1.X, pt1.Y), 0, 0, 0)
            hinhVuong.AddVertexAt(1, New Point2d(pt2.X, pt2.Y), 0, 0, 0)
            hinhVuong.AddVertexAt(2, pt3, 0, 0, 0)
            hinhVuong.AddVertexAt(3, pt4, 0, 0, 0)
            hinhVuong.Closed = True
            hinhVuong.ColorIndex = 2
            hinhVuong.Elevation = pt1.Z
            btr.AppendEntity(hinhVuong)
            tr.AddNewlyCreatedDBObject(hinhVuong, True)
            tr.Commit()
        End Using

    End Sub

    <CommandMethod("hinhVuong3")> _
    Public Sub hinhVuong3()
        Dim doc As Document = Application.DocumentManager.MdiActiveDocument
        Dim ed As Editor = doc.Editor
        Dim db As Database = doc.Database

        Dim ppo As PromptPointOptions = New PromptPointOptions("")
        ppo.Message = vbLf & "Chọn đỉnh thứ nhất của hình vuông:  "
        Dim ppr As PromptPointResult = ed.GetPoint(ppo)
        If ppr.Status <> PromptStatus.OK Then
            Return
        End If
        Dim pt1 As Point3d = ppr.Value

        ppo.Message = vbLf & "Chọn đỉnh đối diện của hình vuông:  "
        ppo.UseBasePoint = True
        ppo.BasePoint = pt1
        ppo.UseDashedLine = True
        ppr = ed.GetPoint(ppo)
        If ppr.Status <> PromptStatus.OK Then
            Return
        End If

        Using tr As Transaction = db.TransactionManager.StartTransaction()
            Dim pt3 As Point3d = ppr.Value
            Dim canh As Double = pt1.DistanceTo(pt3) * Sqrt(2) / 2
            Dim ang As Double = pt1.GetVectorTo(pt3).AngleOnPlane(New Plane(Point3d.Origin, Vector3d.ZAxis))
            Dim pt2, pt4 As Point2d
            pt2 = New Point2d(pt1.X + canh * Cos(ang - PI / 4), pt1.Y + canh * Sin(ang - PI / 4))
            pt4 = New Point2d(pt1.X + canh * Cos(ang + PI / 4), pt1.Y + canh * Sin(ang + PI / 4))

            Dim btr As BlockTableRecord = tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite)
            Dim hinhVuong As Polyline = New Polyline()
            hinhVuong.SetDatabaseDefaults()
            hinhVuong.AddVertexAt(0, New Point2d(pt1.X, pt1.Y), 0, 0, 0)
            hinhVuong.AddVertexAt(1, pt2, 0, 0, 0)
            hinhVuong.AddVertexAt(2, New Point2d(pt3.X, pt3.Y), 0, 0, 0)
            hinhVuong.AddVertexAt(3, pt4, 0, 0, 0)
            hinhVuong.Closed = True
            hinhVuong.ColorIndex = 3
            hinhVuong.Elevation = pt1.Z
            btr.AppendEntity(hinhVuong)
            tr.AddNewlyCreatedDBObject(hinhVuong, True)
            tr.Commit()
        End Using

    End Sub

    <CommandMethod("hinhVuong4")> _
    Public Sub hinhVuong4()
        Dim doc As Document = Application.DocumentManager.MdiActiveDocument
        Dim ed As Editor = doc.Editor
        Dim db As Database = doc.Database

        Dim ppo As PromptPointOptions = New PromptPointOptions("")
        ppo.Message = vbLf & "Chọn tâm của hình vuông:  "
        Dim ppr As PromptPointResult = ed.GetPoint(ppo)
        If ppr.Status <> PromptStatus.OK Then
            Return
        End If
        Dim center As Point3d = ppr.Value

        ppo.Message = vbLf & "Chọn đỉnh bất kì của hình vuông:  "
        ppo.UseBasePoint = True
        ppo.BasePoint = center
        ppo.UseDashedLine = True
        ppr = ed.GetPoint(ppo)
        If ppr.Status <> PromptStatus.OK Then
            Return
        End If

        Using tr As Transaction = db.TransactionManager.StartTransaction()
            Dim pt1 As Point3d = ppr.Value
            Dim canh As Double = center.DistanceTo(pt1)
            Dim ang As Double = pt1.GetVectorTo(center).AngleOnPlane(New Plane(Point3d.Origin, Vector3d.ZAxis))
            Dim pt2, pt3, pt4 As Point2d
            pt2 = New Point2d(center.X + canh * Cos(ang - PI / 2), center.Y + canh * Sin(ang - PI / 2))
            pt3 = New Point2d(center.X + canh * Cos(ang), center.Y + canh * Sin(ang))
            pt4 = New Point2d(center.X + canh * Cos(ang - 3 * PI / 2), center.Y + canh * Sin(ang - 3 * PI / 2))

            Dim btr As BlockTableRecord = tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite)
            Dim hinhVuong As Polyline = New Polyline()
            hinhVuong.SetDatabaseDefaults()
            hinhVuong.AddVertexAt(0, New Point2d(pt1.X, pt1.Y), 0, 0, 0)
            hinhVuong.AddVertexAt(1, pt2, 0, 0, 0)
            hinhVuong.AddVertexAt(2, pt3, 0, 0, 0)
            hinhVuong.AddVertexAt(3, pt4, 0, 0, 0)
            hinhVuong.Closed = True
            hinhVuong.ColorIndex = 4
            hinhVuong.Elevation = pt1.Z
            btr.AppendEntity(hinhVuong)
            tr.AddNewlyCreatedDBObject(hinhVuong, True)
            tr.Commit()
        End Using

    End Sub

End Class

 

  • 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

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
Đăng nhập để thực hiện theo  

×