| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Block mit Attribut(en) einsetzen (823 mal gelesen)
|
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win7Pro 64Bit, AutoCAD Map3D 2014 64Bit
|
erstellt am: 12. Okt. 2012 08:39 <-- editieren / zitieren --> Unities abgeben:
Verwende ein kleines Unterprogramm zum Einsetzen von Blöcken mit einer frei zu wählenden Einsetzrichtung. Funktioniert bei Blöcken ohne Attribut sowie bei Blöcken mit 1 oder mehreren Attributen. Werde nach der Eingabe der Einsetzrichtung nach den einzelnen Attributwerten gefragt (Natürlich nur wenn der Block Attribute enthält). Code:
(defun aufforderung () (setq OLDLAY (getvar "CLAYER")) (setq p1 (getpoint "\nEinfügepunkt: ")) (setq wink (getangle p1 "\nEinsetzrichtung: \n")) (setq wink (angtos wink 2 4))(command "_.LAYER" "_SET" BL "") ; BL=Blocklayer wird im Aufruf definiert (setq OMODE (getvar "OSMODE")) (setvar "OSMODE" 0) (command "_.INSERT" BN ; BN=Blockname wird im Aufruf definiert p1 ; Einfügepunkt (* (scale) 0.001) ; Größe X "" ; für Größe Y übernehmen wink ; Drehung );command (setvar "OSMODE" OMODE) (setvar "CLAYER" OLDLAY) (princ) ; muss bleiben wegen Rückmeldung )
Will ich dieses Unterprogramm jedoch so lange laufen lassen bis ich es mit der rechten Maustaste beim Einfügepunkt abbreche funktioniert das sobald der Block Attribute enthält nicht mehr - ich werde nur mehr nach den Einfügepunkten gefragt. Was läuft da falsch. Code:
defun aufforderung_unend ()(defun *error* (msg) (if (or (/= msg "Funktion abgebrochen") (= msg "Beenden/Verlassen abbrechen") ) (princ) (princ) ) ) (setq OLDLAY (getvar "CLAYER")) (setq p1 (getpoint "\nEinfügepunkt: ")) (if (= p1 nil)(exit)) (setq wink (getangle p1 "\nEinsetzrichtung: \n")) (setq wink (angtos wink 2 4)) (command "_.LAYER" "_SET" BL "") ; Blocklayer (setq OMODE (getvar "OSMODE")) (setvar "OSMODE" 0) (command "_.INSERT" BN ; Blockname p1 ; Einfügepunkt (* (scale) 0.001) ; Größe X "" ; für Größe Y übernehmen wink ; Drehung );command (setvar "OSMODE" OMODE) (setvar "CLAYER" OLDLAY) (princ) ; muss bleiben wegen Rückmeldung (aufforderung_unend) )
------------------ Grüße Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004 Window 10 ACAD 2021 CIVIL 2021 BricsCAD V14-V22 Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz 16.0GB RAM NVIDIA GeForce GTX 1050<P>
|
erstellt am: 12. Okt. 2012 09:00 <-- editieren / zitieren --> Unities abgeben: Nur für cm-Zeichner
Hallo Bernd, hier nur eine Antwort auf Verdacht, ich habe Deinen Beitrag nur überflogen: Zu Beginn die Systemvariable "ATTREQ" auf 0 stellen, dann werden keine Attributswerte abgefragt. Diese kannst Du dann später über ENTMOD ändern. Dann ist es auch egal, wieviele Attribute enthalten sind. ------------------ viele Grüße Jörn http://www.bosse-engineering.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 12. Okt. 2012 09:02 <-- editieren / zitieren --> Unities abgeben: Nur für cm-Zeichner
|
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win7Pro 64Bit, AutoCAD Map3D 2014 64Bit
|
erstellt am: 12. Okt. 2012 09:18 <-- editieren / zitieren --> Unities abgeben:
@CADmium Funktioniert - Danke. Gibt´s da auch noch eine Möglichkeit die Eingabeauffordrung anzuzeigen, weil jetzt ist ja nur eine Leerzeile da ohne irgend einen Text. ------------------ Grüße Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 12. Okt. 2012 09:50 <-- editieren / zitieren --> Unities abgeben: Nur für cm-Zeichner
|
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win7Pro 64Bit, AutoCAD Map3D 2014 64Bit
|
erstellt am: 12. Okt. 2012 10:02 <-- editieren / zitieren --> Unities abgeben:
Ich verwende diesen Befehl zum Einfügen aller Blöcke mit einem Einfügewinkel diese haben manchmal kein Attribut, manchmal 1 oder mehr. Auf jedenfall ist die Eingabeaufforderung aber immer ein anderer Text - zB. Hausnummer, Straßenname, Baumumfang Bei 2 Attributen zB. Blattnr. westlich, Blattnr. östlich ------------------ Grüße Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |