| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | Cideon Sparify - der digitale Ersatzteilkatalog für alle, ein Webinar am 15.10.2024
|
Autor
|
Thema: Dieselausdruck im Schriftfeld (5528 mal gelesen)
|
CADAGE Mitglied Technischer Zeichner
Beiträge: 6 Registriert: 19.02.2015 AutoCAD MEP 2015 Eplan P8 V.2.4
|
erstellt am: 08. Apr. 2015 12:36 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe neulich einen Plan erhalten, in dem in einem Schriftfeld ein Dieselausdruck verarbeitet wird. $(IF,$(=,$(SUBSTR,$(GETVAR,ctab),8,1),2),"Vorentwurfsplanung","") Wenn ich das richtig verstehe, holt man sich hier mit der Variable „ctab“ den Layoutnamen. Wenn in diesem Layoutnamen an der 8 Stelle von vorne eine „2“ steht, wird in das Schriftfeld „Vorentwurfsplanung“ geschrieben. (korrigiert mich bitte wenn ich falsch liege) Jetzt zu meinem Anliegen: Wir haben bei uns eine fest vorgeschriebene Plancodierung. Die sieht so aus: XXXXXX_GR_ELT_U1_001_M.dwg. Die Codierung variiert aber an der vorangestellten Projektnummer (mit XXXXXX gekennzeichnet). Die Projektnummer kann mal 6 oder auch mehr Stellen erhalten. In unserem Plankopf wird die Projektnummer auch separat (ohne den ganzen Rattenschwanz der restlichen Plancodierung) dargestellt. Das habe ich auch über einen Dieselausdruck gelöst. $(substr,$(getvar,dwgname),1,$(-,$(strlen,$(getvar,dwgname)),20)) Hier werden die Stellen von hinten aus dem Dateinamen gezählt, da der Rest der Plancodierung bis eben auf die vorangestellte Projektnummer immer die gleiche Stellenanzahl hat. Ich möchte den Dieselausdruck $(IF,$(=,$(SUBSTR,$(GETVAR,ctab),8,1),2),"Vorentwurfsplanung","") gerne so umbauen, dass er sich aus dem DWG Namen die Planungshase (hier „M“) holt und dann in einem Schriftfeld „Montageplan“ einträgt. Das ganze muss natürlich die vierte Stelle von hinten sein, da eben die vorangestellte variieren kann. Hier ein Versuch, wo er sich die 22 Stelle von vorne aus dem DWG-Namen holen soll. (War erstmal nur ein Test ob es überhaupt funzt.) $(IF,$(=,$(SUBSTR,$(GETVAR,dwgname),22,1),M),"Montageplan","") Das ganze scheint aber nicht zu funktionieren. Es steht dann $(IF,??) im Schriftfeld. Kann mir da jemand weiterhelfen? PS: Ich hoffe ich habe mich nicht zu verwirrt ausgedrückt. Vielen Dank vorab
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadwomen Ehrenmitglied V.I.P. h.c. Mädchen für fast alles
Beiträge: 3073 Registriert: 26.08.2002 ACAD R11 - 2022 (Plant3D) AVIS ACAD LT 2013- 2021 ZWCAD 2015 Versuch "nun ja" [s]History P3D 2012/(13) SP und Hotfix([/s]<P> Windows 10 / 64 Bit Xeon CPU 3.5GHz 16GB Ram NVIDIA Quadro P2000 3x Dell TV100 88P Monitore
|
erstellt am: 08. Apr. 2015 12:52 <-- editieren / zitieren --> Unities abgeben: Nur für CADAGE
Hallo CADAGE Zitat: Original erstellt von CADAGE: Hallo zusammen,ich habe neulich einen Plan erhalten, in dem in einem Schriftfeld ein Dieselausdruck verarbeitet wird. $(IF,$(=,$(SUBSTR,$(GETVAR,ctab),8,1),2),"Vorentwurfsplanung","") Wenn ich das richtig verstehe, holt man sich hier mit der Variable „ctab“ den Layoutnamen. Wenn in diesem Layoutnamen an der 8 Stelle von vorne eine „2“ steht, wird in das Schriftfeld „Vorentwurfsplanung“ geschrieben. (korrigiert mich bitte wenn ich falsch liege) Jetzt zu meinem Anliegen: Wir haben bei uns eine fest vorgeschriebene Plancodierung. Die sieht so aus: XXXXXX_GR_ELT_U1_001_M.dwg. Die Codierung variiert aber an der vorangestellten Projektnummer (mit XXXXXX gekennzeichnet). Die Projektnummer kann mal 6 oder auch mehr Stellen erhalten.Vielen Dank vorab
Die Stellenanzahl muss aber immer gleich sein da Diesel ab der Stelle 8 in dem Fall 1 Stelle weiter zählt und den Wert dann nimmt cu cw ------------------ Also ich finde Unities gut ... und andere sicher auch ------------------------------------------------ cadwomen™ Plant ist wie Öl suchen, je tiefer man bohrt desto mehr kommt ans Tageslicht Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22290 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 08. Apr. 2015 13:00 <-- editieren / zitieren --> Unities abgeben: Nur für CADAGE
Diesel erkennt die 2 als Zahl, daher geht der Vergleich mit = bei M sieht das anders aus und du müßtest mit EQ ans Ziel kommen: $(if,$(eq,M,$(substr,$(getvar,dwgname),$(-,$(strlen,$(getvar,dwgname)),4),1)),Montageplan,) ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8086 Registriert: 09.03.2006 Kinder, kauft Kämme! Es kommen lausige Zeiten.
|
erstellt am: 08. Apr. 2015 13:01 <-- editieren / zitieren --> Unities abgeben: Nur für CADAGE
Du (bzw. der Schriftfelderfinder Deines Vorentwurfsplans ) verwendet als Vergleichsoperator das "=". Das kann er tun, da er Zahlen vergleicht. DU möchtest aber Buchstaben vergleichen. Nimm dafür Code: $(eq, Wert1, Wert2)
Und das mit derselben Länge: Wenn's von vorne nicht paßt, paßt es vielleicht von hinten? >> Teilstring Dateiname << ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADAGE Mitglied Technischer Zeichner
Beiträge: 6 Registriert: 19.02.2015 AutoCAD MEP 2015 Eplan P8 V.2.4
|
erstellt am: 08. Apr. 2015 13:51 <-- editieren / zitieren --> Unities abgeben:
|
Tromiantor Mitglied Technischer Systemplaner Fachrichtung Elektro
Beiträge: 2 Registriert: 14.04.2015
|
erstellt am: 14. Apr. 2015 13:56 <-- editieren / zitieren --> Unities abgeben: Nur für CADAGE
Schönen Tag zsm, habe mir den Beitrag mal durchgelesen, da ich auch auf der Suche nach einer Lösung für ein ähnliches Problem bin und habe mir erlaubt die oben genannte Leistungsphase auch mal mit in meinen Plankopf einzubauen (danke an CADAGE und die hilfreichen antworten ). In unserer Firma gibt es auch einen Planschlüssel : XXXXXXXXX-ELT-01-5.dwg . Nun zu meiner Frage/Problem: Ich habe vor (da der Mensch ja generell etwas bequemer ist und sich gerne das Leben leichter macht), dass sich das Gewerk automatisch rein schreibt. In dem Fall ELT-> „Elektroinstallation“. Dazu verwende ich eine abgewandelte Art des Diesel Ausdrucks von der Leistungsphase: $(if,$(eq,TLE,$(substr,$(getvar,dwgname),$(-,$(strlen,$(getvar,dwgname)),9),3)),Elektroinstallation,) $(if,$(eq,AMB,$(substr,$(getvar,dwgname),$(-,$(strlen,$(getvar,dwgname)),9),3)),Brandmeldeanlage,) …. usw Leider scheint dies nicht zu funktionieren. Ich lasse das ganze ja von hinten zur 9. Stelle zählen und ab dort dann drei Stellen zählen. T, L und E. Dies habe ich bewusst so rum geschrieben, da ja von hinten gezählt wird. Kann eine Ausführung in diesem Format nur jeweils eine Zahl lesen, denn wenn ich nur das T auslesen lasse, dann funktioniert es? Außerdem verwendet meine Firma mehrere Gewerke, wo es dann zu Überschneidungen käme, wenn ich nur die letzte Stelle auslesen lassen würde. Kann mir da einer bitte einen Rat geben? Danke im Voraus.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22290 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 14. Apr. 2015 14:40 <-- editieren / zitieren --> Unities abgeben: Nur für CADAGE
Willkommen, für das Beispiel verwende ich den von dir geposteten Diesel-Ausdruck oder dies im Detail zu prüfen: $(if,$ WENN folgende Bedingung zutrifft: (eq, Gleich TLE, und $(substr,$(getvar,dwgname),$(-,$(strlen,$(getvar,dwgname)),9),3)), DANN "Elektroinstallation" SONST <nichts> <= Die Angabe hinter dem letzten Komma.. da keine Angabe gemacht wurde ist das Ergebni "nichts" in dem Fall Der auslesende Part im Detail: $(substr,$(getvar,dwgname),$(-,$(strlen,$(getvar,dwgname)),9),3)), $(substr, TEILSTRING aus $(getvar,dwgname) dem Dateinamen TEILSTRING ANFANG bei ZeichenNr. $(-,$(strlen,$(getvar,dwgname)),9) {Länge des Dateinamens MINUS 9} TEILSTRINGLÄNGE (Zeichenanzahl) 3 An keiner Stelle wird die Zeichenreihenfolge des Dateinamens "umgekehrt", daher ist die Kennung nach wie vor "ELT" und nicht "TLE" Teste es mit der Modemacro Ausgabe - so kannst du Schritt für Schritt dein Makro aufbauen/prüfen. Als ersten Test setze also mal einen Teil deines Dieselstrings ein: Ursprung: $(if,$(eq,TLE,$(substr,$(getvar,dwgname),$(-,$(strlen,$(getvar,dwgname)),9),3)),Elektroinstallation,) Teil: $(substr,$(getvar,dwgname),$(-,$(strlen,$(getvar,dwgname)),9),3) Unten Links in der Statuszeile siehst du dann was du mit dieser Angabe ausliest.. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22290 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 14. Apr. 2015 14:49 <-- editieren / zitieren --> Unities abgeben: Nur für CADAGE
|
Tromiantor Mitglied Technischer Systemplaner Fachrichtung Elektro
Beiträge: 2 Registriert: 14.04.2015
|
erstellt am: 15. Apr. 2015 07:49 <-- editieren / zitieren --> Unities abgeben: Nur für CADAGE
Moin, vielen dank für die ausführliche Darstellung meines Diesel-Befehls und auch für die Hilfestellung mit dem Modemacro. Hat bei mir zwar erstmal bisschen gedauert, bis ich die Ausgabe gefunden hatte (bei mir unten rechts; sehr klein gehalten ) Dort konnte ich dann ablesen, das mein Teil-Stück die Werte "T-0" ließt, was ich natürlich nicht haben wollte. Konnte dies dann aber einfach anpassen Tolle Arbeit. Danke dafür! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Temuedschin Mitglied
Beiträge: 51 Registriert: 15.08.2018 AutoCAD 2023 / Windows 11
|
erstellt am: 14. Aug. 2024 18:31 <-- editieren / zitieren --> Unities abgeben: Nur für CADAGE
Klinke mich hierein... Bei uns ergibt sich die Plannummer immer aus den ersten 3 Zeichen des DWG-Namens. Das 1. und 2. Zeichen ist die numerische Plannummer und das 3. Zeichen die Revisionsnummer. DWG-Name -> Plannummer: 01_Planinhalt.dwg -> 01 01APlaninhalt.dwg -> 01/A Das Auslesen der Plannummer mit $(substr,$(getvar,dwgname),1,2) haut hin, jedoch mit einer $(if,$(eq,_,$(substr,$(getvar,dwgname)... scheitere ich komplett. Jemand einen Tip für mich? 1.000 Dank.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22290 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 14. Aug. 2024 19:26 <-- editieren / zitieren --> Unities abgeben: Nur für CADAGE
Hi, >>" jedoch mit einer $(if,$(eq,_,$(substr,$(getvar,dwgname)... scheitere ich komplett. Jemand einen Tip für mich?" AUSPRECHEN, bzw. ausschreiben, das wäre mein erste Tipp, dann hast du es praktisch schon (mit deiner Erfahrung)!
Wenn die dritte Stelle, ein Unterstrich, ist dann lese ab Zeichen 1, zwei Zeichen lang ansonsten lese ab Zeichen 1, drei Zeichen lang oder
Lese ab Zeichen 1, wenn das dritte Zeichen ein Unterstrich ist 3, ansonsten 2 Zeichen lang
was dann zum Beispiel so aussehen würde: Lese ab Zeichen 1, $(substr,$(getvar,DWGNAME),1 wenn $(if, das dritte Zeichen ein Unterstrich ist $(eq,_,$(substr,$(getvar,DWGNAME), 3,1)), 2 2, ansonsten 3 Zeichen lang 3 Beispielkausdruck mit Klammern: Plannummer: $(substr,$(getvar,DWGNAME),1,$(if,$(eq,_,$(substr,$(getvar,DWGNAME), 3,1)),2,3))
CADffm streicht 1000 Dank ein
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bunnyguard Mitglied
Beiträge: 367 Registriert: 15.12.2009 Intel i7-8850k 2.60 GHz 16 GB RAM Win 10 Pro 64Bit Nvidia Quadro P2000 SSD 256 Pro Serie Autocad 2023 Inventor 2023 Pro
|
erstellt am: 18. Sep. 2024 10:14 <-- editieren / zitieren --> Unities abgeben: Nur für CADAGE
Hallo ich habe auch ein Problem. Ich habe ein Schriftfeld das soll mir je nachdem welcher Loginname verwendet wird eine Telefonnummer anzeigen für verschiedene Projektleiter. $(if,$(AcVar loginname,XXXXX.XXXXX,$(substr,$(getvar,loginname),$(-,$(strlen,$(getvar,loginname)),4),1)),+49 173 XXXXXXXX,) Wir sind 4 Projektleiter das heisst ich müsste die Zeile dann 4mal eintragen oder ? So oder so stimmt da was nicht, bin noch nicht ganz dahinter gestiegen was für was ist usw. Für Hilfe wäre ich Dankbar.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22290 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 18. Sep. 2024 10:31 <-- editieren / zitieren --> Unities abgeben: Nur für CADAGE
Hi, >>"Wir sind 4 Projektleiter das heisst ich müsste die Zeile dann 4mal eintragen oder ?" Kommt darauf an was du mit "Zeilen" meinst und zum anderen: Nein, das geht auch mit einer "Zeile". >>"$(if," Das ist DIESEL >>"AcVar" Das ist "Schriftfeld" --> Es ist keine Systemvariable, kein Diesel, sondern ein Ausdruck welcher für einen Schriftfeldcode verwendet wird.
>>"$(if,$(AcVar loginname,XXXXX.XXXXX,$" Da fehlt wohl irgendeine Vergleichs-Funktion.
_ Du kannst in Diesel-Schriftfeldern keine anderen Schriftfelder platzieren (verschachteln), du müßtest daher auf das gute alte GETVAR oder GETENV zurückgreifen, je nachdem was man benötigt. $(if,$(eq,$(getenv,USERNAME),"NAME"),"+49 173 11111111",)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bunnyguard Mitglied
Beiträge: 367 Registriert: 15.12.2009 Intel i7-8850k 2.60 GHz 16 GB RAM Win 10 Pro 64Bit Nvidia Quadro P2000 SSD 256 Pro Serie Autocad 2023 Inventor 2023 Pro
|
erstellt am: 18. Sep. 2024 10:45 <-- editieren / zitieren --> Unities abgeben: Nur für CADAGE
Super Danke. $(if,$(eq,$(getenv,USERNAME),"NAME"),"+49 173 xxxxx",) $(if,$(eq,$(getenv,USERNAME),"NAME"),"+49 172 xxxxx",) $(if,$(eq,$(getenv,USERNAME),"NAME"),"+49 173 xxxxxx",) $(if,$(eq,$(getenv,USERNAME),"NAME"),"+49 174 xxxxxx",) Ich hab jetzt diese 4 Zeilen im Diesel-Ausdruck, bei mir funktioniert es mal, ob das dann mit den andern User (Namen) funktioniert muss ich noch testen... Oder wird das so mit den 4 Zeilen nicht funktionieren? Besten Dank.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22290 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 18. Sep. 2024 10:52 <-- editieren / zitieren --> Unities abgeben: Nur für CADAGE
|
Temuedschin Mitglied
Beiträge: 51 Registriert: 15.08.2018 AutoCAD 2023 / Windows 11
|
erstellt am: 27. Sep. 2024 15:39 <-- editieren / zitieren --> Unities abgeben: Nur für CADAGE
Hi cadffm, Vielen Dank für deinen Tip. $(substr,$(getvar,DWGNAME),1,$(if,$(eq,_,$(substr,$(getvar,DWGNAME), 3,1)),2,3)) funktioniert bei meinem Fall perfekt. Danke. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|