Đến nội dung


Hình ảnh
- - - - -

làm sao để lấy toạ độ của đối tượng ofset line


  • Please log in to reply
5 replies to this topic

#1 huunhantvxdts

huunhantvxdts

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 366 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 04 August 2010 - 02:21 PM

giúp toi với làm sao để lấy toạ độ của đối tượng ofset line (endpoint và startpoin)
chuong trinh cua toi nhu sau

Option Explicit
Sub veline()
Dim line As AcadLine
Dim diemdau As Variant
Dim diemcuoi As Variant
diemdau = ThisDrawing.Utility.GetPoint(, "nhap vao diem dau")
diemcuoi = ThisDrawing.Utility.GetPoint(diemdau, "Nhap diem tiep theo")
Set line = ThisDrawing.ModelSpace.AddLine(diemdau, diemcuoi)
line.Update
Dim line1 As Variant
line1 = line.Offset(1)
line1(0).color = 3
MsgBox (line1(0).EndPoint(0))
End Sub
  • 0

#2 ks_chang

ks_chang

    biết vẽ line

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

Đã gửi 04 August 2010 - 02:40 PM

Bạn có thể lấy giá trị góc của Line do bạn tạo ra:
tan = (pt1(1) - pt2(1)) / (pt1(0) - pt2(0))
Sau đó cộng(hoặc trừ) tọa độ pt3, pt4 (là 2 điểm offset) với giá trị:
a*Cos(Atn(tan)), a*Sin(Atn(tan))
  • 1

#3 phantuhuong

phantuhuong

    biết dimstyle

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

Đã gửi 04 August 2010 - 05:29 PM

giúp toi với làm sao để lấy toạ độ của đối tượng ofset line (endpoint và startpoin)
chuong trinh cua toi nhu sau

Option Explicit
Sub veline()
Dim line As AcadLine
Dim diemdau As Variant
Dim diemcuoi As Variant
diemdau = ThisDrawing.Utility.GetPoint(, "nhap vao diem dau")
diemcuoi = ThisDrawing.Utility.GetPoint(diemdau, "Nhap diem tiep theo")
Set line = ThisDrawing.ModelSpace.AddLine(diemdau, diemcuoi)
line.Update
Dim line1 As Variant
line1 = line.Offset(1)
line1(0).color = 3
MsgBox (line1(0).EndPoint(0))
End Sub


Bài viết này vi phạm nội quy nhưng là thành viên mới nên tạm bỏ qua. Bạn tham khảo code sau nhé:

Sub Example_Offset()
Dim lineObj As AcadLine
Dim line1Obj As Variant
Dim line2Obj As AcadLine

Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double

' Create a new line reference
startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
endPoint(0) = 2: endPoint(1) = 2: endPoint(2) = 0
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
line1Obj = lineObj.Offset(1)

Set line2Obj = ThisDrawing.ModelSpace.AddLine(lineObj.startPoint, line1Obj(0).endPoint)

Set line2Obj = Nothing
Set lineObj = Nothing
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!


#4 huunhantvxdts

huunhantvxdts

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 366 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 05 August 2010 - 07:41 AM

Bài viết này vi phạm nội quy nhưng là thành viên mới nên tạm bỏ qua. Bạn tham khảo code sau nhé:

Sub Example_Offset()
Dim lineObj As AcadLine
Dim line1Obj As Variant
Dim line2Obj As AcadLine

Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double

' Create a new line reference
startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
endPoint(0) = 2: endPoint(1) = 2: endPoint(2) = 0
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
line1Obj = lineObj.Offset(1)

Set line2Obj = ThisDrawing.ModelSpace.AddLine(lineObj.startPoint, line1Obj(0).endPoint)

Set line2Obj = Nothing
Set lineObj = Nothing
End Sub


cám ơn bác đã chỉ dùm để em sữa lại code xem sao
Bác có code nào hay share cho em với

:(
  • 0

#5 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 05 August 2010 - 09:33 AM

giúp toi với làm sao để lấy toạ độ của đối tượng ofset line (endpoint và startpoin)
chuong trinh cua toi nhu sau
.......

Bạn thử đoạn code sau :
Sub Offset_Line()
Dim line As AcadLine
Dim staPt As Variant
Dim endPt As Variant
staPt = ThisDrawing.Utility.GetPoint(, "Nhap vao diem dau")
endPt = ThisDrawing.Utility.GetPoint(staPt, "Nhap diem tiep theo")
Set line = ThisDrawing.ModelSpace.AddLine(staPt, endPt)
line.Update

Dim line_Off As Variant
Dim dis As Double
dis = line.Length / 5
line_Off = line.Offset(dis)
line_Off(0).color = 3

Dim staPt_Off As Variant
Dim endPt_Off As Variant
staPt_Off = line_Off(0).startPoint
endPt_Off = line_Off(0).endPoint

MsgBox "Toa do cac diem cua Line goc : " & Chr(13) + Chr(10) & _
" - diem dau (X,Y,Z): " & staPt(0) & "; " & staPt(1) & "; " & staPt(2) & Chr(13) + Chr(10) & _
" - diem cuoi (X,Y,Z): " & endPt(0) & "; " & endPt(1) & "; " & endPt(2) & Chr(13) + Chr(10) + Chr(10) & _
"Toa do cac diem cua Line OFFSET : " & Chr(13) + Chr(10) & _
" - diem dau (X,Y,Z): " & staPt_Off(0) & "; " & staPt_Off(1) & "; " & staPt_Off(2) & Chr(13) + Chr(10) & _
" - diem cuoi (X,Y,Z): " & endPt_Off(0) & "; " & endPt_Off(1) & "; " & endPt_Off(2)
End Sub

  • 0

#6 huunhantvxdts

huunhantvxdts

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 366 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 05 August 2010 - 03:53 PM

Cái đó đúng với cái em muốn tìm, hay quá. hậu tạ sau sau
:(
  • 0