Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Globale Koordinate

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:  Globale Koordinate (1967 mal gelesen)
FiRePhoeniX
Mitglied
Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau


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

Beiträge: 127
Registriert: 22.04.2007

AutoCad 2007

erstellt am: 11. Dez. 2008 15:47    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 Forum,
ich muss euch heute noch mal stören. Kämpfe schon seit ungefähr einer stunde an dem Problem und ich kriege es nicht hin. Erst mal vorab ich bin noch Anfänger.
So, zu Problem:
Hab zwei Buttons erstellt.
In dem ersten wird der Einfügepunkt abgefragt. Mit dem Befehl:

einfuegepk = ThisDrawing.Utility.GetPoint(, "Nullpunkt wählen")

Daraus mach ich mir eine Variable:

Dim TXEinfüge(0 To 2) As Double

TXEinfüge(0) = einfuegepk(0)
TXEinfüge(1) = einfuegepk(1)
TXEinfüge(2) = 0

So, wenn man jetzt den anderen Button betätigt. Soll an dem Punkt ein Text erscheinen.
Das mach ich mit dem Befehl:

Dim Text As AcadText
Dim TXhoehe As Double
Dim TXinhalt As String

Set Text = ThisDrawing.ModelSpace.AddText(TXinhalt, TXEinfüge, TXhoehe)

Dies geht ja nicht weil das zwei unterschiedliche Module sind.
Hab dann gelesen das man vor ein Module den befehl Public(variable) setzen soll um eine Globale Variable zu erhalten. Dies geht auch mit allen Variablen außer mit der Einfügevariable wo die Koordinaten gespeichert sind. Hab ich was falsch gemacht oder bin ich einfach nur Blöd ^^.
Könntet ihr mir vielleicht erklären was ich falsch gemacht habe.
Ich danke für jede antwort.

Mit freundlichen Grüßen

Firephoenix

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 11. Dez. 2008 16: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 Nur für FiRePhoeniX 10 Unities + Antwort hilfreich

Hallo
 
Zitat:
Original erstellt von FiRePhoeniX:
Dies geht ja nicht weil das zwei unterschiedliche Module sind.
Hab dann gelesen das man vor ein Module den befehl Public(variable) setzen soll um eine Globale Variable zu erhalten. Dies geht auch mit allen Variablen außer mit der Einfügevariable wo die Koordinaten gespeichert sind. Hab ich was falsch gemacht oder bin ich

Du musst dir erst mal darüber im klaren sein wie dein Projekt aufgebaut ist.
Grundsätzlich solltest du immer mit der "Option explict" arbeiten.
Damit gibts du an, das jede Variable vor dem Gebrauch deklariert werden muss.

Eine Deklaration kann zum Beispiel mit DIM oder PUBLIC erfolgen. Das hängt davon ab wo du das machst und was du erreichen willst.

Wenn du in deinem Projekt mehrere Module hast geht es wie folgt.

Code:
'' Modul 1
'' gilt innerhalb des Moduls und steht vor der ersten Funktion
DIM Modulvariable as string

'' gilt im ganzen Projekt also in allen Funktionen und Prozeduren
Public ProjektVariable as String

' Diese Funktion kann nur innerhalb des Moduls verwendet werden
Function GibWas (EIngabe as String) as boolean
   ' Gilt nur in der Funktion / Sub
   Dim ProzedurVariable as String
End function

' Diese Function kann aus allen Modulen verwendet werden
Public Function GibWas2 (EIngabe as String) as boolean
   ' Gilt nur in der Funktion / Sub
   Dim ProzedurVariable as String
End Function



Ich würde aber mit den globalen Variablen (Public) sehr vorsichtig umgehen. Dadurch entstehen sehr schnell Fehler wenn du diese aus Versehen irgendwo änderst. Ratsam ist, dass du an der Namensgebung sehen kannst ob die Variable/Funktion global oder lokal ist.

Sieh auch mal http://ww3.cad.de/foren/ubb/Forum259/HTML/001059.shtml#000003

Wilfried Stelberg


------------------
Warum lisp'eln wenn's auch anders geht. 
www.ib-stelberg.de

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

FiRePhoeniX
Mitglied
Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau


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

Beiträge: 127
Registriert: 22.04.2007

erstellt am: 12. Dez. 2008 08:52    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

Erst mal danke Stelli1,
Hab einfach vergessen die variable als Double zu definieren. Jetzt geht’s danke.

mfg

FiRePhoenix

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

FiRePhoeniX
Mitglied
Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau


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

Beiträge: 127
Registriert: 22.04.2007

AutoCad 2007

erstellt am: 15. Dez. 2008 13:15    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 Forum,
Ich hab mich zu früh gefreut. Hab es jetzt öfter getestet und musste feststellen das er die Globale variable nicht anerkennt.
Hab eine variable mit dem Befehl:

Public TXEinfüge As Double

erstellt. So jetzt klickt man auf eine Button wo man den Einfügepunkt bestimmen kann.
Mit dem befehl :

einfuegepk = ThisDrawing.Utility.GetPoint(, "Nullpunkt wählen")

Jetzt möchte ich dies Koordinaten in meine Globale variable speichern.
Dies geht aber nicht. 
Hab es dann mal ohne Globale veriable versucht. Dann geht es.

Dim TXEinfüge(0 To 2) As Double
 
Me.Hide
einfuegepk = ThisDrawing.Utility.GetPoint(, "Nullpunkt wählen")
TXEinfüge(0) = einfuegepk(0)
TXEinfüge(1) = einfuegepk(1)
TXEinfüge(2) = 0

Mit dem befehl dim XXXX (0 to 2) as Double geht es.
Ich kann aber keine feste länge in die Globale Variable stellen.

Kann mir einer vielleicht helfen.

Danke im voraus.

Firephoenix

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


Ex-Mitglied

erstellt am: 15. Dez. 2008 13:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

grundsätzlich kannst Du globale wie lokale Variable mit Arraygrenzen definieren, nur beim Zuweisen muss man ein wenig vorsichtig sein.

Du kannst Deine Variable statt mit Double auch mit Objekttyp 'Variant' deklarieren

Und in Deinem Beispiel führt Du ganz oben an:

Code:
Public TXEinfüge As Double
und wenn mal eine Variable global deklariert ist, geht (wenn nicht Typ Variant) neu-deklarieren/überschreiben nicht mehr (ohne Gewalt). Vielleicht hast Du da aber nur einen Schreibfehler und es sollte heissen:
Code:
Public TXEinfüge(0 to 2) As Double

Und noch was: keine Variablennamen mit Umlauten/Sonderzeichen!!!!

- alfred -

FiRePhoeniX
Mitglied
Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau


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

Beiträge: 127
Registriert: 22.04.2007

erstellt am: 15. Dez. 2008 13:32    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


Bild2.jpg

 
Alfred erst mal danke für deine schnelle Antwort.
Das hab ich auch schon versucht kommt aber beim Testen ein Fehler.

Im anhang ist ein Bild vom Fehler.

mfg

Firephoenix

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


Ex-Mitglied

erstellt am: 15. Dez. 2008 13:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

dann deklariere die Variable mit 'Variant' (sorry, vb6 ist schon eine Zeit her, ich dachte schon, dass das funkt)

Code:
Public TXEinfüge As Variant

Zugreifen kannst Du dann (nach Zuweisung) als wäre es ein Array (ist ja auch ein Array)

Code:
TXEinfüge = ThisDrawing.Utility.GetPoint(, "Nullpunkt wählen")
'und es verhält sich wie ein Array, z.b.
X=TXEinfüge(0)
Y=TXEinfüge(1)

- alfred -

FiRePhoeniX
Mitglied
Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau


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

Beiträge: 127
Registriert: 22.04.2007

erstellt am: 15. Dez. 2008 14:36    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

Danke noch mal alfred,
hab es hin bekommen. Hab es ein bisschen  verändert. Hab 3 neuen Variablen Global gestellt.

  Public XwertTX As Double
  Public YwertTX As Double
  Public ZwertTX As Double

Dann bei starten des anderen Moduls. Einfach zusammen gesetzt

        Dim TXeinfuege(0 To 2) As Double

      TXeinfuege(0) = XwertTX
      TXeinfuege(1) = YwertTX
      TXeinfuege(2) = ZwertTX.

Und so geht jetzt. Danke noch mal.

Mit freundlichen Grüßen

Firephoenix

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



Anzeige:Infos zum Werbeplatz >>

pitCAD Ultimate Elektro Einzelplatz CAD APP für TGA, Elektro, Facility Management

Vereint die langjährige Erfahrung von pit-cup im Bereich der Gebäudetechnikplanung und des Facility Management zu einem durchgängigen 2D/3D CAD/BIM Planungswerkzeug, über den gesamten Lebenszyklus einer Immobilie.

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 15. Dez. 2008 18:36    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 FiRePhoeniX 10 Unities + Antwort hilfreich

Hallo,

du darfst(kannst) in keiner Objektklasse eine Public Variable deklarieren. Dazu zählz auch ein Formular. Für die Deklaration musst du eine Code Modul hinzufügen.

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

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