| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Schriftfelder (1634 mal gelesen)
|
Philipp-M Mitglied Bauzeichner
Beiträge: 157 Registriert: 15.06.2004 AutoCAD LT 2021 Windows 7 Plotter HP-DJ-T1100 Drucker Olivetti 200MF Drucker Olivetti mf201
|
erstellt am: 13. Aug. 2009 08:54 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, stelle mir gerade einen automatischen Schriftkopf zusammen. Frage: wenn ich bei einem Layout bei Revisionsdatum und Revisionsnummer nichts ausfülle, da es noch keine Revision gibt kommt beim Schriftfeld Revisionsdatum und Rev.nummer ----. Diese werden auch gedruckt. Kann ich das irgendwie verhindern, es sollte einfach nicht gedruckt werden. Danke schon mal im Voraus ------------------ Philipp Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 Kinder, kauft Kämme! Es kommen lausige Zeiten.
|
erstellt am: 13. Aug. 2009 13:58 <-- editieren / zitieren --> Unities abgeben: Nur für Philipp-M
Hi, so ganz weiß ich nicht, was Du tust/vorhast. Woraus holt sich Dein Schriftfeld seine Info? Warum benutzt Du überhaupt ein Schriftfeld und nicht (für diese 2 Einträge) ein "normales" Attribut? Weil bislang keine Antwort kam, ne Schmiererei, weil ich derzeit ein bißchen mit VBA rumspiele:
Code: Sub FelderOhneInhaltWeiss() Dim a% Dim lay As AcadLayout Dim blk As AcadEntity Dim ent As AcadEntity Dim varAttributRef Dim color As AcadAcCmColor Set color = AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.18") Call color.SetRGB(255, 255, 255)For Each lay In ThisDrawing.Layouts If lay.Name <> "Model" Then For Each blk In lay.Block If TypeOf blk Is AcadBlockReference Then If blk.HasAttributes Then varAttributRef = blk.GetAttributes For a = LBound(varAttributRef) To UBound(varAttributRef) If varAttributRef(a).TextString = "----" Then varAttributRef(a).TrueColor = color Else: varAttributRef(a).color = acByBlock End If Next a End If Next blk End If Next lay End Sub
Setzt Dir die TrueColor von allen Attributen in allen Blöcken in allen Layouts auf 255,255,255 (also weiße Schrift auf weißem Grund), wenn der Inhalt = "----" ist. Aber das ist nicht wirklich sinnvoll in meinen Augen zumindest: a) weil der "code" nicht schön sein wird, ich bitte hier ausdrücklich um Mäkeleien/Verbesserungesvorschläge b) weil Programmierkrücken immer blöde sind > c) weil man das vielleicht doch besser anders lösen sollte (s.o. Vorschlag mit "normalem" Attribut ohne Feld) d) weil das aus meinen Testdaten entstanden ist und damit wahrscheinlich nicht auf Deine Bedürfnisse zugeschnitten ist.Hab jetzt auch lang überlegt, ob ich es überhaupt reinstellen soll, erhoffe mir aber konstruktive Kritik an meinem Geschmiere, so haben wir vielleicht beide was von Deiner Frage ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info | Excel -Suche | RuA-Suche | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 13. Aug. 2009 14:28 <-- editieren / zitieren -->
Hi runkelruebe, kleine Korrektur und dann noch ein Vorschlag. Der zu tauschende Teil wäre:
Code: If blk.HasAttributes Then varAttributRef = blk.GetAttributes For a = LBound(varAttributRef) To UBound(varAttributRef) If varAttributRef(a).TextString = "----" Then varAttributRef(a).TrueColor = color Else varAttributRef(a).color = acByBlock End If Next a End If
...sodaß die 'For...Next'-Schleife nicht angesprungen wird, wenn die BlockReference keine Attribute hat.Und der Vorschlag wäre dann noch, nicht die Farbe des Attributs auf RGB(255,255,255) zu setzen (denn in diesem Fall ist die Originalfarbe verloren und ob diese dann auf acByBlock zu setzen ist oder nicht?), sondern die Eigenschaft '.Visible' zu verwenden, also: varAttributRef(a).Visible = False 'bzw. zum Sichtbarmachen auf True Nachteil dieser Variante allerdings: diese Eigenschaft ('.Visible') kann nicht von AutoCAD aus gesteuert werden, damit kann man ohne Programmierung den Wert nicht mehr umsetzen. - alfred - ------------------ www.hollaus.at |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 13. Aug. 2009 14:31 <-- editieren / zitieren --> Unities abgeben: Nur für Philipp-M
|
Philipp-M Mitglied Bauzeichner
Beiträge: 157 Registriert: 15.06.2004
|
erstellt am: 13. Aug. 2009 14:38 <-- editieren / zitieren --> Unities abgeben:
erstmal danke. die infos werden aus den Planeigenschaften im Manager für Planungsunterlagen, die ich zuvor dort eingebe. Ich möchte nur einen Plankopf erarbeiten, bei den ich mehrere Schriftfelder einfüge. Sollte ein Schriffeld leer bleiben weil nicht ausgefüllt wurde soll da eben nicht ---- stehen sonder nichts. Habe jetzt aber gesehen dass wenn ich einfach ein Leerzeichen eingebe ich den gewünschten Effekt habe. Solltet ihr noch einen anderen Vorschlag haben bin ich trotzdem dankbar, beim Programmieren kenne ich mich nähmlich nicht so aus und dann müsste ich es auch bei meinen Kollegen einstellen und das möchte ich nicht. ------------------ Philipp Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 13. Aug. 2009 14:45 <-- editieren / zitieren -->
Hi Phillip, Zitat: Habe jetzt aber gesehen dass wenn ich einfach ein Leerzeichen eingebe ich den gewünschten Effekt habe
...wenn Du WO einen Leerschritt eingibst? Wenn Du mit 'Leerschritt eingeben' meinst, dass Du diesen Leerschritt im Attributswert eingibst, dann ist Deine Beschriftungsfunktion dieses Attributs aber auch aufgehoben! Sprich wird später mal eine Revision/Datum vergeben, wird das Attribut nicht mehr befüllt. - alfred - ------------------ www.hollaus.at |
Philipp-M Mitglied Bauzeichner
Beiträge: 157 Registriert: 15.06.2004
|
erstellt am: 13. Aug. 2009 15:24 <-- editieren / zitieren --> Unities abgeben:
|
| Simulationsingenieur (m/w/d) Insassenschutz | Die besten Köpfe für die unterschiedlichsten Aufgaben finden. Menschen und Technologien verbinden, und zwar täglich aufs Neue - dafür schätzen unsere Kunden FERCHAU. Unterstütze uns: als ambitionierte:r Mitarbeiter:in für einen unserer Kunden, der wie wir Technologien auf die nächste Stufe bringen möchte. Wir realisieren spannende Projekte für namhafte OEMs und Zulieferer der Automobilindustrie und überzeugen täglich mit fundierter Expertise und fachlichem Know-how.... | Anzeige ansehen | Weitere: Ingenieure und technische Berufe |
|
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 Kinder, kauft Kämme! Es kommen lausige Zeiten.
|
erstellt am: 13. Aug. 2009 21:43 <-- editieren / zitieren --> Unities abgeben: Nur für Philipp-M
N'Abend, Also abfliegen tut das Ding auch ohne die kleine Korrektur im Bereich der Attributsschleife nicht, aber nur, weil ich das array nicht leer mache und wenn der Block ohne Attribute nicht der erste ist, der kommt, sonst tschüß Also: Korrektur natürlich sinnvoll! >> varAttributRef(a).Visible = False 'bzw. zum Sichtbarmachen auf True >> Nachteil dieser Variante allerdings: diese Eigenschaft ('.Visible') kann nicht von AutoCAD aus gesteuert werden, >> damit kann man ohne Programmierung den Wert nicht mehr umsetzen. Für mich damit Ausschlußkriterium. Funktionieren tut es aber selbstverständlich trotzdem, dann auch gleich mit ner kleinen Umstellung, so dass Werte <> "----" immer wieder sichtbar/acByBlock werden. Per PM kam noch : >> Set color = new AcadAcCmColor -> nicht so versionsanfällig OK, das andere kam aus dem ACAD-Hilfe-Beispiel ;-) >> auf isLayout prüfen, erspart dieses lay.Name <> "Model" und läßt XRefs außen vor Ich verstehe jetzt den Vorteil einer Änderung nicht. Ich frage doch mit For Each lay In ThisDrawing.Layouts schon nur die Layouts ab und dort mit TypeOf blk Is AcadBlockReference sollte auch alles ausreichen? Allerdings werden XRefs trotzdem mit angesprochen. hmm, denk ich nochmal drüber nach, es werden ja wohl keine blocklosen Attribute drin sein. ;-) Nachdem es aber mehr oder weniger OffTopic ist, denn Philipps Frage ist ja gelöst, breche ich hier ab. Vielen Dank für alle Ratschläge! Einarbeitungen anbei.
------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info | Excel -Suche | RuA-Suche | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|