| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Befehl, um Sichtbarkeitsstatus zu ändern (1274 / mal gelesen)
|
RaffiM Mitglied
Beiträge: 3 Registriert: 30.01.2016 AutoCAD 2016 Studentenversion
|
erstellt am: 30. Jan. 2016 14:05 <-- editieren / zitieren --> Unities abgeben:
Hallo liebes Forum, ich habe einen dynamischen Block mit diversen Sichtbarkeiten. Ich suche nach einer Möglichkeit, den Sichtbarkeitsstatus nicht über das Drop-Down-Menü sondern über eine Befehlseingabe zu ändern. Hintergrund ist der, dass ich ein Skript habe, dass mir die Blöcke einfügt. Dabei soll auch der Sichtbarkeitsstatus gesetzt werden. Ist dies möglich? Viele Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 30. Jan. 2016 14:10 <-- editieren / zitieren --> Unities abgeben: Nur für RaffiM
|
RaffiM Mitglied
Beiträge: 3 Registriert: 30.01.2016 AutoCAD 2016 Studentenversion
|
erstellt am: 30. Jan. 2016 15:22 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für die schnelle Antwort. Ich habe von LISP leider überhaupt keine Ahnung, aber ich habe mir im Kopf zurechtgesponnen, wie ich mein Problem löse. Ich bin nun also auf folgenden Code gestoßen, der den Sichtbarkeitsstatus ändert: Code: ;; Set Dynamic Block Visibility State - Lee Mac ;; Sets the Visibility Parameter of a Dynamic Block (if present) to a specific value (if allowed) ;; blk - [vla] VLA Dynamic Block Reference object ;; val - [str] Visibility State Parameter value ;; Returns: [str] New value of Visibility Parameter, else nil(defun LM:SetVisibilityState ( blk val / vis ) (if (and (setq vis (LM:getvisibilityparametername blk)) (member (strcase val) (mapcar 'strcase (LM:getdynpropallowedvalues blk vis))) ) (LM:setdynpropvalue blk vis val) ) )
Ich habe ihn als lsp-Datei gespeichert und in ACAD geladen. Sehe ich es richtig, dass ich nun eine Funktion namens "LM:SetVisibilityState" habe, die als Parameter blk und val erwartet? Wenn ich einen Sichtbarkeitsstatus S1 habe, den ich einstellen möchte, ist dieser also val und wird als "S1" an die Funktion übergeben. Aber was ist nun blk? woher weiß ich, welchen Namen der eingefügte Block trägt? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jupa Ehrenmitglied V.I.P. h.c. Ruheständler
Beiträge: 6050 Registriert: 16.09.2004 Windows 10 64bit, ACAD Rel. 14 - ACAD 2023
|
erstellt am: 30. Jan. 2016 16:05 <-- editieren / zitieren --> Unities abgeben: Nur für RaffiM
Zitat: Original erstellt von RaffiM: Sehe ich es richtig, dass ich nun eine Funktion namens "LM:SetVisibilityState" habe,
So weit richtig. Da fehlen nun aber noch die Funktionen LM:getvisibilityparametername, LM:getdynpropallowedvalues und LM:setdynpropvalue. ??? Jürgen
------------------ Bildung kommt nicht vom Lesen, sondern vom Nachdenken über das Gelesene. (Carl Hilty) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 30. Jan. 2016 16:27 <-- editieren / zitieren --> Unities abgeben: Nur für RaffiM
Zitat: Aber was ist nun blk? woher weiß ich, welchen Namen der eingefügte Block trägt?]
Wenn du dann man alle nötigen Funktionen zusammengetragen hast(siehe Anmerkung jupa), dann hilft dir folgendes Konstrukt damit es für die auch anwendbar wird: (defun c:SetVisState (/ aws) (if (setq aws (ssget '((0 . "INSERT")))) (foreach blk (mapcar 'cadr (ssnamex aws)) (LM:SetVisibilityState (vlax-ename->vla-object blk) (getstring "\nSichtbarkeitsname: ") ) ) (princ "\nEs wurde keine Blockreferenz gewählt") ) (princ) ) ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RaffiM Mitglied
Beiträge: 3 Registriert: 30.01.2016 AutoCAD 2016 Studentenversion
|
erstellt am: 30. Jan. 2016 17:03 <-- editieren / zitieren --> Unities abgeben:
|