| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Zeichnung: Linien usw. in den Vordergrund bringen (7192 mal gelesen)
|
MHK-Innovation Mitglied Entwicklungsingenieur
Beiträge: 30 Registriert: 06.04.2014
|
erstellt am: 23. Mai. 2014 05:17 <-- editieren / zitieren --> Unities abgeben:
Hallo allerseits, vor einiger Zeit hatte ich mich mit eigenen Zeichnungsvorlagen beschäftigt. So nach und nach habe ich dann auch alles so hinbekommen, wie ich es mir vorgestellt hatte. Nur eine Sache ist mir immer wieder ins Auge gesprungen, auch wenn das jetzt nicht wirklich ein großes Thema ist: Die später eingefügten Linien in skizierten Symbolen, Zeichnungsrahmen, Schriftfeld usw. liegen naturgemäß über den früher eingefügten Linien; und beim Schriftfeld z.B., bei mir mit verschiedenen Farben für dicke und dünne Linien, fällt es doch dann (zumindest mir als Ersteller) auf, daß manche dünnen Linien eben über den dicken liegen, andere darunter. Vor allem wenn ich mir eine PDF-Ausgabe zum Kontrollieren der letzten Vorlagen-Änderungen anschaue. In dem Bereich hatte ich vorher unter Inventor nicht viel zu tun gehabt, daher fällt mir als einzige Abhilfe ein, alle dicken Linien zu verschieben, an den ursprünglichen Ort zu kopieren und die verschobenen zu löschen. Nicht gerade sehr förderlich für den Projektfortschritt ;-) Da das Ganze aber natürlich auch in anderen Zeichnungselementen, Zeichnungsrahmen usw. auftritt, wäre es nicht schlecht, wenn jemand ein Skript hätte, das das automatisch erledigt. Meinetwegen auch über die ganze Zeichnung hinweg, gern natürlich auch nur über das jeweils aktive Symbol etc. In meinem Fall liegen die Linien eines Schriftfeldes z.B. auf demselben Layer und sind nur in Linienstärke und Farbe verschieden, das sollte natürlich idealerweise von dem Skript abgedeckt werden. Ist jemandem da etwas fertiges bekannt? Vielen Dank im Voraus schon mal! Grüße Stephan ------------------ QR-Code als DXF-Datei erstellen: http://webtools.mhk-i.com/qr2dxf/ [Diese Nachricht wurde von MHK-Innovation am 23. Mai. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MHK-Innovation Mitglied Entwicklungsingenieur
Beiträge: 30 Registriert: 06.04.2014
|
erstellt am: 28. Mai. 2014 07:14 <-- editieren / zitieren --> Unities abgeben:
|
freierfall Ehrenmitglied V.I.P. h.c. Techniker
Beiträge: 11571 Registriert: 30.04.2004 WIN10 64bit, 32GB RAM IV bis 2022
|
erstellt am: 28. Mai. 2014 07:57 <-- editieren / zitieren --> Unities abgeben: Nur für MHK-Innovation
|
Lothar Boekels Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau und CAD-Trainer
Beiträge: 3833 Registriert: 15.02.2001 DELL Precision 7520 Win10Pro-64 Inventor mit Vault Professional 2024 --------------------- Während man es aufschiebt, verrinnt das Leben. Lucius Annaeus Seneca (ca. 4 v. Chr - 65 n. Chr.)
|
erstellt am: 28. Mai. 2014 09:16 <-- editieren / zitieren --> Unities abgeben: Nur für MHK-Innovation
Hallo Stephan, warum hast Du denn an der gleichen Stelle mehrere Linien übereinander? Wenn die Farbe und Linienstärke an dieser Stelle für Dich wichtig ist, dann mache dort eben nur eine einzige Linie hin. Es gibt im Inventor nach meinem Wissen keine Möglichkeit, die Linienreihenfolge mit VBA o.ä. zu verändern. ------------------ mit freundlichem Gruß aus Mönchengladbach Lothar Boekels ----------------------------------------------------- Wir unterstützen die Arbeit der Rettungshundestaffel des DRK in Viersen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MHK-Innovation Mitglied Entwicklungsingenieur
Beiträge: 30 Registriert: 06.04.2014
|
erstellt am: 28. Mai. 2014 12:40 <-- editieren / zitieren --> Unities abgeben:
Naja, z.B. ein Skript das die Linien einer Farbe woandershin verschiebt, dann zurück kopiert, und die verschobenen löscht (oder das dem Benutzer überläßt - allein das automatische Auswählen aller Linien einer Farbe und/oder einer Linienstärke ist ja schonmal ganz hilfreich). Wenn es keinen besseren Weg gibt. Ich hatte gehofft, daß es etwas Sinnvolleres gäbe, z.B. einen Block aus den Linien einer Farbe erstellen und danach wieder auflösen. Oder irgendeinen anderen Behelfsvorgang. ?? ------------------ QR-Code als DXF-Datei erstellen: http://webtools.mhk-i.com/qr2dxf/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nightsta1k3r Ehrenmitglied V.I.P. h.c. plaudern
Beiträge: 11273 Registriert: 25.02.2004 Hier könnte ihre Werbung stehen!
|
erstellt am: 28. Mai. 2014 13:15 <-- editieren / zitieren --> Unities abgeben: Nur für MHK-Innovation
|
jupa Ehrenmitglied V.I.P. h.c. Ruheständler
Beiträge: 6052 Registriert: 16.09.2004 Inventor Prof. bis 2022
|
erstellt am: 28. Mai. 2014 14:23 <-- editieren / zitieren --> Unities abgeben: Nur für MHK-Innovation
|
MHK-Innovation Mitglied Entwicklungsingenieur
Beiträge: 30 Registriert: 06.04.2014
|
erstellt am: 31. Mai. 2014 19:03 <-- editieren / zitieren --> Unities abgeben:
Ist das jetzt der Punkt, wo ich mich für die Unterstützung bedanken sollte? ;-) Ich hatte eigentlich gehofft, daß jemand ein VB-Skript aus dem ärmel schüttelt, das zumindest Grundfunktionen dafür enthält, wie eben z.B. Linien einer bestimmten Farbe woanders hin zu verschieben, und vielleicht hätte ja jemand sogar darauf aufgebaut und noch etwas hinzugefügt. Meine Linien liegen übrigens nicht parallel aufeinander, sondern kreuzend und meist rechtwinklig. Trotzdem nervt das, wenn man immer wieder drüber stolpert. Bei Ansichten usw. stört mich das ja nicht weiter, aber beim Schriftfeld und Zeichnungsrahmen möchte ich einfach eine saubere Vorlage haben. Eine so ausführliche Diskussion war aber tatsächlich nicht mein Ziel. 5 Zeilen Code täten es durchaus auch schon ;-) ------------------ QR-Code als DXF-Datei erstellen: http://webtools.mhk-i.com/qr2dxf/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nightsta1k3r Ehrenmitglied V.I.P. h.c. plaudern
Beiträge: 11273 Registriert: 25.02.2004 Hier könnte ihre Werbung stehen!
|
erstellt am: 01. Jun. 2014 08:43 <-- editieren / zitieren --> Unities abgeben: Nur für MHK-Innovation
Zitat: Original erstellt von MHK-Innovation: Trotzdem nervt das, wenn man immer wieder drüber stolpert.
Wenn du genügend Mitstreiter findest und eine Lizenzanzahl dahinter steht wird es Autodesk sicher machen, die wollen ja Geld verdienen, wird eventuell diese CorelDraw-Funktion eingebaut. Aber da das Problem anscheinend nicht nur mir noch nie untergekommen ist und für die 2D-Ausgabe so was von egal ist (siehe oben) ist halt der Druck nur marginal.
------------------
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: 01. Jun. 2014 10:48 <-- editieren / zitieren --> Unities abgeben: Nur für MHK-Innovation
Moin Mit 5 Zeilen Code ist es da nicht ganz getan. Um mal zu deiner eigentlichen Frage Stellung zu beziehen, ein Beispiel. Würde man Skizzenobjekte verschieben, zurückkopieren und die verschobenen Originale löschen wärst du der Erste der heulend vor seiner komplett Bemaßungs- und Abhängigkeitenfreien Skizze sitzen würde. Da kommt richtig Freude auf, wenn die nächste Änderung ansteht. Und weil mir eh immer keiner glaubt, bitte probiers selbst aus. Der Code funktioniert mit Linien die auf verschiedenen Layern liegen. Was bei dir dicke und dünne Linien sind, steht nirgends. Daher habe ich keine Ahnung wie man das als Auswahlkriterium nutzen soll. Alles auf einen Layer und dann Strichstärke und Farbe überschreiben - dafür gab's bei uns zu AutoCAD-Zeiten schon Teeren und Federn. Code: Sub MoveSketchObjects() ' Check to make sure a sketch is open. If Not TypeOf ThisApplication.ActiveEditObject Is Sketch Then MsgBox "A sketch must be active." Exit Sub End If ' Set a reference to the active sketch. Dim oSketch As Sketch Set oSketch = ThisApplication.ActiveEditObject ' Select Object specifying layer Dim oSel As SketchEntity Set oSel = ThisApplication.CommandManager.Pick(kSketchDefaultFilter, "Quellobjekt auswählen ...") ' Get Layer name Dim sLayername As String sLayername = oSel.Layer.Name ' Create a vector along the x-axis. Dim oVec As Vector2d Set oVec = ThisApplication.TransientGeometry.CreateVector2d(5, 0) ' Create a reverting vector Dim oVec2 As Vector2d Set oVec2 = ThisApplication.TransientGeometry.CreateVector2d(-5, 0) Dim oSketchObjects As ObjectCollection Set oSketchObjects = ThisApplication.TransientObjects.CreateObjectCollection Dim oNewSketchObjects As ObjectCollection Set oNewSketchObjects = ThisApplication.TransientObjects.CreateObjectCollection ' Get all entities in the sketch Dim oSketchEntity As SketchEntity For Each oSketchEntity In oSketch.SketchEntities If Not oSketchEntity.Layer Is Nothing Then If oSketchEntity.Layer.Name = sLayername Then oSketchObjects.Add oSketchEntity End If End If Next 'Copy Sketch Objects along x-Axis Set oNewSketchObjects = oSketch.MoveSketchObjects(oSketchObjects, oVec, True) ' Delete original SketchObjects For Each oSketchEntity In oSketchObjects oSketchEntity.Delete Next 'Move back new Sketch Objects Call oSketch.MoveSketchObjects(oNewSketchObjects, oVec2) End Sub
------------------ MfG Ralf [Diese Nachricht wurde von rkauskh am 01. Jun. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MHK-Innovation Mitglied Entwicklungsingenieur
Beiträge: 30 Registriert: 06.04.2014
|
erstellt am: 01. Jun. 2014 16:18 <-- editieren / zitieren --> Unities abgeben:
Hallo, vorab schonmal vielen Dank für die Mühe, ich werde das mal laufen lassen, sobald ich am CAD-Rechner bin. Was die unterschiedlichen Farben im selben Layer angeht: Ich meine, das macht bei Schriftfeldern und Rahmen selbst AutoDesk so. Meine Schriftfelder kopiere ich aus Mechanical in Inventor rein, dann wird alles (inkl. Endpunkte) fixiert. Dort (und bei Zeichnungsrahmen) mit Bemaßungen zu arbeiten, halte ich für wenig zielführend, auch wenn praktisch alle es tun. Die Inventor-spezifischen Sachen wie variable Texte werden dann mit Verschiebe-Operationen aus dem Millimeter- Raster an die richtigen Positionen gebracht und am Ende ebenfalls fixiert. Bemaßungen betreffen mich in dem Bereich also gar nicht. Das wäre natürlich dann wirklich eine herausfordernde Aufgabe ;-) Da die dicken (und in meinem Fall schwarz / weißen Linien) in den Vordergrund sollen, aber ebenso auch die dünnen auf dem Layer AM_BOR liegen, muß ich nach wie vor nach Farben filtern. Da geht kein Weg dran vorbei. Schließlich macht es ja z.B. keinen Sinn, vom Zeichnungsrahmen oder vom Schriftfeld per Layerausblendung nur die dicken auszublenden, was ja ein wesentlicher Sinn von unterschiedlichen Layern ist. Natürlich könnte ich einen Layer AM_BOR_S einführen für die schmalen Linien, aber eine so hohe Priorität gebe ich der Kombination aus meinem anfänglichen Wunsch und meiner Faulheit dann auch wieder nicht ;-) Darf ich mal ganz brav fragen, ob die Filterung nach Farben doch auch noch im Gratis-Paket mit eingeschlossen werden könnte? ------------------ QR-Code als DXF-Datei erstellen: http://webtools.mhk-i.com/qr2dxf/ 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: 02. Jun. 2014 19:18 <-- editieren / zitieren --> Unities abgeben: Nur für MHK-Innovation
Hallo Sorry, ich war verhindert. Die Filterung nach Farben ist meiner Meinung möglich. Sind die Farben alle Überschreibungen oder ist eine davon die originale Layerfarbe? Sind die schwarzen/weißen Linien die mit Farbe "VonLayer" auf AM_BOR? Dann könnte man schonmal alle mit Farbüberschreibung ausfiltern und könnte die Userselektion rausnehmen. Wenn es für "dick" noch einen Zahlenwert oder ein "größer als x mm" Strichbreite gäbe, kämen wir der Sache weiter näher.
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MHK-Innovation Mitglied Entwicklungsingenieur
Beiträge: 30 Registriert: 06.04.2014
|
erstellt am: 02. Jun. 2014 19:33 <-- editieren / zitieren --> Unities abgeben:
Die dicken Linien sind zugleich schwarz/weiß und vermutlich (bin gerade nicht am CAD-Rechner) farblich vonLayer, müßte ich aber noch schauen. Evtl. die Alternative auskommentiert mit liefern (ich weiß, ich bin luxusverwöhnt ;-) ) Die dünnen Linien sind zugleich rot und haben die Farbüberschreibung. Dicken sind meines Wissens 0.50 mm und 0.25 mm. Die Funktion darf ruhig speziell auf diese konkreten Anwendungspunkte zugeschnitten sein. Ich mache mir außer bei der Zeichnungsvorlage ansonsten keine Mühe mit der Linienreihenfolge. ------------------ QR-Code als DXF-Datei erstellen: http://webtools.mhk-i.com/qr2dxf/ 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: 04. Jun. 2014 21:48 <-- editieren / zitieren --> Unities abgeben: Nur für MHK-Innovation
Hallo Ich hab's jetzt so geändert, das keine "Musterlinie" gewählt werden muss, sondern alle Objekte ohne Farbüberschreibung mit Strichstärke 0,5mm bearbeitet werden. Probier's mal aus. Code:
Sub MoveSketchObjects() ' Check to make sure a sketch is open. If Not TypeOf ThisApplication.ActiveEditObject Is Sketch Then MsgBox "A sketch must be active." Exit Sub End If ' Set a reference to the active sketch. Dim oSketch As Sketch Set oSketch = ThisApplication.ActiveEditObject ' Create a vector along the x-axis. Dim oVec As Vector2d Set oVec = ThisApplication.TransientGeometry.CreateVector2d(5, 0) ' Create a reverting vector Dim oVec2 As Vector2d Set oVec2 = ThisApplication.TransientGeometry.CreateVector2d(-5, 0) Dim oSketchobjects As ObjectCollection Set oSketchobjects = ThisApplication.TransientObjects.CreateObjectCollection Dim oNewSketchObjects As ObjectCollection Set oNewSketchObjects = ThisApplication.TransientObjects.CreateObjectCollection On Error Resume Next ' Get all entities in the sketch Dim oSketchEntity As SketchEntity For Each oSketchEntity In oSketch.SketchEntities If Not oSketchEntity.Type = kSketchPointObject Then If oSketchEntity.OverrideColor Is Nothing Then If Round(oSketchEntity.LineWeight, 2) = 0.05 Then oSketchobjects.Add oSketchEntity End If End If End If Next On Error GoTo 0 'Copy Sketch Objects along x-Axis Set oNewSketchObjects = oSketch.MoveSketchObjects(oSketchobjects, oVec, True) ' Delete original SketchObjects For Each oSketchEntity In oSketchobjects oSketchEntity.Delete Next 'Move back new Sketch Objects Call oSketch.MoveSketchObjects(oNewSketchObjects, oVec2) End Sub
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MHK-Innovation Mitglied Entwicklungsingenieur
Beiträge: 30 Registriert: 06.04.2014
|
erstellt am: 10. Jun. 2014 20:03 <-- editieren / zitieren --> Unities abgeben:
|
MHK-Innovation Mitglied Entwicklungsingenieur
Beiträge: 30 Registriert: 06.04.2014
|
erstellt am: 23. Aug. 2014 16:36 <-- editieren / zitieren --> Unities abgeben:
Also... das letzte Skript läuft bei mir in Inventor 2010 nicht richtig. Ich hatte auch zwischendurch alle Abhängigkeiten entfernt und verschiedene Lineinstärken (0.05, 0.25, 0.5) getestet. Bei der Zeile Set oNewSketchObjects = oSketch.MoveSketchObjects(oSketchobjects, oVec, True) erscheint der gelbe Balken beim Debuggen. Ist das so gewollt, daß die Funktion rekursiv läuft? ------------------ QR-Code als DXF-Datei erstellen: http://webtools.mhk-i.com/qr2dxf/ [Diese Nachricht wurde von MHK-Innovation am 23. Aug. 2014 editiert.] 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: 05. Sep. 2014 21:50 <-- editieren / zitieren --> Unities abgeben: Nur für MHK-Innovation
Hallo Ist eventuell die ObjectCollection oSketchobjects leer? Wenn der Debugger dort stehen bleibt, füge mal eine Überwachung für oSketchobjects und sieh dir den Inhalt an. Man kann das auch im Code berücksichtigen. Füge bitte zwischen die Zeilen
Code: On Error GoTo 0 'Copy Sketch Objects along x-Axis
den hier ein:
Code: If oSketchObjects.Count=0 Then MsgBox("Keine passenden Objekte gefunden. Abbruch") Exit Sub End If
Rekursion? Hab ich nicht eingebaut. Aber da die API keine Funktion bietet mit einem Filter alle gesuchten Objekte auf einmal auszuwählen, muß man in einer Schleife alle Objekte prüfen und wenn's paßt zur Auswahl hinzufügen. ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |