Hallo User.
Ich habe das Problem, daß bei erstmaligem Aufruf folgender Programmzeilen etwas anderes gezeichnet wird, als bei den darauffolgenden Aufrufen. Ich kann mir allerdings nicht erklären woran das liegt. Vielleicht hat jemand von euch eine Idee, wo der Fehler zu suchen ist.
Das Progrämmelchen erzeugt eine Polylinie nach Angabe von Punkt, Gegenpunkt und Seite und soll eine Tür mit Anschlag andeuten.
------------------------------------------
Public Sub TürZeichnen()
Dim Ausrichtung As Double, Öffnungsseite As Double, AnschlagPunkt As Variant, Gegenpunkt As Variant
Dim breite As Double, Drehwinkel As Double, w1 As Double, w2 As Double, w3 As Double
Dim PLPoints(5) As Double, PlineObj As AcadLWPolyline, ZWPunkt As Variant
Dim Util As AcadUtility, BulgeWert As Double, PLIndex As Integer
Set Util = ThisDrawing.Utility
On Error Resume Next
AnschlagPunkt = Util.GetPoint(, "Geben Sie den 1. Punkt der Tür an (Türanschlag): ")
If IsEmpty(AnschlagPunkt) Then Exit Sub
Gegenpunkt = Util.GetPoint(AnschlagPunkt, "Gegenüberliegenden Punkt zeigen: ")
If IsEmpty(Gegenpunkt) Then Exit Sub
Öffnungsseite = Util.GetAngle(AnschlagPunkt, "Raum zeigen...")
If IsEmpty(Öffnungsseite) Then Exit Sub
breite = Distance(AnschlagPunkt, Gegenpunkt)
Ausrichtung = Util.AngleFromXAxis(AnschlagPunkt, Gegenpunkt)
w1 = Rad2Deg(Ausrichtung)
w2 = Rad2Deg(Öffnungsseite)
If w2 > w1 And w2 - w1 < 180 Or w1 - 180 > w2 Then
w3 = w1 + 90
PLIndex = 0
PLPoints(0) = Gegenpunkt(0): PLPoints(1) = Gegenpunkt(1)
ZWPunkt = Util.PolarPoint(AnschlagPunkt, Deg2Rad(w3), breite)
PLPoints(2) = ZWPunkt(0): PLPoints(3) = ZWPunkt(1)
PLPoints(4) = AnschlagPunkt(0): PLPoints(5) = AnschlagPunkt(1)
Else
w3 = w1 - 90
PLIndex = 1
PLPoints(0) = AnschlagPunkt(0): PLPoints(1) = AnschlagPunkt(1)
ZWPunkt = Util.PolarPoint(AnschlagPunkt, Deg2Rad(w3), breite)
PLPoints(2) = ZWPunkt(0): PLPoints(3) = ZWPunkt(1)
PLPoints(4) = Gegenpunkt(0): PLPoints(5) = Gegenpunkt(1)
End If
BulgeWert = Sqr(2) - 1
Debug.Print "w1 w2 w3 BulgeWert"
Debug.Print Format(w1, "000") & " " & Format(w2, "000") & " " & Format(w3, "000") & " " & BulgeWert
Debug.Print "-----------------------------------"
Set PlineObj = ThisDrawing.Modelspace.AddLightWeightPolyline(PLPoints)
PlineObj.SetBulge PLIndex, BulgeWert
On Error GoTo 0
End Sub
Function Rad2Deg(Rad As Double) As Double
Rad2Deg = Rad * 180 / (4 * Atn(1))
End Function
Function Deg2Rad(Deg As Double) As Double
Deg2Rad = Deg / 180 * (4 * Atn(1))
End Function
------------------------------------
Viele Grüße
TomiProg
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP