Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Frage zu Prgrammfehler

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
  
PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
Autor Thema:  Frage zu Prgrammfehler (750 mal gelesen)
TomiProg
Mitglied
Technischer Zeichner


Sehen Sie sich das Profil von TomiProg an!   Senden Sie eine Private Message an TomiProg  Schreiben Sie einen Gästebucheintrag für TomiProg

Beiträge: 51
Registriert: 29.04.2004

WinNT4.0(SP6) + AutoCAD 14.01, P3/400MHz(gääähn),256MB,Graphtec KD4620, ATI 3D Rage Pro(8MB)

erstellt am: 25. Feb. 2005 12:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

PG01
Mitglied



Sehen Sie sich das Profil von PG01 an!   Senden Sie eine Private Message an PG01  Schreiben Sie einen Gästebucheintrag für PG01

Beiträge: 22
Registriert: 08.03.2005

erstellt am: 08. Mrz. 2005 18:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für TomiProg 10 Unities + Antwort hilfreich

Hi TomiProg,

meiner Meinung nach fehlt die Funktion "Distance", die
doch wohl eine selbst programmierte sein soll.

Unten aufgeführt findest Du die Funktion, wie ich sie
aus Deinem Programm heraus verstehe.

Die Türen zeichnet Dein Programm dann (zumindest bei mir)
einwandfrei.

Wenn sie nicht selbst programmiert werden soll, hilft Dir
vielleicht die VBA-Funktion "GetDistance", siehe Hilfe in
VBA, weiter.

Grüße
PG


----------------------------------------------------

Function Distance(AP As Variant, GP As Variant)
  Dim x1, x2, y1, y2 As Double
  x1 = AP(0): y1 = AP(1)
  x2 = GP(0): y2 = GP(1)
  Distance = ((x2 - x1) ^ 2 + (y2 - y1) ^ 2) ^ (1 / 2)
End Function

------------------
GÜNTHER ENGINEERING
30519 Hannover

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz