Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Differenzierung 3DSolids

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
  
Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
Autor Thema:  Differenzierung 3DSolids (839 mal gelesen)
cacysunlee
Mitglied
Konstruktion, Acad-3D


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

Beiträge: 67
Registriert: 27.08.2003

AcadMech-2010

erstellt am: 24. Okt. 2006 12: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

Hallo Leute,

ich versuche per Script ein 3D-Rohr zu zeichnen.
Die beiden 3D-Profile für Außen- und Innendurchmesser werden problemlos erstellt.
Das Differenzieren funktioniert leider nicht.

Allein die Zeile „Set oProfil1 = ThisDrawing.ModelSpace.Boolean(acSubtraction, oProfil2)“ will nicht so ganz. Was mache ich falsch? Bitte um einen Lösungsvorschlag.


Hier der gesamte Code :

Private Sub cmd_rohr_Click()
Dim oProfil1 As Acad3DSolid
Dim oProfil2 As Acad3DSolid
Dim oRohr As Acad3DSolid
Dim vZentrum As Variant
Dim vDurchmesserA As Variant
Dim vDurchmesserI As Variant
Dim vRohrlaenge As Variant
'nachfolgende Funktion versteckt das Formular nach aufruf dieser Prozedur
'und übergibt Autocad die weitere Steuerung
Me.Hide
vDurchmesserA = Me.Txt_DurchmesserA / 2 'Variable aus Eingabefeld
vDurchmesserI = vDurchmesserA - Me.Txt_Wandstaerke 'Variable aus Eingabefeld
vRohrlaenge = Me.Txt_Rohrlaenge 'Variable aus Eingabefeld

vZentrum = ThisDrawing.Utility.GetPoint(, "Mittelpunkt bestimmen")
'die beiden Profile zeichnen
Set oProfil1 = ThisDrawing.ModelSpace.AddCylinder(vZentrum, vDurchmesserA, vRohrlaenge)
Set oProfil2 = ThisDrawing.ModelSpace.AddCylinder(vZentrum, vDurchmesserI, vRohrlaenge)

'profile differenzieren, profil1 - profil2
Set oProfil1 = ThisDrawing.ModelSpace.Boolean(acSubtraction, oProfil2)

End Sub


Gruß
Sun Lee

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: 24. Okt. 2006 12:48    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 cacysunlee 10 Unities + Antwort hilfreich

Hallo Sun Lee!

Probier es mal so ohne UserForm.
Kopier dieses in ein Modul und für es aus.
Bei mir funktionierts.

Code:

Private Sub cmd_rohr_Click()
Dim oProfil1 As Acad3DSolid
Dim oProfil2 As Acad3DSolid
Dim oRohr As Acad3DSolid
Dim vZentrum As Variant

Dim Prompt1 As String
Prompt1 = vbCrLf & "Einfügepunkt:"
vZentrum = ThisDrawing.Utility.GetPoint(, Prompt1)
'Dim vDurchmesserA As Variant
'Dim vDurchmesserI As Variant
'Dim vRohrlaenge As Variant
'nachfolgende Funktion versteckt das Formular nach aufruf dieser Prozedur
'und übergibt Autocad die weitere Steuerung
'Me.Hide
'vDurchmesserA = Me.Txt_DurchmesserA / 2 'Variable aus Eingabefeld
'vDurchmesserI = vDurchmesserA - Me.Txt_Wandstaerke 'Variable aus Eingabefeld
'vRohrlaenge = Me.Txt_Rohrlaenge 'Variable aus Eingabefeld

'vZentrum = ThisDrawing.Utility.GetPoint(, "Mittelpunkt bestimmen")
'die beiden Profile zeichnen
Set oProfil1 = ThisDrawing.ModelSpace.AddCylinder(vZentrum, 10, 200)
Set oProfil2 = ThisDrawing.ModelSpace.AddCylinder(vZentrum, 8, 200)


'profile differenzieren, profil1 - profil2
'Set oProfil1 = ThisDrawing.ModelSpace.Boolean(acSubtraction, oProfil2)
oProfil1.Boolean acSubtraction, oProfil2


End Sub


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: 1360
Registriert: 24.07.2002

AutoCAD ACA 2024
Solidworks 2022 Sp5
Enterprise PDM 2022 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell Precision 3660
Intel Core i9-12900K
32 GB Arbeitsspeicher
2x Dell U2415

erstellt am: 24. Okt. 2006 12: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 cacysunlee 10 Unities + Antwort hilfreich

Hi,

Du wendest die Methode für die Differenz falsch an.
Richtig wäre: oProfil1.Boolean acSubtraction, oProfil2

Gruß, Carsten

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

cacysunlee
Mitglied
Konstruktion, Acad-3D


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

Beiträge: 67
Registriert: 27.08.2003

AcadMech-2010

erstellt am: 24. Okt. 2006 13:01    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

@Carsten
Super, genau das war die Lösung, vielen Dank !

@Dirk
Danke auch dafür, das kann ich gut für vordefinierte Rohre verwenden !

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