Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  3D Objekt mit gleichmäßig verteilten Löchern

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:  3D Objekt mit gleichmäßig verteilten Löchern (2871 mal gelesen)
xTaker
Mitglied


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

Beiträge: 9
Registriert: 11.01.2015

erstellt am: 11. Jan. 2015 19:20    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


TunnelAcad.jpg

 
Guten Abend zusammen    ,

ich bin noch recht neu was den Umgang mit VBA betrifft und komme gerade nicht weiter.

Mein Ziel ist es ein VBA-Programm zu entwickeln, welches eine rechtwinklige 3D-Konstruktion eines Tunnels erstellt. Dabei sind die Maße frei wählbar.
Dieser Teil ist soweit abgeschlossen - damit bin ich zufrieden.

Nun geht es mir aber darum, dass man nach Bedarf (Option Buttons) runde/quadratische "Löcher" mit gleichmäßiger Anordnung einfügen kann. Dabei sollen die Anzahl, die Fläche sowie der Abstand vom Boden aus frei wählbar sein (siehe Anhang).

Habe zwei Klassen (Tunnel und Löcher) sowie das Formular erstellt und den entsprechenden Code für den Tunnel. Leider komme ich überhaupt nicht weiter; habe eben erst meine bisherigen Versuche wieder auf den Haufen geschmissen, da es zu unübersichtlich wurde und ohne Erfolg verlief.
Versuchte es mit einer If-Else-Schleife für die Optionen, habe aber nicht mal eine Öffnung gezeichnet bekommen. Geschweige denn eine Schleife für die gleichmäßige Verteilung (je nach Anzahl) der Löcher...

Hat vielleicht wer einen Rat/Denkanstoß? Vielen lieben Dank schon einmal!

LG Taker   

[Diese Nachricht wurde von xTaker am 11. Jan. 2015 editiert.]

[Diese Nachricht wurde von xTaker am 11. Jan. 2015 editiert.]

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 11. Jan. 2015 19:54    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 xTaker 10 Unities + Antwort hilfreich

Hallo xTaker,
Willkommen im Forum 

Arbeitest Du im 2D oder 3D Bereich? Zeichnest Du also Linien(2D) oder Flächen(3D)?
Im Prinzip müßtest Du Dir im 2D-Bereich die Mittelpunkte der "Löcher" im 3D-Bereich berechnen und die Zirkel in der entsprechenden Ebene zeichnen lassen.
Also ein Benutzerkoordinatensystem definieren und dann über TranslateCoordinates den Mittelpunkt dort bestimmen (Umrechnen vom Welt- ins Benutzerkoordinatensystem). Dann kannst Du den(die) Kreis(e) in dieser Ebene zeichnen.
3D wäre etwas komplizierter. Da müßte die "Stange" von der "Fläche" abgezogen werden, ist aber auch machbar bzw. programmierbar.

Hoffe das hilft ein wenig weiter.

Grüße
Klaus 

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

xTaker
Mitglied


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

Beiträge: 9
Registriert: 11.01.2015

erstellt am: 11. Jan. 2015 20:12    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 KlaK,

vielen Dank für die Begrüßung und die schnelle Antwort. 

Ich arbeite im 3D Bereich. Habe von vorherigen Programmierungen einige Hilffunktionen aufgestellt, die ich (hoffentlich?) hier verwenden könnte. In diesem Fall denke ich an drei dieser Funktionen:
1) Zylinder eichnen (für kreisförmige Löcher)
2) Quader zeichnen (für quadratische Löcher)
3) Differenz (Körper zwei, sprich gezeichnete Quader/Zylinder, vom Tunnel "abziehen")

Hier mal als Beispiel der Code für den Zylinder:

Code:
Public Function ZeichneZylinder(x As Double, y As Double, z As Double, hoehe As Double, Radius As Double) As Acad3DSolid
    Dim Punkt(0 To 2) As Double
    Punkt(0) = x
    Punkt(1) = y
    Punkt(2) = z + hoehe / 2
    Set ZeichneZylinder = ThisDrawing.ModelSpace.AddCylinder(Punkt, Radius, hoehe)
End Function

Mein größtes Problem (im Kopf) ist weiterhin die gleichmäßige Verteilung der Löcher je nach gewählter Anzahl. Dabei denke ich zwar ständig, dass es doch durch eine Zählschleife getan sein müsste, komme aber auf nichts, was womöglich einfach an fehlender Erfahrung liegt.

Zumal ich die Löcher ja erstmal zeichnen müsste. Einfaches Zeichnen würde mir zwar gelingen, versuche ich es aber mit einer If-Schleife, um die Optionen (keine, runde, quadratische Löcher) zu berücksichtigen, scheiter ich.

LG Taker 

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 11. Jan. 2015 20: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 Nur für xTaker 10 Unities + Antwort hilfreich

Warum hast Du denn die Zeichnung (Anhang) wieder gelöscht? Wäre für die vielen Mitleser, die morgen wieder online sind, sicherlich hilfreich.
Wenn ich das richtig verstehe geht es Dir um eine möglichst geschickte Programmierung der gleichmäßig verteilten Durchdringungen, was eigentlich recht einfach ist.
Zunächst würde ich da erst einmal den Anfangs- und Endpunkt der Wand verwenden und aus der Länge und Anzahl der Löcher die Lage der Mittelpunkte (Abstand vom Anfangspunkt bzw. Abstand untereinander) berechnen.
Dann kannst Du über eine For L = 1 to Anzahl - Next Schleife die Löcher berechnen und zeichnen lassen
In der Schleife kommt eine Select case Abfrage, die die benötigte Unterfunktion (rund, quadratisch) aufruft. Keine hast Du natürlich schon vorher abgefragt, da gibt es ja nichts zu tun.

Hoffe ich hab Deine Anfrage auch richtig verstanden.

Grüße
Klaus   


nachdem die Anlage wieder online ist noch eine Frage, die Du aber bestimmt schon gelöst hast:
Die Anzahl der Löcher muß ja in die Wand passen. Somit könnte es auch nötig werden mehrere Reihen von Löchern zu generieren. Bei einer gleichmäßigen verteilen kann es dabei zu unterschiedlichen Anzahlen der Löcher pro Reihe kommen, was die Programmierung zwar nicht unmöglich macht aber evtl. eine zweite For - Next Schleife erfordern würde.

[Diese Nachricht wurde von KlaK am 11. Jan. 2015 editiert.]

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

xTaker
Mitglied


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

Beiträge: 9
Registriert: 11.01.2015

erstellt am: 11. Jan. 2015 21:00    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

Habe den Anhang mal wieder angefügt - hatte daran gezweifelt, dass diese hilfreich ist. 
Vielen Dank ein weiteres mal für deine Antwort. Das klingt schon mal gut soweit - werde mich gleich ransetzen und versuchen, es weitesgehend umzusetzen. Dann melde ich mich nochmals!

LG Taker 

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 11. Jan. 2015 21:03    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 xTaker 10 Unities + Antwort hilfreich

Habe oben noch etwas ergänzt ...

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

xTaker
Mitglied


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

Beiträge: 9
Registriert: 11.01.2015

erstellt am: 12. Jan. 2015 02: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


tunnelkreislocher.jpg

 
So, vor der Nachtruhe schreib ich doch nochmal fix:

Habe die Konstruktion mitsamt Löchern mit deiner Hilfe wie gewünscht hinbekommen, insofern nicht der Fall deiner Ergänzung eintrifft.
Darüber werde ich mir morgen mal Gedanken machen, da ist es aktuell zu spät für, zumal ich nichtmal einen Ansatz habe. Aber alles zu seiner Zeit.

Was ich mich aus (überwiegend optischen) Gründen noch Frage: Ist es möglich, das Acad3dSolid-Objekt zu färben? Sprich im einfachsten Falle das Volumen, ansonsten die Flächen. Fehlt mir ein einfacher Befehl, oder ist es etwas aufwendiger/gar nicht möglich? Ich versuchte es testweise einfach mal mit Objekt.color=[...], allerdings wurden damit nur die Linien gefärbt.  

LG Taker  

[Diese Nachricht wurde von xTaker am 12. Jan. 2015 editiert.]

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil
Inventor AIP 4-11, 2008 -2022
Win 10

erstellt am: 12. Jan. 2015 08: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 Nur für xTaker 10 Unities + Antwort hilfreich

Nicht in der Drahtmodellanzeige.
Volumenkörper einfach in einem anderen Visuellen Stil anzeigen.
Befehl: SHADEMODE Konzeptuell

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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

xTaker
Mitglied


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

Beiträge: 9
Registriert: 11.01.2015

erstellt am: 13. Jan. 2015 00: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

Schade. Aber so ist es auch schon gut, vielen Dank.  

Noch eine Frage, da mich das objektorientierte Programmieren noch etwas verwirrt:

Ich hatte vor, zwei Klassen zu erstellen, jeweils für Tunnel (cTunnel) und Löcher (cLoch). Allerdings komme ich nicht drauf, wie ich das dann entsprechend programmiere.

Ich hab das Ganze nun über cTunnel laufen - Variablen für Maße deklariert, Zeichenfunktion aufgestellt - und über das Formular bzw. den dortigen Zeichnen-Button - Zuweisung der Text Boxen zu Variablen, Abrufen der Zeichenfunktion und am Anfang erstmal:

Code:
Public Tunnel As cTunnel

Public Sub Starten()

    Set Tunnel = New cTunnel
    Me.show
   
End Sub


Wobei ich Set Tunnel = New cTunnel nur aus einem Bsp. übernommen habe, 100%ig die Bedeutung hab ich nicht begriffen. Ist es dafür da, um erstmal ein entsprechendes Objekt dieser Klasse zu erzeugen?

Jedenfalls, zurück zur eigentlichen Frage:

Unter cTunnel habe ich nun auch die Variablen der Löcher deklariert (Radius etc.), was ich eigentlich gerne aus cLoch abrufen würde (da ich das nicht hinbekomme, habe ich, damit die Zeichnung funktioniert, das Ganze erstmal so gehandhabt.

D.h. in cTunnel steht die Funktion, die sowohl Tunnel als auch Löcher zeichnet und das Ganze zu einem Objekt verbindet. Ich würde aber gerne cLoch als eigene Klasse haben und abrufen, nicht Auswahl der Öffnungsform und Deklaration der Variablen für die Maße der Löcher in cTunnel stehen haben.
Kann mir da noch jemand weiterhelfen, damit ich das noch begreife?

Vielen Dank schon einmal und entschuldigt meine sicher völlig abstrakte "Programmiersprache"   .

LG Taker

/edit: Mit Klassen meine ich natürlich "Klassenmodule". 

[Diese Nachricht wurde von xTaker am 13. Jan. 2015 editiert.]

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 13. Jan. 2015 13:29    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 xTaker 10 Unities + Antwort hilfreich

Zitat:
Ich hatte vor, zwei Klassen zu erstellen, jeweils für Tunnel (cTunnel) und Löcher (cLoch). Allerdings komme ich nicht drauf, wie ich das dann entsprechend programmiere.
...
Unter cTunnel habe ich nun auch die Variablen der Löcher deklariert (Radius etc.), was ich eigentlich gerne aus cLoch abrufen würde (da ich das nicht hinbekomme, habe ich, damit die Zeichnung funktioniert, das Ganze erstmal so gehandhabt.)

Du hast Dich aber vorher schon einmal mit den Konzepten der Klassen und Vererbungen beschäftigt? (Let-, Get- Aufrufe für Variable, Class-Funktionen)
Oder meintest Du Type-definitionen die Du dann an andere Variablennamen übergeben kannst?
Etwa so:

Code:
Type CTunnel
  Höhe As Double
  Breite As Double
  Länge As Double
  Platte As Double
  Wand As Double
End Type

Dim Tunnel As CTunnel

With Tunnel
  .Breite = 5#
  .Höhe = 2.3
End With



[Diese Nachricht wurde von KlaK am 13. Jan. 2015 editiert.]

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

xTaker
Mitglied


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

Beiträge: 9
Registriert: 11.01.2015

erstellt am: 14. Jan. 2015 01: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

Solche Type-Definitionen hab ich bereits verwendet, da die Variablen ja den Text-Boxen (also den Eingaben des Benutzers) zugeordnet werden müssen.

Ja, ich habe mich dazu belesen, es aber bisher noch nicht praktisch umgesetzt - das ist hier mein erster Versuch dahingehend.

Habe jetzt einiges damit ausprobiert, komme aber nicht an's Ziel. Ich umschreib das Ganze nochmal, vielleicht habt ihr noch gewisse Stichpunkte, zu denen ich mich noch belesen kann. Ansonsten, falls Let- und Get-Aufrufe zum Ziel führen können, muss ich mich da noch weiter reinfuchsen. 

Also ich habe:

Im Klassenmodul cTunnel:
- Deklariert: Maße von Tunnel und Löcher sowie Locharten
- Zeichnung des Tunnels ohne Löcher
- Abfrage ob/welche Löcher
- Zeichnung der späteren Löcher in Form von Quadern/Zylindern, hierzu werden z.T. Maße des Tunnels benötigt
- Zusammenführung: Quader/Zylinder werden vom Tunnel "abgezogen"

Im Formular wird die Klasse dann initialisiert und die Eingabefelder werden den Variablen zugeordet, die Zeichen-Funktion aus cTunnel wird abgerufen.

Ich hätte gern:

Im Klassenmodul cTunnel:
- Deklaration: Maße des Tunnels ohne Löcher
- Zeichnung des Tunnels ohne Löcher

Im Klassenmodul cLoch:
- Deklaration: Maße der Löcher (Quader/Zylinder) sowie Locharten
- Abfrage ob/welche Löcher
- Zeichnung der Löcher (Quader/Zylinder)

Im Formular:
...

Spätestens nun kommen die Fragezeichen.
Eigentlich schon zuvor, denn in der Funktion von cTunnel werden Eigenschaften (Maße) aus cLoch benötigt und andersrum.
Würde ich das hinbekommen, hätte ich womöglich im Formular eine Funktion erstellt, die beide Objekte zusammenführt; allerdings starte ich aktuell mit:

Dim Tunnel As cTunnel
Set Tunnel = New cTunnel

und übergebe dann die Variablennamen bzw. rufe die Funktion ab. Würde das mit zwei Objektvariablen bzw. zwei verschiedenen Klassen so auch funktionieren?

Oh man, bin ich ein hoffnungsloser Fall?   

LG Taker

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

Brischke
Ehrenmitglied V.I.P. h.c.
CAD on demand GmbH



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

Beiträge: 4171
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 14. Jan. 2015 08:08    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 xTaker 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von xTaker:
... Ja, ich habe mich dazu belesen, es aber bisher noch nicht praktisch umgesetzt - das ist hier mein erster Versuch dahingehend.

... vielleicht habt ihr noch gewisse Stichpunkte, zu denen ich mich noch belesen kann.



Hallo xTaker,

eine Anmerkung habe ich: Wenn du so sehr am Anfang beim Lernen des Programmieren stehst, dann vergiss das VBA-Zeugs. VB/VBA wird seitens Microsoft nicht weiter entwickelt, wer weiß, wie lange das im AutoCAD überhaupt noch integriert sein wird. In den neueren Versionen muss man die VBA-Unterstützung bereits gezielt nachinstallieren.

Fange am besten gleich mit .Net (mir liegt c#.Net am besten) an. Dazu findest du Unmengen an Beispielen im Internet, auch zu deiner Aufgabe (zumindest im Prinzip, wie Klassen angelegt und verwendet werden).
Deine bisher angestellten Vorüberlegungen sind ohnehin das Wichtigste, was man bei der Programmierung erledigen muss - die waren also nicht umsonst.

Natürlich empfehle ich für das Erlernen der Programmierung eine Schulung (am besten natürlich bei mir  ) Damit hast du einen Einstieg, da das autodidaktische Aneignen der Basics mühsam und zeitintensiv sein wird.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

xTaker
Mitglied


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

Beiträge: 9
Registriert: 11.01.2015

erstellt am: 14. Jan. 2015 11: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

Hallo und vielen Dank für die Antwort.

Das angesprochene verstehe ich und habe ich so bzgl. VBA schon des Öfteren gehört oder gelesen. Umso fragwürdiger finde ich, dass ich im Laufe meines Ingenieur Studiums VBA für AutoCAD erlernen muss (bzw. es ist ein Wahlfach, die andere Wahl geht aber mehr in den wirtschaftlichen Bereich.
Aus diesem Grund versuche ich mich aktuell schon etwas darauf vorzubereiten (das Fach startet für mich erst im Oktober), habe aber nur Übungsaufgaben älterer Semester gefunden, ohne Lösung oder Skript.

Hätte ich die Wahl, würde ich dem Rat sehr sicher folgen, so bleibt mein Problem leider noch bestehen.

LG Taker

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 14. Jan. 2015 14:02    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 xTaker 10 Unities + Antwort hilfreich

Und bei diesen Übungsaufgaben werden Klassenmodule verlangt? Oder war das Dein eigener Wunsch?

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

xTaker
Mitglied


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

Beiträge: 9
Registriert: 11.01.2015

erstellt am: 14. Jan. 2015 15:17    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

Zwei Klassenmodule cTunnel und cLoch.
Ich habs nur hinbekommen mit einem Klassenmodul und der Initialisierung dieser Klasse im Formular.

/edit:

Also es funktioniert, wenn ich im Formular zwei Objektvariablen erstelle, beide Klassen dort initialisiere und dann erst, dort, die komplette Zeichnung vornehme.

Die Zeichnung soll aber schon zuvor, innerhalb des Klassenmoduls cTunnel, stattfinden. Also dachte ich mir, ich initialisiere cLoch innerhalb des Konstrukts von cTunnel. Funktioniert soweit auch, ich kann die Variablen der Löcher verwenden, allerdings komm ich dann beim Formular nicht weiter. Eigentlich dachte ich, wenn ich dort dann cTunnel abrufe, wird dadurch auch cLoch abgerufen, da ich es ja in cTunnel verwende. Scheint aber nicht so zu sein. Und anders weiß ich so auch nicht weiter.

Vielleicht hat die Erklärung mein Problem nochmal näher durchleuchtet. 

LG Taker 

[Diese Nachricht wurde von xTaker am 14. Jan. 2015 editiert.]

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 14. Jan. 2015 17: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 Nur für xTaker 10 Unities + Antwort hilfreich

Vermutlich hast Du nur noch einen kleinen Denkfehler, aber ohne Sourcecode ist das immer etwas schwierig nach zu vollziehen.

Im Prinzip hast Du ja Dein Formular mit der Abfrage der Eingabedaten
Wenn Du auf Erstellen gehst übergibst Du diese Eingabewerte an den neuen Tunnel.
Innerhalb der Tunnelklasse müßte nun eine Funktion sein die, abhängig von der Art und Lochangaben, neue Lochobjekte erzeugt und diese zeichnen lässt.

Vermutlich verwendest Du nur eine Instanz bei den Löchern und nicht mehrere und gibst die Lochwerte (Radius oder Breite/Höhe und Wandstärke) von der Tunnelklasse nicht an die Lochklasse weiter.

Sind jetzt nur theoretische Überlegungen, habe solche verschachtelte Klassen noch nicht programmiert.

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

xTaker
Mitglied


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

Beiträge: 9
Registriert: 11.01.2015

erstellt am: 15. Jan. 2015 12: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

Okay, nun habe ich es soweit doch noch hinbekommen, wie es geplant war. 

Eine kleine Sache stört nun noch:

Wenn ich das Formular-Fenster geöffnet habe, tritt der Laufzeitfehler 91 auf: "Objektvariable oder with-Blockvariable nicht festgelegt". Starte ich das Programm aus irgendeinem anderen Modul heraus, läuft es exzellent und erfüllt seine Aufgabe.

Hat da noch wer einen Rat?

LG Taker 

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: 1521
Registriert: 17.08.2005

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

erstellt am: 21. Jan. 2015 18:27    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 xTaker 10 Unities + Antwort hilfreich

Hallo,
Zitat:
Original erstellt von xTaker:
[i]Wenn ich das Formular-Fenster geöffnet habe, tritt der Laufzeitfehler 91 auf: "Objektvariable oder with-Blockvariable nicht festgelegt". Starte ich das Programm aus irgendeinem anderen Modul heraus, läuft es exzellent und erfüllt seine Aufgabe.


Normalerweise sollte dein Programm doch immer einheitlich gestartet werden. Ich denke du öffnest dein Formular aus der VBAIDE mit F5.
Da wird vermutlich ein Objekt/Klasse nicht gesetzt sein die sonst in der Startroutine verarbeitet wird.
Eine genaue Ferndiagnose ohne Programmcode ist wohl eher schwierig.

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