Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Probleme beim Errechnen einer Koordinate unter VBA

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
Autor Thema:  Probleme beim Errechnen einer Koordinate unter VBA (1187 mal gelesen)
The VIP
Mitglied
Technischer Zeichner


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

Beiträge: 170
Registriert: 06.09.2002

AutoCAD Mechanical 6 unter Windows XP

erstellt am: 11. Dez. 2003 17:09    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


Kreis.zip

 
Ich kenne mich mit Excel-VBA und Excel-Formeln sehr gut aus. AutoCAD VBA mache ich noch nicht so lange.

Ich stehe vor dem Problem, dass ich über ein VBA-Makro eine Linie zeichnen will. Die Linie hat einen Start-Koordinatenpunkt der über einen Winkel (fix) und einen Kreisdurchmesser (variabel) bestimmt wird und diesen Koordinatenpunkt bekomme ich nicht errechnet (in VBA!). 

Es liegt aber nicht an fehlenden mathematischem Wissen (denn ich habe die Koordinate bereits auf dem Papier und in einer Excel-Formel auf die Kommastelle genau errechnet) sondern an der VBA-Sprache im AutoCAD 2002. Ich weiß nicht wie die Befehlszeilen heißen müssen. Naja, im Grunde weiß ich das schon (BOGENMASS = RADIANS), aber ich bekomme verschiedene Fehlermeldungen die sagen, dass z.B. RADIANS oder ARCTAN etc. unbekannte Namen seien (ich habe nämlich nach der Meldung, dass RADIANS unbekannt wäre, verschiedene andere Wege versucht - bin bei allen gescheitert).

Kann mir jemand sagen wie die Befehlszeilen heißen die ich brauche um wenigstens eine der weißen Linien in der Zeichnung zu zeichnen?

Ich gebe hier mal meinen Tipp ab:

Code:

1.) WinkelDachrand = funPI * (RADIUS + 45) * 2 / 360 * 10
   
2.) Set LINIE = AddLineEx(Point3D(Sin(WinkelDachrand * (RADIUS + 45)), 0), Point3D(Sin(WinkelDachrand * (RADIUS + 45)), 200))

Wie gesagt: Auf dem Papier kommt das richtige Ergebnis raus.

funPI = erzeugt mir den Wert 3,1415926... (hab ich hier aus dem Forum  )
RADIUS = Wert der vom Benutzer weiter vorne eingegeben wird (i.d.R. 1000 oder 2000 etc)

Wenn ich beim Makro kurz zwischenstoppe, dann sehe ich tatsächlich den Wert 182,38... in der Variablen "WinkelDachrand". Denn 182,38... ist das BOGENMASS welches ja für SINUS in der zweiten Zeile gebaraucht wird (hier darf ich ja nicht den Winkel 10 angeben sondern die Strecke!)

zu 1.) Dies ist einfachste Mathematik: PI * D und dann / 360 * 10 -> Ergebnis: BOGENMASS

zu 2.) auch hier: im Grunde ganz einfach -> Pythagoras.

Trotzdem verzweifle ich da die Linie die bei mir gezeichnet wird immer ganz dich im Zentrum ist und nicht auf 181,...   
Was mache ich falsch?

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

The VIP
Mitglied
Technischer Zeichner


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

Beiträge: 170
Registriert: 06.09.2002

AutoCAD Mechanical 6 unter Windows XP

erstellt am: 11. Dez. 2003 17:16    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

Vielleicht noch eine kurze Ergänzung:

Die Idee war, über eine Do Loop / While Funktion und einem ZÄHLER, den Schritt mit dem Zeichnen der weißen Linie 8 mal zu wiederholen und jedesmal den Winkel in der Pythagoras-Formel (die ja nicht funktioniert) um 10° zu erhöhen.
Deshalb reicht es im Prinzip, wenn die erste Linie funktioniert, denn dann gehen auch die anderen.

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

BloodyMess
Mitglied
Applicationingenieur


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

Beiträge: 604
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 12. Dez. 2003 08:05    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 The VIP 10 Unities + Antwort hilfreich

Hallo VIP,

versteh zwar nicht so recht, was Du da vor hast, aber warum versuchst Du das nicht zeichnerisch zu lösen?
Leg doch einfach den Mittelpunkt des Kreises in 0,0 und ermittle dir deine Linien, welche vom Kreis ausgehend in 0,0 und auf dem Layer 3 liegen.

Code:

Function start()

Dim Object As AcadEntity
Dim ACLine As AcadLine
Dim startPoint As Variant


For Each Object In ThisDrawing.ModelSpace
  If Object.ObjectName = "AcDbLine" And Object.Layer = 3 Then
    Set ACLine = Object
    startPoint = ACLine.startPoint
        If InStr(startPoint(1), "E") <> 0 Then
            Debug.Print Object.ObjectName
        End If
       
  End If
Next Object

End Function


Von diesen bestimmst Du dir jetzt noch den Endpunkt.

Nun schreibst Du dir eine Funktion Geradenschnitt, legst vom Endpunkt einen erdachten Punkt aus 10 Einheiten nach unten und rechnest dir die Schnittpunkte mit den beiden Linien aus und hast dann den Anfangs- und Endpunkt deiner weißen Linie. Noch zeichnen und fertig.

Oder hab ich da jetzt etwas übersehen?

Gruß TP

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 12. Dez. 2003 08:56    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 The VIP 10 Unities + Antwort hilfreich

meine vermutung !

mit VBA arbeite ich nicht so oft. kenn aber das problem aus lisp zwischen bogenmass und DezimalGraden

die Lispbefehle z.B.: POLAR arbeiten mit bogenmass

"Wenn ich beim Makro kurz zwischenstoppe, dann sehe ich tatsächlich den Wert 182,38... in der Variablen "WinkelDachrand".
also das sind eindeutig dezimalgrade, mit dem arbeitest du dann mit SIN weiter, SIN verlangt aber Bogenmass

WIbogen = WIgrad * PI / 180
WIgrad = WIbogen * 180 / PI

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

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 12. Dez. 2003 09:05    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 The VIP 10 Unities + Antwort hilfreich

ich versteh die zeile schon nicht

Dies ist einfachste Mathematik: PI * D und dann / 360 * 10 -> Ergebnis: BOGENMASS

D * PI  = Umfang eines Kreises mit Durchmesser D

/360 ergibt die sehnenlänge des kreises mit sehnenwinkel = 1°

* 10 ?????

das ergebnis liegt irgenwo bei 182.xxx  was ist das für ein Wert
auf jedenfall kein winkel im bogenmass
(die sind 0° = 0 , 90° = PI/2 , 180° = PI ,270° = 3*pi/2 , 360° 2*PI)

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

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

The VIP
Mitglied
Technischer Zeichner


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

Beiträge: 170
Registriert: 06.09.2002

AutoCAD Mechanical 6 unter Windows XP

erstellt am: 12. Dez. 2003 09:16    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

Doch, zeichnerisch stimmt dies auch: Die "Abwicklung/Strecke am Kreis" im Bereich von 10° sind 182.xx mm
Ich will ja nicht die Strecke von 1° sondern von 10° -> deshalb hab ich nochmal mit 10 multipliziert.

Und die "Abwicklung/Strecke am Kreis" brauche ich um sie unter VBA mit SIN/COS oder TAN verarbeiten zu können.

[Diese Nachricht wurde von The VIP am 12. Dez. 2003 editiert.]

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 12. Dez. 2003 09:21    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 The VIP 10 Unities + Antwort hilfreich

jetzt habe ich erst deine zeichnung gesehen
probier mal folgendes

funpi = 3.141593  ' zum testen
Radius = 1000

For i = 0 To 90 Step 10
  wert = Sin(i * funpi / 180) * (Radius + 45)  ' warum eigentlich raius +45 ?? na egal
Next


jetzt kommt nacheinander die werte

0
181,46
357,41
522,50
671,71
800,51
904,99
981,97
1029,12
1044,99

raus, das ins laut deiner zeichnung die gesucheten werte
die dann in der zeichnung richtig zu positionieren ist dann deine sache

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

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 12. Dez. 2003 09:44    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 The VIP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von The VIP:
Doch, zeichnerisch stimmt dies auch: Die "Abwicklung/Strecke am Kreis" im Bereich von 10° sind 182.xx mm
Ich will ja nicht die Strecke von 1° sondern von 10° -> deshalb hab ich nochmal mit 10 multipliziert.

Und die "Abwicklung/Strecke am Kreis" brauche ich um sie unter VBA mit SIN/COS oder TAN verarbeiten zu können.

[Diese Nachricht wurde von The VIP am 12. Dez. 2003 editiert.]


ja schon , aber was willst denn mit der abwicklung von den 10°
um mit SIN,COS,TAN weiterzurechnen
die funktionen SIN,COS verlangen winkel im bogenmass, blöde bezeichnung in der hilfe, eigentlich Winkel in radianten

deine gesuchte strecke rechnet sich D * SIN(10°)
wobei die 10° mit * PI/180 in radianten umgerechnet werden muss

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

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 12. Dez. 2003 09:49    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 The VIP 10 Unities + Antwort hilfreich

noch ne frage was hat der Pythagoras mit sin cos zu tun ??

Pythagoras sagt aus, dass bei einem rechtwinkeligen dreieck

a² + b² = c² ist und fertig

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

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

The VIP
Mitglied
Technischer Zeichner


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

Beiträge: 170
Registriert: 06.09.2002

AutoCAD Mechanical 6 unter Windows XP

erstellt am: 12. Dez. 2003 15:30    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

Vielleicht habe ich mich etwas falsch ausgedrückt.
Ich verwende natürlich SIN / COS und TAN + Pythagoras.
Da alles mit einem rechtwinkeligen Dreieck zu tun hat, habe ich das in einen Topf geworfen...

1000 + 45 weil 45 eine Konstante bei unseren zu zeichnenden Produkten ist...

Dein Beispiel funktioniert. Danke.

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)2023 CAD.de | Impressum | Datenschutz