| | | 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 ! |
Autor
|
Thema: Darstellung von Regelgewinden (2503 mal gelesen)
|
Pisarz Mitglied
Beiträge: 280 Registriert: 05.03.2002 AIP2011 Win7x64 HP Z400/W3565(3.2GHz) 12GB RAM 100GB SSD / 1TB Raid1 MSI R5770 Hawk SpacePilot
|
erstellt am: 19. Nov. 2002 18:02 <-- editieren / zitieren --> Unities abgeben:
Hallo Gemeinde! Hier mal wieder was aus meiner kleinen Werkzeugkiste. Es geht um die Darstellung von Gewinden im Modellbereich und deren Bezeichnungsdarstellung in der Ableitung. Bekanntlich kann IV im Modellbereich die Gewinde nur rendern, wenn die Bezeichnung in der entsprechenden Exeltabelle die Steigung enthält, und zwar mit Punkt als Dezimalzeichen. Beispiel: "M10x1.5" oder "M10x0.75". Dieser Wert wird angezeigt, wenn in der Zeichnung eine Bohrungs-/Gewindeinfo erstellt wird. Während das bei Feingewinden gerade noch so zu verschmerzen ist, stimmt es für Regelgewinde nicht mehr, hier ist die Steigung nicht mit anzugeben (DIN 202 schreibt das explizit vor). "M10x1.5" muss also in der Zeichung als "M10" bezeichnet werden. Leider gibt es bisher keine Möglichkeit, das "M10" oder den Nenndurchmesser "10" in der Gewindeinfo als Parameter abzurufen. Ein Workaround, den manche von Euch sicher gehen, ist es, die Bezeichnungen in der Excel-Tabelle anzupassen. Leider gibt es dann aber keine Darstellung in der Modellansicht mehr. Ungenügsam wie ich nunmal bin, will ich aber beides: Rendering im Modell, korrekte Bezeichnung in der Ableitung. Hier hilft jetzt das beigefügte Makro. Das Programm durchforstet das gesamte Modell (egal, ob assembly oder part) nach Gewindeeinträgen und tauscht die Bezeichnungen mit Steigung bei den Regelgewinden gegen Bezeichnungen ohne Steigung aus. D.h. aus "M10x1.5" wird "M10", aus "M8x1" wird "M8" usw. Wenn man das nun macht, verschwinden im Modell alle Regelgewindedarstellungen, in der Ableitung stehen aber die korrekten Bezeichnungen. Für diejenigen, die jetzt aber das Modell nochmal ordentlich sehen wollen, gibt es die passende Umkehrroutine: aus "M10" wird dann wieder "M10x1.5". Wenn ihr die beigefügte Datei in Gewinde.bas umbenennt, könnt ihr das Programm wie in http://www.cad.de/foren/ubb/Forum50/HTML/000603.shtml beschrieben installieren. Anschließend stehen euch die beiden Makros "Gewinde.SteigungVerbergen" und "Gewinde.SteigungZeigen" zur Verfügung, die Ihr aufrufen könnt, wenn ihr Euch in dem Modell befindet (.iam/.ipt), nicht in der Zeichnung (.idw). Laufen tut's für alle Regelgewinde nach DIN 13 Teil 1. Bleibt dann nur noch die lästige Gewindeklasse (z.B. 6H), die gem. DIN ebenfalls nur anzugeben ist, wenn es nicht die Standard-Klasse ist. Bei Bohrungen lässt sich dass gut abschalten: Dazu geht man dann in der Zeichnungsvorlage in den Dialog "Format - Bemaßungsstile...", ruft die Seite "Bohrungen" auf und ändert die Darstellung bei den Gewindentypen so ab, dass überall der Ausdruck "- <THRC>" verschwindet. Viel Spaß damit.
------------------ Grüße Jörgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Charly Setter Moderator
Beiträge: 11977 Registriert: 28.05.2002 Der vernünftige Mensch paßt sich der Welt an; der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen.<P>Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab. (George Bernard Shaw)
|
erstellt am: 19. Nov. 2002 20:23 <-- editieren / zitieren --> Unities abgeben: Nur für Pisarz
|
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012 64Bi
|
erstellt am: 19. Nov. 2002 21:57 <-- editieren / zitieren --> Unities abgeben: Nur für Pisarz
Hallo, Du wirst es nicht glauben, welches "issue" ich heute bei ADN eröffnet habe. Und natürlich noch keine Antwort bekommen. Ich glaube langsam, dass Du Gedanken lesen kannst Aber, wtf ist If InStr(sGMS, "|" + sPitch + "|") > 0 Then ?!? Sag nur nicht, dass + = & ?!? Muhahaha... Komische Sprachen gibt es Naja, Gott segne Dich daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
steffl Mitglied Maschinenbautechniker
Beiträge: 294 Registriert: 13.03.2002
|
erstellt am: 20. Nov. 2002 07:51 <-- editieren / zitieren --> Unities abgeben: Nur für Pisarz
Morgen, gut dass sich mal jemand darüber gedanken gemacht hat. Den das hat mich die ganze zeit schon genervt! Hoffe nur daß das mal ein ansporn für autodesk ist es besser zu machen! Gruß Stefan ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WoisetJo Mitglied Konstrukteur
Beiträge: 323 Registriert: 11.06.2002 SW2009 - Fremdgeher, der es sich nicht verkneifen kann im Inventorforum zu spionieren
|
erstellt am: 20. Nov. 2002 08:12 <-- editieren / zitieren --> Unities abgeben: Nur für Pisarz
Ob es besser wird, kann niemand vorhersehen, es wird anders gelöst werden, wieder neue Probleme geben, neue Lösungen werden von den Usern vorgeschlagen..... Eigentlich wollten wir ja NUR eine richtige Gewindebezeichnung, oder ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lucky Cad Mitglied ...Malen nach Zahlen...
Beiträge: 699 Registriert: 11.11.2002 Intel Core i9-11900KK 32GB Ram NVIDIA RTX A4000 Spacemouse XT plus Inv Professional 2023.4.1 Vault Professional 2023.4.1 Win11
|
erstellt am: 20. Nov. 2002 08:16 <-- editieren / zitieren --> Unities abgeben: Nur für Pisarz
Hallo, ich habe eben mal direkt die Makros getestet, erhalte jedoch nur diese Fehlermeldung. Was habe ich falsch gemacht? Ansonsten finde ich die Sache super, ich frage mich nur, wie ich demnächst den Werkzeugbau weiter irritieren kann Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pisarz Mitglied
Beiträge: 280 Registriert: 05.03.2002 AIP2011 Win7x64 HP Z400/W3565(3.2GHz) 12GB RAM 100GB SSD / 1TB Raid1 MSI R5770 Hawk SpacePilot
|
erstellt am: 20. Nov. 2002 10:53 <-- editieren / zitieren --> Unities abgeben:
@Lucky Cad: 'Tschuldigung, hab vergessen zu sagen, das es erst ab IV6 funktioniert. @daywalker: Das + ist schon seit Unzeiten ein gültiger Zeichenkettenzusammenkleber in Basic. Das & ist glaube ich erst dazugekommen, als Excel modern wurde.... Noch ein kleiner Nachtrag zum Thema Gewindebezeichnung: Wer Linksgewinde verwendet, muss die Gewindeklasse anzeigen, da der Hinweis "LH" Bestandteil der Klasse ist. Ist ja auch völlig logisch, denn ob Links- oder Rechtsgewinde ist ja nun mal eine Toleranzfrage...
------------------ Grüße Jörgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012 64Bi
|
erstellt am: 22. Nov. 2002 08:19 <-- editieren / zitieren --> Unities abgeben: Nur für Pisarz
Hallo Pisarz, endlich mal Zeit gefunden Dein Quelltext näher anzuschauen. Einfach super. Ich konnte dabei sehr viel lernen. Weiter so, wir wollen mehr davon. Das einzige, dass ich anders machen würde, sind die Dim sGMS As String Dim sGOS As String
Wären da nicht zwei Array's besser ? Auch bei der Suche If bZuRegel Then 'Verbergen: Suche in GMS, ersetzte durch GOS If InStr(sGMS, "|" + sPitch + "|") > 0 Then Regelgewinde = Mid(sGOS, InStr(sGMS, "|" + sPitch + "|") + 1, 10) Regelgewinde = Left(Regelgewinde, InStr(Regelgewinde, "|") - 1) End If Else 'Wiederherstellen If InStr(sGOS, "|" + sPitch + "|") > 0 Then Regelgewinde = Mid(sGMS, InStr(sGOS, "|" + sPitch + "|") + 1, 10) Regelgewinde = Left(Regelgewinde, InStr(Regelgewinde, "|") - 1) End If End If
denke ich, dass man da über den Index schneller weiter kommen könnte. Ausserdem dachte ich, dass es bei 256 Zeichen schluß mit lustig ist bei einem String, aber so kann man sich ( als Excel Generation ) täuschen. ------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pisarz Mitglied
Beiträge: 280 Registriert: 05.03.2002 AIP2011 Win7x64 HP Z400/W3565(3.2GHz) 12GB RAM 100GB SSD / 1TB Raid1 MSI R5770 Hawk SpacePilot
|
erstellt am: 22. Nov. 2002 13:51 <-- editieren / zitieren --> Unities abgeben:
Hi Daywalker, Ich hatte nicht so sehr darüber nachgedacht, es schien mir vom Gefühl her die einfachste und schnellste Variante zu sein, außerdem die geringste Tipparbeit. Ich habe jetzt mal eine Array-Variante programmiert, weil es mich interessiert, wie schnell die ist. Hier der (gekürzte) Code:
Code:
Private Function Regelgewinde2(bZuRegel As Boolean, sPitch As String) As String Dim sGMS(39) As String Dim sGOS(39) As String Dim I As Integer sGMS(0) = "M1x0.25" sGMS(1) = "M1.1x0.25" .... sGMS(38) = "M64x6" sGMS(39) = "M68x6"
sGOS(0) = "M1" sGOS(1) = "M1,1" .... sGOS(38) = "M64" sGOS(39) = "M68" Regelgewinde2 = sPitch If bZuRegel Then For I = 0 To 39 If sPitch = sGMS(I) Then Regelgewinde2 = sGOS(I) Exit For End If Next Else ....... End If End Function
Der Testlauf dürfte dich überraschen: bei M1 (ein For-Next Durchlauf): InStr = 3µs, Array = 29µs bei M68 (40 For-Next Durchläufe): InStr = 7µs, Array = 36µs Das Problem ist der Aufbau des Arrays. Das Füllen der Werte dauert alleine schon länger als der gesamte Durchlauf der InStr-Routine. Es macht meist Sinn, beim VBA-Programmieren auf interne Funktionen zu setzen, da diese effektiver programmiert sind als man es selbst nachbauen könnte. Man müsste jetzt also das Feld außerhalb aufbauen und als Globale Variable im Speicher halten, dann sieht es etwas anders aus. Aber bei den Zeiten, die diese Routine verbraucht, ist das verlorene Liebesmühe... So, genug gespielt, wieder an die Arbeit.... BTW: Strings in VB dürfen 64K groß sein. ------------------ Grüße Jörgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012 64Bi
|
erstellt am: 22. Nov. 2002 15:01 <-- editieren / zitieren --> Unities abgeben: Nur für Pisarz
Ja, ich bin schon ein wenig überascht. Aber jetzt fehlt mir wieder ein Beispiel, wo ein 100MB grosser String durchsucht wird. Und das dauerte auch nur Bruchteile von Sekunden. Der Witz ist, dass binär gesucht wird. Wenn ich mich nicht täusche, kann man in "instr" sogar optional auf binär umstellen (bin mir aber nicht sicher, da ich schon zuhause bin). Bzw. binär ist die Standard Einstellung. Zu den Arrays, selbst wenn die in dem Speicher wären, würde die Suche doppelt so lang dauern. Hätte ich nicht gedacht. Die Strings dürfen 64K gross sein ?!? Naja, ich war ja nah dran Danke für die interessanten Infos, und Sorry, dass ich dir unnötig Arbeit gemacht habe. Ich hätte es auch ausprobieren können, aber zur Zeit ist das fürchtbar mit der Zeit. ------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|