Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
11 replies to this topic

#1 hoathuongphuoc

hoathuongphuoc

    biết lệnh erase

  • Members
  • PipPipPip
  • 102 Bài viết
Điểm đánh giá: 9 (bình thường)

Đã gửi 04 December 2013 - 03:08 PM

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.


  • 0

#2 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 04 December 2013 - 06:40 PM

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ô....... ;) 


  • 0

#3 hoathuongphuoc

hoathuongphuoc

    biết lệnh erase

  • Members
  • PipPipPip
  • 102 Bài viết
Điểm đánh giá: 9 (bình thường)

Đã gửi 04 December 2013 - 08:52 PM

Đ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.


  • 0

#4 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 04 December 2013 - 09:15 PM

Đ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?  


  • 2

#5 Hoan1111

Hoan1111

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2587 Bài viết
Điểm đánh giá: 692 (tốt)

Đã gửi 04 December 2013 - 10:15 PM

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>:


  • 0

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...

 

 


#6 hoathuongphuoc

hoathuongphuoc

    biết lệnh erase

  • Members
  • PipPipPip
  • 102 Bài viết
Điểm đánh giá: 9 (bình thường)

Đã gửi 05 December 2013 - 01:22 PM

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.c...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.


  • 0

#7 hoathuongphuoc

hoathuongphuoc

    biết lệnh erase

  • Members
  • PipPipPip
  • 102 Bài viết
Điểm đánh giá: 9 (bình thường)

Đã gửi 08 December 2013 - 09:47 PM

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.


  • 0

#8 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 08 December 2013 - 09:55 PM

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.c...p-kin-tam-giac/


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#9 hoathuongphuoc

hoathuongphuoc

    biết lệnh erase

  • Members
  • PipPipPip
  • 102 Bài viết
Điểm đánh giá: 9 (bình thường)

Đã gửi 09 December 2013 - 08:53 AM

Mình lập trình bằng vb.net để làm việc này bạn ơi. huhu.


  • 0

#10 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 09 December 2013 - 09:04 AM

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.


  • 0

#11 hoathuongphuoc

hoathuongphuoc

    biết lệnh erase

  • Members
  • PipPipPip
  • 102 Bài viết
Điểm đánh giá: 9 (bình thường)

Đã gửi 09 December 2013 - 09:56 AM

Thank bạn gia_bach. Mình sẽ chú ý hơn.


  • 0

#12 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 16 December 2013 - 10:29 AM

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

 


  • 1