Đến nội dung


Hình ảnh
- - - - -

Vẽ Line trên Form


  • Please log in to reply
6 replies to this topic

#1 ntluyen

ntluyen

    biết vẽ ellipse

  • Members
  • PipPip
  • 54 Bài viết
Điểm đánh giá: 19 (tàm tạm)

Đã gửi 09 February 2009 - 04:23 PM

Tôi đang cần vẽ một vài đoạn thẳng trên Form mà chưa biết cách thực hiện. Trong VB thì có hỗ trợ chỉ cần lệnh LINE
còn trong VBA thì tôi chưa tìm ra
Mong các bác chỉ giùm
  • 0

#2 phantuhuong

phantuhuong

    biết dimstyle

  • Moderator
  • PipPipPipPipPip
  • 383 Bài viết
Điểm đánh giá: 200 (khá)

Đã gửi 14 February 2009 - 11:59 AM

Tôi đang cần vẽ một vài đoạn thẳng trên Form mà chưa biết cách thực hiện. Trong VB thì có hỗ trợ chỉ cần lệnh LINE
còn trong VBA thì tôi chưa tìm ra
Mong các bác chỉ giùm


Đáng tiếc là VBA không hỗ trợ Tool này, bạn thử tìm kiếm trong tham chiếu Reference xem sao?
  • 0
Bồi dưỡng Excel & VBA cho các đơn vị ở Hà Nội và khu vực lân cận

Từng bước loại đồ Tàu ra khỏi cuộc sống!


#3 thao_tedi

thao_tedi

    biết zoom

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

Đã gửi 30 March 2009 - 02:08 PM

Em chào các bác.
Em thấy trong VBA help đây là ví dụ về vẽ line. Nhưng cái này chỉ có vẽ cho 2 điểm và dừng lại. Em không biết cách vẽ liên tiếp từ điểm thứ nhất đến điểm chọn thứ n thì sử dụng hàm for như thế nào. Các ví dụ của Autodesk thì toàn vẽ line qua 2 điểm có tọa độ cho trước (..chán). Bác nào biết làm ơn giúp em với.
Public Sub Line()
Dim lineObj As AcadLine
Dim startPoint As Variant
Dim endPoint As Variant
' Vẽ line qua 2 điểm được pick trên màn hình AutoCAD
startPoint = ThisDrawing.Utility.GetPoint(, "Enter a first point: ")
endPoint = ThisDrawing.Utility.GetPoint(, "Enter a second point: ")
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
End Sub
  • 0

#4 phantuhuong

phantuhuong

    biết dimstyle

  • Moderator
  • PipPipPipPipPip
  • 383 Bài viết
Điểm đánh giá: 200 (khá)

Đã gửi 06 April 2009 - 11:24 PM

Đáng tiếc là VBA không hỗ trợ Tool này, bạn thử tìm kiếm trong tham chiếu Reference xem sao?


Thực ra ta có thể dùng mẹo được vì đoạn thẳng có thể thể hiện là hình chữ nhật với 1 cạnh rất hẹp. Do vậy có thể sử dụng đối tượng khác và cho heigh thật nhỏ là được.
  • 0
Bồi dưỡng Excel & VBA cho các đơn vị ở Hà Nội và khu vực lân cận

Từng bước loại đồ Tàu ra khỏi cuộc sống!


#5 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 07 April 2009 - 01:56 AM

Ta có thể dùng hàm API của Windows cho form của VBA.
Dim dc As Long

Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, Optional lpPoint As Any = 0) As Long
Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long

Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long

Private Sub CommandButton1_Click()
LineTo dc, TextBox1.Text, TextBox2.Text
End Sub

Private Sub UserForm_Initialize()
dc = GetDC(FindWindow("", Me.Caption))
MoveToEx dc, 0, 0, 0
End Sub
file nguồn: http://www.cadviet.c...es/DrawLine.dvb
  • 0

#6 phantuhuong

phantuhuong

    biết dimstyle

  • Moderator
  • PipPipPipPipPip
  • 383 Bài viết
Điểm đánh giá: 200 (khá)

Đã gửi 12 April 2009 - 10:21 PM

Em chào các bác.
Em thấy trong VBA help đây là ví dụ về vẽ line. Nhưng cái này chỉ có vẽ cho 2 điểm và dừng lại. Em không biết cách vẽ liên tiếp từ điểm thứ nhất đến điểm chọn thứ n thì sử dụng hàm for như thế nào. Các ví dụ của Autodesk thì toàn vẽ line qua 2 điểm có tọa độ cho trước (..chán). Bác nào biết làm ơn giúp em với.
Public Sub Line()
Dim lineObj As AcadLine
Dim startPoint As Variant
Dim endPoint As Variant
' Vẽ line qua 2 điểm được pick trên màn hình AutoCAD
startPoint = ThisDrawing.Utility.GetPoint(, "Enter a first point: ")
endPoint = ThisDrawing.Utility.GetPoint(, "Enter a second point: ")
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
End Sub


Đoạn code này chắc thỏa mãn yêu cầu của bạn, chỉ thêm vòng lặp và phép gán:

Sub LineVBA()
Dim LineObj As AcadLine
Dim StartPoint As Variant
Dim EndPoint As Variant

On Error GoTo Thoat

StartPoint = ThisDrawing.Utility.GetPoint(, "Chon diem dau:")
Do
EndPoint = ThisDrawing.Utility.GetPoint(StartPoint, "Chon dem tiep theo:")
Set LineObj = ThisDrawing.ModelSpace.AddLine(StartPoint, EndPoint)
StartPoint = EndPoint
Loop

Set LineObj = Nothing
Thoat:
End Sub

  • 0
Bồi dưỡng Excel & VBA cho các đơn vị ở Hà Nội và khu vực lân cận

Từng bước loại đồ Tàu ra khỏi cuộc sống!


#7 sson

sson

    biết zoom

  • Members
  • Pip
  • 18 Bài viết
Điểm đánh giá: 11 (tàm tạm)

Đã gửi 23 June 2009 - 10:53 AM

Tôi đang cần vẽ một vài đoạn thẳng trên Form mà chưa biết cách thực hiện. Trong VB thì có hỗ trợ chỉ cần lệnh LINE
còn trong VBA thì tôi chưa tìm ra
Mong các bác chỉ giùm

Bạn hãy thử đoạn Code này đi không biết có phải ý bạn hỏi là vậy không.
Đây là một đoạn code của 1 button trên Form1:

Private Sub CommandButton1_Click()
Form1.Hide
Dim LineObj As AcadLine
Dim StartPoint As Variant
Dim EndPoint As Variant

On Error GoTo Thoat

StartPoint = ThisDrawing.Utility.GetPoint(, "Chon diem dau:")
Do
EndPoint = ThisDrawing.Utility.GetPoint(StartPoint, "Chon dem tiep theo:")
Set LineObj = ThisDrawing.ModelSpace.AddLine(StartPoint, EndPoint)
StartPoint = EndPoint
Loop

Set LineObj = Nothing
Thoat:
Form1.Show
End Sub
  • 0