|  |  | 
|  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | 
|  |  | 
|  | PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung 
 | 
| Autor | Thema:  Block mit Attribut(en) einsetzen (1027 mal gelesen) | 
 | cm-Zeichner Mitglied
 Vermessungstechniker
 
   
 
      Beiträge: 162Registriert: 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 und AutoLISPler
 
      
 
      Beiträge: 1781Registriert: 11.10.2004
 Window 11ACAD 2021
 CIVIL 2021
 BricsCAD ab V14
 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz   2.80 GHz
 32.0GB RAM
 NVIDIA GeForce MX450<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örnhttp://www.bosse-engineering.com
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | CADmium Moderator
 Maschinenbaukonstrukteur
 
         
 
  
 
      Beiträge: 13533Registriert: 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: 162Registriert: 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: 13533Registriert: 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: 162Registriert: 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 |