| | | 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 !, eine Pressemitteilung
|
Autor
|
Thema: Problem mit Lisp für Bemaßungen (645 / mal gelesen)
|
Triple-S Mitglied Technischer Systemplaner ELT
Beiträge: 19 Registriert: 17.11.2021 Windows 10 AutoCAD 2022, Linear, Revit
|
erstellt am: 02. Dez. 2021 14:03 <-- editieren / zitieren --> Unities abgeben:
Hallo Lisp-Expertenrunde, ich habe eine Routine, die mir Grundrisse, die ich von Architekten bekomme, in einen für mich benutzbaren Zustand bringen soll. Teil dieser Routine ist folgender kleiner Befehl: Code: (defun c:LSSBEM ( / STILDEF STILNAME OBJEKTDATEN AWS) (setq STILDEF (tblnext "DIMSTYLE" T)) (while STILDEF (setq STILNAME (cdr(assoc 2 STILDEF))) (command "-bemstil" "ho" STILNAME) (setq OBJEKTDATEN (entget (tblobjname "DIMSTYLE" STILNAME))) (if (assoc 176 OBJEKTDATEN) (setq OBJEKTDATEN (subst (cons 176 256)(assoc 176 OBJEKTDATEN) OBJEKTDATEN)) );end if (if (assoc 177 OBJEKTDATEN) (setq OBJEKTDATEN (subst (cons 177 256)(assoc 177 OBJEKTDATEN) OBJEKTDATEN)) );end if (if (assoc 178 OBJEKTDATEN) (setq OBJEKTDATEN (subst (cons 178 256)(assoc 178 OBJEKTDATEN) OBJEKTDATEN)) );end if (entmod OBJEKTDATEN) (command "-bemstil" "ho" STILNAME) (if (setq AWS (ssget"_X" (list '(0 . "*DIMENSION*")(cons 3 STILNAME)))) (command "-bemstil" "a" AWS "") );end if (setq STILDEF (tblnext "DIMSTYLE")) ) ) (princ)
Dieses Tool habe ich zugegebenermaßen nicht geschrieben, sondern von irgendwo kopiert. Ziel ist es die Farben von Hilfslinien, anderen Linien und Texten aller Bemaßungsstile auf VONLAYER oder VONBLOCK zu setzen sowie auch dahingehende Überschreibungen in den Bemaßungen zurückzusetzen. Das funktioniert auch wie gewünscht. Allerdings als kleiner Nebeneffekt werden auch andere Überschreibungen in den einzelnen Bemaßungen entfernt, wie z.B. die Texthöhe, was nicht gewollt ist. (Nun mag man zur Diskussion stellen welchen Sinn es macht einen Bemaßungsstil zu definieren, nur um ihn in den einzelnen Bemaßungen wieder zu ändern, aber das sind ja nicht meine Bemaßungen... Es sind natürlich Einzelfälle, in den meisten Situationen funktioniert es wie gewünscht.) Wer kann mir helfen das Tool zu optimieren? [Diese Nachricht wurde von Triple-S am 02. Dez. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 02. Dez. 2021 14:53 <-- editieren / zitieren --> Unities abgeben: Nur für Triple-S
Hallo Tripl-S, es erscheint ja logisch, dass, wenn Du auf eine Bemaßung den ursprünglichen Bemaßungsstil wieder anwendest, alle an dieser Bemaßung vorgenommenen Änderungen weg sind. Du müsstest also eher nicht über den Bemaßungsstil sondern durch alle Bemaßungsobjekte gehen und dort nur die gewünschten Änderungen machen. Wo dort aber die Farbzuweisungen stecken, habe ich auf die Schnelle nicht gesehen. Da müsste man sich sicher mal in die Tiefen des Objektes mit Unterobjekten und so reinwühlen. Aber vielleicht hat ja einer der Experten da noch was auf Lager. War jetzt sicher keine große Hilfe, aber vielleicht ein kleiner Ansatz. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Triple-S Mitglied Technischer Systemplaner ELT
Beiträge: 19 Registriert: 17.11.2021 Windows 10 AutoCAD 2022, Linear, Revit
|
erstellt am: 02. Dez. 2021 15:25 <-- editieren / zitieren --> Unities abgeben:
Hallo spider, das ist natürlich was das Tool macht. Eine andere Schleife in dieser Richtung übersteigt meine Lisp-Fähigkeiten aber bei weitem. Ich verwende das Tool nun schon eine halbes Jahr ohne Probleme. Ja, kleinere Stilüberschreibungen gehen verloren, aber das stört nicht. Heute hatte ich zum ersten Mal einen Architekten, der so schlau war einen Bemaßungsstil mit Texthöhe 100 zu erstellen und dann in jeder Bemaßung die Höhe auf 0,1 zu setzen. Nach Anwendung meines Tools konnte man dann nichts mehr erkennen. In solchen Einzelfällen könnte man natürlich einfach die Texthöhe wieder zurückstellen oder das Tool nicht anwenden, aber ich hätte gerne eine schönere Lösung. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 02. Dez. 2021 15:58 <-- editieren / zitieren --> Unities abgeben: Nur für Triple-S
Du könntest z. B. vor dem Anwenden des Tools den Bemaßungsstil so einstellen, wie Du ihn brauchst, also bei Deinem Beispiel die Texthöhe im Stil auf 10 setzen. Dann sollten alle Bemaßungstexte diese Höhe auch erhalten. Das Tool ändert ja im Stil nur die Farben (GC 176, 177, 178 = Sysvar DIMCLRD, DIMCLRE, DIMCLRT) auf VonLayer (256), sofern diese Gruppencodes vorhanden sind. Ansonsten könntest Du Dir Bemstil so einstellen, wie Du willst und dann das Tool fahren. HTH Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 03. Dez. 2021 12:56 <-- editieren / zitieren --> Unities abgeben: Nur für Triple-S
Hallo Triple-S, probier das hier mal aus. ist noch ohne Fehlerbehandlung wie gesperrte Layer usw. aber könnte helfen. Code: (vlax-for blk (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)) ) (vlax-for obj blk (if (member (vla-get-objectname obj) '("AcDbRotatedDimension" "AcDbAlignedDimension" "AcDbArcDimension" "AcDbRadialDimension" "AcDbRadialDimensionLarge" "AcDbDiametricDimension" "AcDbOrdinateDimension" "AcDb3PointAngularDimension" "AcDb2LineAngularDimension" ) ) (progn (if (vlax-property-available-p obj 'DimensionLineColor) (vla-put-DimensionLineColor obj 256) ) (if (vlax-property-available-p obj 'ExtensionLineColor) (vla-put-ExtensionLineColor obj 256) ) (vla-put-TextColor obj 256) ) ) ) )
------------------ Geht nicht, gibts nicht Gruß Andreas http://kraus-cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Triple-S Mitglied Technischer Systemplaner ELT
Beiträge: 19 Registriert: 17.11.2021 Windows 10 AutoCAD 2022, Linear, Revit
|
erstellt am: 06. Dez. 2021 08:47 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, Danke für deine Ideen, aber es geht ja gerade um Extremfälle wie Pläne mit Dutzenden Bemaßungsstilen oder unterschiedlichen Texthöhen. Die Routine soll auch von anderen Mitarbeitern benutzt werden können ohne besondere Kenntnisse. Hallo Andreas, Vielen Dank für den Code. So funktioniert es. Im Zuge der Routine werden sowieso alle Layer entsperrt, das sollte kein Problem sein. Ich werde mich melden, wenn ich auf einen Problemfall stoße, bei dem es nicht will. Bis dann. [Diese Nachricht wurde von Triple-S am 06. Dez. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|