Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  UserForm / Modul - Prozedur

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:  UserForm / Modul - Prozedur (2128 mal gelesen)
Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 12. Nov. 2006 11: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

Hallo zusammen!

Um einen Code innerhalb einer UserForm nicht zu überladen, möchte ich bestimmte Prozeduren in Module auslagern, wie z.B. diese 3D Stellschraube.
Diese soll nach dem Clickereignis in der UserForm der Zeichnung als Block hinzugefügt werden und über einen definierten Punkt "ZRohr" eingefügt werden.
Wie ruf ich denn jetzt dieses aus meiner UserForm auf?


Modul: Stellfuss01

Code:

Option Explicit
'---Winkelfunktion definieren-----------------------------------------------------
Const pi = 3.14159
'---Winkelfunktion definieren------------------------------------------------------
Function dtr(a As Double) As Double
    dtr = (a / 180) * pi
End Function
'-----------------------------------------------------
Public Sub Stellfuss01()

Dim cP(0 To 2) As Double
cP(0) = 0#: cP(1) = 0#: cP(2) = 0#

Dim StBlock As AcadBlock

Dim col1 As New AcadAcCmColor
Call col1.SetRGB(59, 59, 59)
Dim col2 As New AcadAcCmColor
Call col2.SetRGB(245, 245, 248)

On Error Resume Next
Set StBlock = ThisDrawing.Blocks("test02")
    If Err.Number = 0 Then
        'Block schon vorhanden
    Exit Sub
End If

On Error GoTo 0
Set StBlock = ThisDrawing.Blocks.Add(cP, "test02")

Dim StLay As AcadLayer
Set StLay = ThisDrawing.Layers.Add("Stellfuss1")

Dim S1, S2, S3, S4, S5, S6 As Variant
Dim stellobj1(0 To 4) As AcadEntity

With ThisDrawing.Utility
S1 = .PolarPoint(cP, dtr(180#), 21)
S2 = .PolarPoint(S1, dtr(180#), 1.5)
S3 = .PolarPoint(S2, dtr(90#), 1.5)
S4 = .PolarPoint(S3, dtr(90#), 12.5)
S5 = .PolarPoint(S4, dtr(0#), 14)
S6 = .PolarPoint(S5, dtr(0#), 8.5)
End With

With ThisDrawing.ModelSpace
Set stellobj1(0) = .AddLine(cP, S1)
Set stellobj1(1) = .AddLine(S1, S3)
Set stellobj1(2) = .AddLine(S3, S5)
Set stellobj1(3) = .AddLine(S5, S6)
Set stellobj1(4) = .AddLine(S6, cP)
End With

Dim regobj1 As Variant
regobj1 = ThisDrawing.ModelSpace.AddRegion(stellobj1)

Dim axisDir(0 To 2) As Double
Dim angle As Double
axisDir(0) = 0.001: axisDir(1) = 360: axisDir(2) = 0
angle = (2 * pi)

Dim solidObj0 As Acad3DSolid
'Set solidObj0 = ThisDrawing.ModelSpace.AddRevolvedSolid(regobj1(0), cP, axisDir, angle)
Set solidObj0 = StBlock.AddRevolvedSolid(regobj1(0), cP, axisDir, angle)
solidObj0.TrueColor = col1
solidObj0.Layer = "Stellfuss1"

Dim rota As Double
rota = (pi * 7.5)
solidObj0.Rotate3D cP, S1, rota

stellobj1(0).Delete
stellobj1(1).Delete
stellobj1(2).Delete
stellobj1(3).Delete
stellobj1(4).Delete

regobj1(0).Erase
'---------------------------------------------------------------------
Dim G0, G1, G2, G3, G4, G5 As Variant
Dim gewiobj1(0 To 4) As AcadEntity

With ThisDrawing.Utility
G0 = .PolarPoint(S6, dtr(90#), 6)
G1 = .PolarPoint(G0, dtr(180#), 5)
G2 = .PolarPoint(G1, dtr(90#), 43)
G3 = .PolarPoint(G2, dtr(90#), 2)
G4 = .PolarPoint(G3, dtr(0#), 2)
G5 = .PolarPoint(G4, dtr(0#), 3)
End With

With ThisDrawing.ModelSpace
Set gewiobj1(0) = .AddLine(G0, G1)
Set gewiobj1(1) = .AddLine(G1, G2)
Set gewiobj1(2) = .AddLine(G2, G4)
Set gewiobj1(3) = .AddLine(G4, G5)
Set gewiobj1(4) = .AddLine(G5, G0)
End With

Dim gewreg As Variant
gewreg = ThisDrawing.ModelSpace.AddRegion(gewiobj1)

Dim axisDir1(0 To 2) As Double
Dim angle1 As Double
axisDir1(0) = 0.01: axisDir1(1) = 360: axisDir1(2) = 0
angle1 = (2 * pi)

Dim gewObj As Acad3DSolid
'Set gewObj = ThisDrawing.ModelSpace.AddRevolvedSolid(gewreg(0), cP, axisDir1, angle1)
Set gewObj = StBlock.AddRevolvedSolid(gewreg(0), cP, axisDir1, angle1)
gewObj.TrueColor = col2
gewObj.Layer = "Stellfuss1"
gewObj.Rotate3D cP, S1, rota

gewiobj1(0).Delete
gewiobj1(1).Delete
gewiobj1(2).Delete
gewiobj1(3).Delete
gewiobj1(4).Delete

gewreg(0).Erase
'---------------------------------------------------------------
Dim usObj As Acad3DSolid
Dim radius As Double
Dim height As Double
radius = 8#
height = 1#
'Set usObj = ThisDrawing.ModelSpace.AddCylinder(cP, radius, height)
Set usObj = StBlock.AddCylinder(cP, radius, height)
Dim U0#(2), U1#(2)
U1(2) = U0(2) + 14.5
usObj.Move U0, U1
usObj.TrueColor = col2
usObj.Layer = "Stellfuss1"

'---------------------------------------------------------------
Dim M0, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10 As Variant
Dim muobj1(0 To 5) As AcadEntity

With ThisDrawing.Utility
M0 = .PolarPoint(cP, dtr(270#), 7.0002)
M1 = .PolarPoint(M0, dtr(180#), 4.0416)
M2 = .PolarPoint(M1, dtr(180#), 4.0416)
M3 = .PolarPoint(M2, dtr(90#), 7.002)
M4 = .PolarPoint(M3, dtr(90#), 7.002)
M5 = .PolarPoint(M4, dtr(0#), 4.0416)
M6 = .PolarPoint(M5, dtr(0#), 8.0831)
M7 = .PolarPoint(M6, dtr(0#), 4.0416)
M8 = .PolarPoint(M7, dtr(270#), 7.002)
M9 = .PolarPoint(M8, dtr(270#), 7.002)
M10 = .PolarPoint(M9, dtr(180#), 4.0416)
End With

With ThisDrawing.ModelSpace
Set muobj1(0) = .AddLine(M1, M3)
Set muobj1(1) = .AddLine(M3, M5)
Set muobj1(2) = .AddLine(M5, M6)
Set muobj1(3) = .AddLine(M6, M8)
Set muobj1(4) = .AddLine(M8, M10)
Set muobj1(5) = .AddLine(M10, M1)
End With

Dim mureg As Variant
mureg = ThisDrawing.ModelSpace.AddRegion(muobj1)

Dim taperAngle As Double
taperAngle = 0

Dim mutter As Acad3DSolid
'Set mutter = ThisDrawing.ModelSpace.AddExtrudedSolid(mureg(0), 6, taperAngle)
Set mutter = StBlock.AddExtrudedSolid(mureg(0), 6, taperAngle)
Dim MU0#(2), MU1#(2)
MU1(2) = MU0(2) + 15
mutter.Move MU0, MU1
mutter.TrueColor = col2
mutter.Layer = "Stellfuss1"

muobj1(0).Delete
muobj1(1).Delete
muobj1(2).Delete
muobj1(3).Delete
muobj1(4).Delete
muobj1(5).Delete

mureg(0).Erase

End Sub


UserForm: LBS01

Code:

Private Sub MP2cmd2_click()
Dim Prompt1 As String
Prompt1 = vbCrLf & "Einfügepunkt:"
ZRohr = ThisDrawing.Utility.GetPoint(, Prompt1)
End Sub

Vielen Dank im voraus.

Gruß

Dirk

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

wwwilli
Mitglied
Ingenieur


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

Beiträge: 410
Registriert: 21.03.2006

ACAD MAP 3D 2012.
VestraCAD.
Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.

erstellt am: 12. Nov. 2006 11:43    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 Dirk.B 10 Unities + Antwort hilfreich

Hallo,
von Userforms habe ich praktisch keine Ahnung, aber als normale Subroutine würde das doch wohl mit
Call stellfuss01()
aufgerufen werden.
MfG,
wwwilli

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1357
Registriert: 24.07.2002

erstellt am: 12. Nov. 2006 13:33    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 Dirk.B 10 Unities + Antwort hilfreich

Hallo Dirk,

Pack deinen Code in eine Modul (Nicht unter ThisDrawing!). Dann kannst du den Code mit Stellfuss01 aufrufen.

Gruß, Carsten

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: 12. Nov. 2006 14:22    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 Dirk.B 10 Unities + Antwort hilfreich


PrivatePublic.zip

 
Hallo Dirk,

hab dir mal deine DVB angehängt mit einigen Beispielen für Private
und Public von Variablen und Prozeduren.

Schau's dir mal an. Ich glaube dann wird klar wo und wie du deinen Funktionen unterbringen kannst.

Stelli

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

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

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 12. Nov. 2006 14:22    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!

Der Code zu dem Stellfuss01 befindet sich ja in einem Modul, der Rest in dem der UserForm.
In ThisDrawing befindet sich nur:

Code:

Public Sub Ladenbau10()
On Error Resume Next
With LBS01
    .Show
End With
End Sub

Die Frage für mich ist, wie starte ich die Prozedur in dem Modul aus der UserForm heraus?

Gruß

Dirk

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1357
Registriert: 24.07.2002

AutoCAD ACA 2018
Solidworks 2016 Sp5
Enterprise PDM 2016 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Samsung S24C650
Dell M4800

erstellt am: 12. Nov. 2006 18:23    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 Dirk.B 10 Unities + Antwort hilfreich


Projekt.dvb.txt

 
Hallo Dirk,

Ich weiss zwar nicht genau, wo du dein Problem hast, aber hier ist das, was du vor hast.

Hättest aber auch ruhig im anderen Thread weitermachen können. 

Gruß, Carsten   

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

Goofy007
Mitglied
Vermessungstechniker


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

Beiträge: 578
Registriert: 06.11.2004

Map3D 2018 und Civil3D 2018

erstellt am: 12. Nov. 2006 18:37    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 Dirk.B 10 Unities + Antwort hilfreich

Hallo Dirk!

Na ganz einfach so wie es Carsten schon beschrieben hat, indem du den Namen der im Modul definierten Sub hinschreibst.

mfg Didi


EDIT:  war zu langsam, hab den letzten Beitrag von Carsten noch nicht gesehen.

[Diese Nachricht wurde von Goofy007 am 12. Nov. 2006 editiert.]

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

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 13. Nov. 2006 07:53    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 zusammen!

Vielen Dank für die Hilfe.
Nun ist mir einges klarer geworden.
Mit dem Aufruf "Call Stellfuss01" gehts recht einfach.

Gruß

Dirk

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



Infrastrukturplaner*in für die Projektierung von Netzprojekten

Willst Du gemeinsam mit uns das 36.000 Kilometer lange Berliner Stromnetz fit halten, ausbauen und modernisieren? Willst Du Dich mit voller Kraft für unsere 3,7 Millionen Kund*innen und für eine nachhaltige Stadtgesellschaft engagieren?

Dann unterstütze uns zum nächstmöglichen Zeitpunkt als

Infrastrukturplaner*in für die Projektierung von Netzprojekten

Anzeige ansehenEnergie und Umwelttechnik
Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1357
Registriert: 24.07.2002

AutoCAD ACA 2018
Solidworks 2016 Sp5
Enterprise PDM 2016 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Samsung S24C650
Dell M4800

erstellt am: 13. Nov. 2006 08: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 Dirk.B 10 Unities + Antwort hilfreich

Hallo Dirk,

Das "Call" kannst du auch weglassen(Siehe Beispieldatei).
So schwierig war das doch auch nicht, oder?! 

Gruß, Carsten

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