iLogic/VBA : Zeichnung Maße Toleranz vergeben

iLogic/VBA : Zeichnung Maße Toleranz vergeben

j_weber
Mentor Mentor
507Aufrufe
11Antworten
Nachricht 1 von 12

iLogic/VBA : Zeichnung Maße Toleranz vergeben

j_weber
Mentor
Mentor

Hallo ihr lieben, 

 

ich habe mir wieder eine kleine Vereinfachung erstellt. 

Es gab immer wieder mal das die Anforderung in einer Zeichnung, das bestimmte lineare Maße eine Abmaßtoleranz bekommen soll, also oberes Abmaß und unteres Abmaß. 

 

Snag_10a7755.png

 

 

Bisher musste ich immer in das Maß gehen und dort dann einstelle. Das ist bei viele Maßen Zeitaufwändig. 

 

Also hab ich geschaut, ob man das vereinfachen kann. 

Geht auch. 

 

 




Jörg Weber
CAD Systemtechniker für AutoCAD, Inventor, Vault





0 „Gefällt mir“-Angaben
Akzeptierte Lösungen (1)
508Aufrufe
11Antworten
Antworten (11)
Nachricht 2 von 12

j_weber
Mentor
Mentor
Akzeptierte Lösung

Hier die Codes

 

VBA:

Sub SetTol()
'Ändert die Toleranz für vorher markierte Maße
'Zugriff auf aktuelle Zeichnung
Dim oDrawing As DrawingDocument
Set oDrawing = ThisApplication.ActiveDocument

'Zugriff auf Zeichnung
Dim osheet As Sheet
Set osheet = oDrawing.ActiveSheet

'Zugriff auf aktives Blatt
Dim oSSet As SelectSet
Set oSSet = oDrawing.SelectSet

'Zugriff auf Bemaßungs in der Zeichnung
Dim oDims As DrawingDimensions
Set oDims = osheet.DrawingDimensions

'Zugriff auf generelle Bemaßungen
Dim oGenDims As GeneralDimensions
Set oGenDims = oDims.GeneralDimensions

'Toleranzwert Oben festlegen
Dim oTolUpper As Double
oTolUpper = InputBox("Geben Sie den oberen Toleranzwert an", "Oberes Abmaß", 0.1)
oTolUpper = oTolUpper / 10

'Toleranzwert unten festlegen
Dim oTolLower As Double
oTolLower = InputBox("Geben Sie den unteren Toleranzwert an", "Unteres Abmaß", -0.2)
oTolLower = oTolLower / 10

Dim oDimSelect As LinearGeneralDimension
For Each oDimSelect In oSSet
Call oDimSelect.Tolerance.SetToDeviation(oTolUpper, oTolLower)
Next
End Sub

 

iLogic

Dim oDrawing As DrawingDocument
oDrawing = ThisApplication.ActiveDocument

'Zugriff auf Zeichnung
Dim osheet As Sheet
osheet = oDrawing.ActiveSheet

'Zugriff auf aktives Blatt
Dim oSSet As SelectSet
oSSet = oDrawing.SelectSet

'Zugriff auf Bemaßungs in der Zeichnung
Dim oDims As DrawingDimensions
oDims = osheet.DrawingDimensions

'Zugriff auf generelle Bemaßungen
Dim oGenDims As GeneralDimensions
oGenDims = oDims.GeneralDimensions

'Toleranzwert Oben festlegen

Dim oTolUpper As Double
oTolUpper = InputBox("Geben Sie den oberen Toleranzwert an", "Oberes Abmaß", 0.1)
oTolUpper = oTolUpper / 10

'Toleranzwert unten festlegen
Dim oTolLower As Double
oTolLower = InputBox("Geben Sie den unteren Toleranzwert an", "Unteres Abmaß", -0.2)
oTolLower = oTolLower / 10


Dim oDimSelect As LinearGeneralDimension

For Each oDimSelect In oSSet
	Call oDimSelect.Tolerance.SetToDeviation(oTolUpper, oTolLower)
Next

 




Jörg Weber
CAD Systemtechniker für AutoCAD, Inventor, Vault





0 „Gefällt mir“-Angaben
Nachricht 3 von 12

j_weber
Mentor
Mentor

Vielleicht kann es ja der eine oder andere verwenden. 

 

Als nächste möchte ich es Versuchen für Passungen bei Bohrungen, also H7 oder so, zu erstellen. 

 

 




Jörg Weber
CAD Systemtechniker für AutoCAD, Inventor, Vault





0 „Gefällt mir“-Angaben
Nachricht 4 von 12

bkh
Advocate
Advocate

Danke für die Vereinfachung!
Ich nutze bisher im Inventor die Funktion "Eigenschaften kopieren".
Ein Maß mit der Passung versehen, dann markieren und die rechte Maustaste, aus dem Kontextmenü die Funktion " Eigenschaften kopieren" wählen. Alle Zielmaße anwählen. Das geht auch ziemlich schnell.

 

Unabhängige CAD Trainerin
cadcompany | Ing. Büro für CAD Dienstleistungen
Nachricht 5 von 12

j_weber
Mentor
Mentor

Hallo @bkh 

jo, stimmt, das geht auch sehr schnell. 

Hab ich gar nicht mehr dran gedacht. 

Ist halt Alter vor Klugheit 😄




Jörg Weber
CAD Systemtechniker für AutoCAD, Inventor, Vault





0 „Gefällt mir“-Angaben
Nachricht 6 von 12

j_weber
Mentor
Mentor

Ich habe es geschafft den Code zu erweitern. 

 

 

 

Dim oSet As HighlightSet

If ThisApplication.ActiveDocumentType <> DocumentTypeEnum.kDrawingDocumentObject Then
	MsgBox("Es ist keine Zeichnung geöffnet. Bitte öffnen Sie eine Zeichnung")
	Exit Sub
Else
	MsgBox("Sie befinden sich in einer Zeichnung")
End If

Dim oDrawing As DrawingDocument
oDrawing = ThisApplication.ActiveDocument

oSet = oDrawing.CreateHighlightSet

While True
	Dim oDim As Object
	oDim = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kDrawingDimensionFilter, "Bitte Bemaßung wählen. Auswahl mit ESC beenden")
	If IsNothing(oDim) Then Exit While
		
	oSet.AddItem(oDim)

End While

'Zugriff auf Zeichnung
Dim osheet As Sheet
osheet = oDrawing.ActiveSheet

'Zugriff auf aktives Blatt
'Dim oSSet As SelectSet
'oSSet = oDrawing.SelectSet

'Zugriff auf Bemaßungs in der Zeichnung
Dim oDims As DrawingDimensions
oDims = osheet.DrawingDimensions

'Zugriff auf generelle Bemaßungen
Dim oGenDims As GeneralDimensions
oGenDims = oDims.GeneralDimensions

'Toleranzwert Oben festlegen

Dim oTolUpper As Double
oTolUpper = InputBox("Geben Sie den oberen Toleranzwert an", "Oberes Abmaß", 0.1)
oTolUpper = oTolUpper / 10
'oTolUpper = 0.01

'Toleranzwert unten festlegen
Dim oTolLower As Double
oTolLower = InputBox("Geben Sie den unteren Toleranzwert an", "Unteres Abmaß", -0.2)
oTolLower = oTolLower / 10
'oTolLower = -0.02


Dim oDimSelect As LinearGeneralDimension

For Each oDimSelect In oSet
	Call oDimSelect.Tolerance.SetToDeviation(oTolUpper, oTolLower)
Next

 

Jetzt kann man die Regel starten, die Maße auswählen die eine Toleranz erhalten sollen, die Auswahl mit ESC beenden und dann wird der Code weiter ausgeführt. 

Auswahlabschluss mit Enter wäre mir lieber, mal sehen ob ich das auch noch finde. 

Aber so geht es schon mal ohne erst die Maße auszuwählen und dann den Code auszuführen. 

 

Ist erst einmal iLogic, VBA will das While nicht so richtig. 

 

 

 




Jörg Weber
CAD Systemtechniker für AutoCAD, Inventor, Vault





Nachricht 7 von 12

sara_elsayed15
Alumni
Alumni

Hi @j_weber 

 

Danke dir fürs Teilen des Codes! Das hilft bestimmt immens vielen Inventor-Usern!

Deine Hilfe, die du der Community anbietest, ist wirklich beeindruckend! 🙏

 

 

Gruß.

Sara 😊

0 „Gefällt mir“-Angaben
Nachricht 8 von 12

Michael.bertramGZRLH
Participant
Participant

Hallo,

Frage: die Toleranzen sind auf der Zeichnung, aber nicht in der Skizze.

Bei einer Toleranzanalyse werden diese Toleranzen dann berücksichtigt?

z.B: Ø20 -0,1 -02 heißt ja der Durchmesser muss zwischen 19,9 bzw. 19,8 liegen.

oder muss dann die Toleranzen beim bemaßen in der Skizze hinterlegen.

0 „Gefällt mir“-Angaben
Nachricht 9 von 12

j_weber
Mentor
Mentor

Hallo Michael, 

Toleranzen werden nicht in der Skizze am Maß vergeben, sondern über die Parameterliste.

Dort kann man dann einem Maß mitteilen, was für eine Art Toleranz es haben soll. 

Das wird bei Modellparameter in der Anzeige Nennwert gemacht, nicht bei Benutzerparameter. 

Die Toleranz und den Nennwert ergibt dann den Modellwert. 

 

Wenn Du nicht klar kommst melde ich, dann zeig ich dir das mal

 




Jörg Weber
CAD Systemtechniker für AutoCAD, Inventor, Vault





0 „Gefällt mir“-Angaben
Nachricht 10 von 12

Michael.bertramGZRLH
Participant
Participant

Hallo Jörg,

so ganz verstehe ich die Logik von Inventor nicht.

Ich mache im Modell über die Parameter (fx) die Toleranzen ans Modell.

Diese werden dann auch in der Zeichnung angezeigt.

Das ist das was ich auch will, alle Informationen am Modell (Toleranzen, Passungen etc.)

 

Wenn ich jetzt eine Zeichnung erstelle, habe ich doch die Möglichkeit, mit Doppelklick auf ein Maß auch eine Toleranz einzugeben.

Diese erscheint aber nicht im Modell.

Ich habe zwei Bilder angehängt, dann wird es deutlich was ich nicht verstehe.

Die Toleranz 0,815 bzw. -0,47 habe ich in der Zeichnung erstellt, die Toleranz  8-0,1 im Modell.

Welchen Vorteil habe ich denn wenn ich die Toleranzen in der Zeichnung erstelle?

VG Michael

 

0 „Gefällt mir“-Angaben
Nachricht 11 von 12

j_weber
Mentor
Mentor

Hallo Michael, 

Du hast ja schon richtiger Weise geschrieben, das Du in der Zeichnung Modellmaße angibst. 

Diese zeigen Dir dann auch die Toleranzen an. 

Nur leider, wenn Du an der Toleranz in der Zeichnung änderst, geht das nicht ins Modell über. 

Ich hatte ein ähnliche Frage vor Kurzem und mußte da feststellen, das die Toleranzen nur vom Modell an die Zeichnung übergeben werden. 

Leider

Hier hat der Inventor noch Handlungsbedarf. 

An Benutzermaßen in der Zeichnung ist es so, das die Toleranzen nur auf der Zeichnung stehen, nicht am Modell. 

Persönlich würde ich die Toleranzen am Modellparameter anbringen. Dann steuert es auch das Bauteil wenn man mal eine Toleranzanalyse machen möchte. 

 

 




Jörg Weber
CAD Systemtechniker für AutoCAD, Inventor, Vault





0 „Gefällt mir“-Angaben
Nachricht 12 von 12

Michael.bertramGZRLH
Participant
Participant

Vielen Dank für die Info,

jetzt ist mir alles klar.

Ich arbeite mit zwei CAD Systemen, und das mit den Vorgehen bei den Toleranzen in IV war mir nicht klar.

Da ich ein Freund der Modellmaße auf der Zeichnung bin, hatte ich einige Verständnisprobleme, die jetzt ausgeräumt sind.

VG Michael

0 „Gefällt mir“-Angaben