| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: ipt-Skizze Linienfarbe verändern (2626 mal gelesen)
|
Roland Schröder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13408 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 06. Mai. 2014 10:49 <-- editieren / zitieren --> Unities abgeben:
Moin! Weil ich das sehr oft benötige, würde ich gern ein Makro einrichten, um in ipt-Skizzen ausgewählten Linien schnell bestimmte Farben zu geben. So wie über RMK\Eigenschaften\Linienfarbe, nur halt schneller und nur für wenige Farben. Kann mir da vielleicht jemand das nötige Zauberwort verraten? ------------------ Roland www.Das-Entwicklungsbuero.de It's not the hammer - it's the way you hit! 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 Alienware m17x, Win7, Inventor2012
|
erstellt am: 06. Mai. 2014 12:02 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
|
Roland Schröder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13408 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 06. Mai. 2014 12:42 <-- editieren / zitieren --> Unities abgeben:
Hi Igor! Ja, das sieht schon gut aus. Danke! Kann man damit die aktuelle Farbe auch Abfragen? Und auch auf "Vorgabe" zurückstellen? Ich würde dann nämlich gern, damit ich nur ein Icon platzieren muss, einen Reihenfolge-Schalter basteln: ... -> Vorgabe -> Weiß -> Gelb -> Cyan -> Vorgabe -> ... ------------------ Roland www.Das-Entwicklungsbuero.de It's not the hammer - it's the way you hit! 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 Alienware m17x, Win7, Inventor2012
|
erstellt am: 06. Mai. 2014 14:02 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
Ok, das bedarf ein bisschen mehr Logik. Code:
' Macro toggles the selected objects colors ' Object must contain the property OverrideColor ' FX64, Igor Zupevc, 06.05.2014 Sub ToggleSelectedObjectsColors() Dim object As Object For Each object In ThisApplication.ActiveDocument.SelectSet On Error Resume Next ' Only for objects supporting OverrideColor If object.OverrideColor Is Nothing Then object.OverrideColor = GetColorFromName("White") ElseIf GetColorName(object.OverrideColor) = "White" Then object.OverrideColor = GetColorFromName("Yellow") ElseIf GetColorName(object.OverrideColor) = "Yellow" Then object.OverrideColor = GetColorFromName("Cyan") ElseIf GetColorName(object.OverrideColor) = "Cyan" Then object.OverrideColor = GetColorFromName("Default") End If ThisApplication.ActiveDocument.SelectSet.Select object ThisApplication.StatusBarText = "Current selected objects color: " & GetColorName(object.OverrideColor) Next End SubFunction GetColorName(currentRGB As Inventor.Color) As String If currentRGB Is Nothing Then GetColorName = "Default" Exit Function End If If currentRGB.Red = 255 And currentRGB.Green = 255 And currentRGB.Blue = 0 Then GetColorName = "Yellow" If currentRGB.Red = 255 And currentRGB.Green = 255 And currentRGB.Blue = 255 Then GetColorName = "White" If currentRGB.Red = 0 And currentRGB.Green = 255 And currentRGB.Blue = 255 Then GetColorName = "Cyan" End Function Function GetColorFromName(colorName As String) As Object If colorName = "White" Then Set GetColorFromName = ThisApplication.TransientObjects.CreateColor(255, 255, 255) If colorName = "Yellow" Then Set GetColorFromName = ThisApplication.TransientObjects.CreateColor(255, 255, 0) If colorName = "Cyan" Then Set GetColorFromName = ThisApplication.TransientObjects.CreateColor(0, 255, 255) If colorName = "Default" Then Set GetColorFromName = Nothing End Function
Anmerkung: Da nach jeder Ausführung die Selektion der Objekte verloren geht werden diese automatisch neu selektiert, so dass die Funktion erneut (fortlaufend) angewendet werden kann. Das Problem dabei ist, dass die selektierten Objekte „in Selektionsfarbe“ dargestellt werden und es ist nicht zu erkennen ob sich die Farbe wirklich wie gewünscht geändert hat. Um diese Problematik ein wenig zu entschärfen wird in der Statusbar von Inventor die aktive Farbe ausgegeben.
------------------ Grüße Igor FX64 Software Solutions - Inventor Tools FX64 LambdaSpect - Lichtsimulation mit Autodesk Inventor Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Roland Schröder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13408 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 06. Mai. 2014 14:19 <-- editieren / zitieren --> Unities abgeben:
Uff! Das ist dann ja doch ziemlich lang! Das wollte ich nicht von Dir verlangen, aber ob ich das mit den erwähnten Schwierigkeiten selber geschafft hätte, ist auch fraglich. Na egal, nochmals besten Dank, und dann will ich das gleich mal testen. Das mit dem automatischen Löschen der Auswahl ist allerdings sonderbar. Beim Ändern z.B. auf Konstruktionslinienstil oder zurück mit der normal dafür vorhandenen Funktion im RMK-Menü bleibt die Auswahl erhalten, was mich ständig nervt, weil es immer wieder zu unbeabsichtigten Änderungen führt, wenn man anschließend eine andere Linie mit RMK zu wählen glaubt. Und hier bei dem VBA-Code wird die Auswahl nun gelöscht. Gibt es da irgendeinen Sinn hinter? ------------------ Roland www.Das-Entwicklungsbuero.de It's not the hammer - it's the way you hit! [Diese Nachricht wurde von Roland Schröder am 06. Mai. 2014 editiert.] 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 Alienware m17x, Win7, Inventor2012
|
erstellt am: 06. Mai. 2014 14:38 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
|
Roland Schröder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13408 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 06. Mai. 2014 18:36 <-- editieren / zitieren --> Unities abgeben:
Hi Igor, im Test zeigt sich, dass die Wiederherstellung der Auswahl immer nur für das erste Objekt gelingt. Es zeigt sich aber außerdem, dass das mit dem Toggeln unpraktisch ist, wenn man das Ergebnis nicht direkt sieht. Das Lesen ganz unten links ist kein Ersatz dafür. Ich werde mir wohl doch einzelne Funktionen daraus machen und die Wiederherstellung der Auswahl ganz weglassen. Und das krieg ich allein hin, glaub ich. ------------------ Roland www.Das-Entwicklungsbuero.de It's not the hammer - it's the way you hit! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Roland Schröder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13408 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 06. Mai. 2014 19:17 <-- editieren / zitieren --> Unities abgeben:
Moin! Hier der Code für einfache Schalter und dazu vier Icons. Die Namen der Icons sind jetzt so, dass das Modul, in dem der Code eingefügt wird, "SketchProperties" heißen muss. Wenn man das anders macht, müssen sie entsprechend umbenannt werden. Code: Sub ChangeSelectedObjectsColorToWhite() ' FX64, Igor Zupevc, 06.05.2014 Dim object As Object For Each object In ThisApplication.ActiveDocument.SelectSet On Error Resume Next ' Only for objects supporting OverrideColor object.OverrideColor = ThisApplication.TransientObjects.CreateColor(255, 255, 255) ' <- Modify RGB values to choose another color Next End Sub Sub ChangeSelectedObjectsColorToYellow() ' FX64, Igor Zupevc, 06.05.2014 Dim object As Object For Each object In ThisApplication.ActiveDocument.SelectSet On Error Resume Next ' Only for objects supporting OverrideColor object.OverrideColor = ThisApplication.TransientObjects.CreateColor(255, 255, 0) ' <- Modify RGB values to choose another color Next End Sub Sub ChangeSelectedObjectsColorToCyan() ' FX64, Igor Zupevc, 06.05.2014 Dim object As Object For Each object In ThisApplication.ActiveDocument.SelectSet On Error Resume Next ' Only for objects supporting OverrideColor object.OverrideColor = ThisApplication.TransientObjects.CreateColor(0, 255, 255) ' <- Modify RGB values to choose another color Next End Sub Sub ChangeSelectedObjectsColorToDefault() ' FX64, Igor Zupevc, 06.05.2014 Dim object As Object For Each object In ThisApplication.ActiveDocument.SelectSet On Error Resume Next ' Only for objects supporting OverrideColor object.OverrideColor = Nothing Next End Sub
------------------ Roland www.Das-Entwicklungsbuero.de It's not the hammer - it's the way you hit! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2580 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 08. Mai. 2014 16:17 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
Hallo @Igor Konnte man das Highlightning der Linien bei Auswahl nicht temporär ausschalten? Ich hab sowas ähnliches mal für Flächen gemacht. Da war das rot Einfärben der angeklickten Fläche auch hinderlich. War aber in einer AddIn-dll. Also mein Gedanke wäre das Ganze in einer Art Selektionsschleife laufen zu lassen. Einmal mit Farbe XY starten und dann immer wieder mit CommandManager.Pick einzelne Linien auswählen, die dann direkt umgefärbt werden. Man muss das Makro dann zwar mit ESC beenden, sollte aber verschmerzbar sein. ------------------ MfG Ralf 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 Alienware m17x, Win7, Inventor2012
|
erstellt am: 08. Mai. 2014 17:01 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
Hallo Ralf, man könnte das Highlighten auch zusätzlich manipulieren, ja, oder sich die Objekte aus der Selektion merken, oder, oder… Aber ich halte ohnehin die Version mit „Farben-Durchlauf“ nicht als beste Lösung. Es sind einfach zusätzliche Klicks / Tastendrücke gegenüber der aktuellen Version mit einzelnen Farben. Es ist im Prinzip das was du im zweiten Teil beschreibst nur in anderer Richtung und ohne zusätzlichen Zwang die Funktion mit Esc beenden zu müssen. Jedoch was ist wenn man sich "verklickt"? Schritt 1 Selektion: Was will ich bearbeiten – dieser Schritt ist unumgänglich und es ist nur die Frage ob der vor oder nach der Aktion durchgeführt werden soll – meiner Meinung nach ist es intuitiver erst die Selektion auszuführen. Schritt 2 Aktion: Was will ich mit Selektion machen – und hier finde ich am intuitivsten einfach eine Farbe aus der Werkzeugleiste zu wählen (1 Klick). Danach ist die Funktion automatisch beendet. ------------------ Grüße Igor
FX64 Software Solutions - Inventor Tools FX64 LambdaSpect - Lichtsimulation mit Autodesk Inventor Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2580 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 11. Mai. 2014 21:51 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
Hallo Stimmt auch wieder. Wenn man sich verklickt muß man den Radiergummibutton drücken, der die Farbe wieder entfernt. Die Pick Methode läß auch nur eine Einzelauswahl zu wenn ich nicht irre. Das könnte auch eher hinderlich sein, je nach Anwendungsszenario.
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Roland Schröder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13408 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 13. Mai. 2014 19:16 <-- editieren / zitieren --> Unities abgeben:
Moin! Ich habe die fraglichen Makros nun ein paar Tage in Benutzung und stelle grad fest, dass man Blöcke damit leider nicht umfärben kann. Vermutlich haben die nicht das im Code als notwendig aufgeführt "Object must contain the property OverrideColor". Schade, denn gerade bei Blöcken, mit denen ich gern verschiedene Stellungen von Hebeln in Skizzen darstelle, ist das Umfärben nützlich. Komischerweise kann man mit der Funktion Eigenschaften im Kontextmenü auch Blöcke ganz normal umfärben. Weiß jemand wie man das auch mit so einem Makro schaffen kann? Und noch etwas ist mir aufgefallen: Nach dem Anwenden des Makos kommt es vor, dass danach erzeugte Skizzenelemente auch in der Farbe gezeichnet werden, auf die man nur das gewählte Objekt umfärben wollte. Wie kann das sein?
------------------ Roland www.Das-Entwicklungsbuero.de It's not the hammer - it's the way you hit! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2580 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 13. Mai. 2014 19:29 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
Hallo Im SketchBlock.Color müßte die Eigenschaft "verborgen" sein. Also prüfen ob im SelectSet ein Skizzenblock enthalten ist und alternative Farbzuweisung probieren. Konnte man nicht in den Skizzeneigenschaften in einem Flyout im Ribbon eine Farbe festlegen? Kann grad nicht nachsehen. Kannst du mal prüfen ob dort umgestellt ist wenn'S wieder auftritt? Spontan hab ich keine Erklärung dafür. ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |