| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Blöcke drehen / einfügen (2172 mal gelesen)
|
daiz Mitglied
Beiträge: 224 Registriert: 06.09.2003 SYSTEMINFO: WinXP, Map 3d 2006
|
erstellt am: 15. Sep. 2003 12:16 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, hat wer eine Idee, wie ich Blöcke, die in meinen Zeichnungen mehrfach vorhanden sind, an ihrem Einfügepunkt so drehen kann, daß sie alle in die gleiche Richtung (Norden, bzw. oben) zeigen? Wie ich jeden Block einzeln drehen kann, weiß ich. Die Blöcke liegen alle in einer Ebene (z=0). Da fällt mir gerade noch eine zweite Frage ein: Wenn ich eine ascii-Datei in acad einlese, wird bei einem bestimmten Punkt-Code eine externe dwg-Datei als Block eingefügt. Das sieht ungefähr so aus: Lf-Nr. Pkt.-Code X Y Z 25 11 x25 y25 0 26 11 x26 y26 0 Der Block wird dann bei (x25,y25) eingefügt und nach (x26,y26) gedreht. Das funktioniert auch ganz gut. Das Problem ist, wenn auch die nachfolgenden Punkte (27 und 28) den Punkt-Code 11 haben. Dann zeichnet acad auch einen Block mit Einfügepunkt 26 und Drehwinkel auf 27. Ich umgehe das Problem bisher durch eine Abstandsabfrage (d.h. der erste Punkt des zweiten Blocks muß weit genug vom zweiten Punkt des ersten Blocks entfernt sein). Oft liegen die beiden Blöcke aber auch nebeneinander und dann funktionert das mit der Abstandsabfrage nicht, so daß ich bisher alles nochmal zu Fuß nacharbeiten muß. Bin für alle Ideen dankbar, liebe Grüße, Daiz
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marvin101010 Mitglied ingenieur der architektur ohne diplom, bauzeichner ohne lehre, cad-admin ohne wissen :-)
Beiträge: 562 Registriert: 22.01.2003 Pentium 4 Windows XP Autocad 2006 Autocad 2006LT + Extender ADT 2007 ArchiCAD
|
erstellt am: 15. Sep. 2003 12:23 <-- editieren / zitieren --> Unities abgeben: Nur für daiz
hallo... zur ersten frage: -eigenschaftsfenster öffnen -einen block drehen, winkel -> copy -alle aktivieren, winkel ->paste zur zweiten frage: versteh ich nich...auf die schnelle ------------------ .......good vibrations make the world go round Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daiz Mitglied
Beiträge: 224 Registriert: 06.09.2003 SYSTEMINFO: WinXP, Map 3d 2006
|
erstellt am: 15. Sep. 2003 12:35 <-- editieren / zitieren --> Unities abgeben:
Hallo Marvin, werden dann nicht alle Blöcke um den gleichen Winkel gedreht? Sie sollen ja nicht alle um z.B. 38° gedreht werden, sondern nachher alle nach oben zeigen, egal wie sie vorher gedreht waren. liebe Grüße, Daiz 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: 15. Sep. 2003 12:42 <-- editieren / zitieren --> Unities abgeben: Nur für daiz
Teste es doch mal ... Edit: Form geändert, Inhalt gleichgeblieben... ------------------ Nach bestimmten Beiträgen suchen Sie können nach bestimmten Beiträgen suchen, basierend auf: einem oder mehreren Wörtern in den Beiträgen, einem Benutzernamen oder einem Datum; in allen oder bestimmten Foren. Klicken Sie dazu auf den Link "Suchen" am oberen Rand des Forums. Hinweis: Ankündigungen werden in die Suche nicht integriert. [Diese Nachricht wurde von cadffm am 15. September 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daiz Mitglied
Beiträge: 224 Registriert: 06.09.2003 SYSTEMINFO: WinXP, Map 3d 2006
|
erstellt am: 15. Sep. 2003 13:05 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, natürlich hast Du Recht mit dem testen. Ich hatte es nur schonmal probiert, es über die Eigenschaften hinzubekommen. Das hatte aber nicht geklappt, ich wußte jedoch nicht mehr genau warum. Also: Wenn ich Eigenschaften aufrufe und dann genau einen Block auswähle, kann ich auch dessen Einfügepunkt und Drehwinkel ändern. Wenn ich jedoch mehrere (gleiche) Blöcke auswähle (egal, ob ich sie einzeln anklicke oder über Auswahlfenster), kannn ich nur Farbe, Layer und Linientyp verändern. Die anderen Optionen (Einfügepunkt, Drehung, Skalierung) erscheinen dann nicht mehr. Liebe Grüße, Daiz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Schachinger Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2040 Registriert: 08.04.2002 AIS2009, PDSU 2012-2015, Plant 3D 2011-2015, NavisWorks 2010-2015, Win7 64bit SP1, Intel Core i7 870, 16 GB RAM, Quadro 2000D
|
erstellt am: 15. Sep. 2003 13:11 <-- editieren / zitieren --> Unities abgeben: Nur für daiz
|
BerndE Mitglied Hochbautechniker
Beiträge: 557 Registriert: 05.07.2003 Revit 2013 ACA 2012 deutsch BuildingOne 5.4.5 Win7 WindowsNetz
|
erstellt am: 15. Sep. 2003 13:15 <-- editieren / zitieren --> Unities abgeben: Nur für daiz
zur not mit nem kleinen makro...so in der art etwa: Option Explicit Sub dreh_block() Dim bl As AcadBlockReference For Each bl In ThisDrawing.ModelSpace If bl.Name = "Blockname" Then bl.Rotation = 0 Next End Sub bei blockname setzt du einfach deinen blocknamen ein. willst du alle blöcke drehen, dann läßt du einfach von "If" bis einschl. "Then" alles weg. dann wird aber gnadenlos alles gedreht ------------------ Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daiz Mitglied
Beiträge: 224 Registriert: 06.09.2003 SYSTEMINFO: WinXP, Map 3d 2006
|
erstellt am: 15. Sep. 2003 14:22 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, erstmal vielen Dank für Eure schnellen Antworten. @Schachinger: habe auch mal zwei Bilder von mir. Bild eins: Eigenschaften -> ein Block gewählt. Bild zwei: Eigenschafen -> zwei Blöcke gewählt. @BerndE: VBA wird bei mir nicht unterstützt. 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: 15. Sep. 2003 14:27 <-- editieren / zitieren --> Unities abgeben: Nur für daiz
|
daiz Mitglied
Beiträge: 224 Registriert: 06.09.2003 SYSTEMINFO: WinXP, Map 3d 2006
|
erstellt am: 15. Sep. 2003 14:55 <-- editieren / zitieren --> Unities abgeben:
|
marvin101010 Mitglied ingenieur der architektur ohne diplom, bauzeichner ohne lehre, cad-admin ohne wissen :-)
Beiträge: 562 Registriert: 22.01.2003 Pentium 4 Windows XP Autocad 2006 Autocad 2006LT + Extender ADT 2007 ArchiCAD
|
erstellt am: 15. Sep. 2003 15:00 <-- editieren / zitieren --> Unities abgeben: Nur für daiz
@ alle bin leider erst mir acad 2000 eingestiegen... baer irgendwie ist mein eigenschaftsfenster ein anderes... hab ich da was verpasst???? ------------------ .......good vibrations make the world go round 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: 15. Sep. 2003 15:10 <-- editieren / zitieren --> Unities abgeben: Nur für daiz
bin zwar auch ein "ab2000er-Kind" aber das ist so in R14 gewesen, ein Lisp wäre dafür hilfreich, Marvin - das ist doch was für dich ! ------------------ Nach bestimmten Beiträgen suchen Sie können nach bestimmten Beiträgen suchen, basierend auf: einem oder mehreren Wörtern in den Beiträgen, einem Benutzernamen oder einem Datum; in allen oder bestimmten Foren. Klicken Sie dazu auf den Link "Suchen" am oberen Rand des Forums. Hinweis: Ankündigungen werden in die Suche nicht integriert. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marvin101010 Mitglied ingenieur der architektur ohne diplom, bauzeichner ohne lehre, cad-admin ohne wissen :-)
Beiträge: 562 Registriert: 22.01.2003 Pentium 4 Windows XP Autocad 2006 Autocad 2006LT + Extender ADT 2007 ArchiCAD
|
erstellt am: 15. Sep. 2003 15:37 <-- editieren / zitieren --> Unities abgeben: Nur für daiz
|
marvin101010 Mitglied ingenieur der architektur ohne diplom, bauzeichner ohne lehre, cad-admin ohne wissen :-)
Beiträge: 562 Registriert: 22.01.2003 Pentium 4 Windows XP Autocad 2006 Autocad 2006LT + Extender ADT 2007 ArchiCAD
|
erstellt am: 15. Sep. 2003 15:53 <-- editieren / zitieren --> Unities abgeben: Nur für daiz
ok... hier eine gaaaaanz einfache. block hat KEINE attribute. hab auch kein "fehlerabfangen" o.äh. eingebaut...keine zeit befehl: "blockdrehen" ------------------ .......good vibrations make the world go round Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kramer24 Ehrenmitglied V.I.P. h.c. Architekt
Beiträge: 5881 Registriert: 09.11.2001 Acad Architecture 2023 WIN 10
|
erstellt am: 15. Sep. 2003 15:59 <-- editieren / zitieren --> Unities abgeben: Nur für daiz
Hallo Marvin, Hut ab! Müssen wir jetzt Brischkelein oder Wieselchen zu Dir sagen? Lothar ------------------ "Stellt Euch vor, es geht, und keiner kriegt's hin." (Neuss) [Diese Nachricht wurde von Kramer24 am 15. September 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marvin101010 Mitglied ingenieur der architektur ohne diplom, bauzeichner ohne lehre, cad-admin ohne wissen :-)
Beiträge: 562 Registriert: 22.01.2003 Pentium 4 Windows XP Autocad 2006 Autocad 2006LT + Extender ADT 2007 ArchiCAD
|
erstellt am: 15. Sep. 2003 16:03 <-- editieren / zitieren --> Unities abgeben: Nur für daiz
|
daiz Mitglied
Beiträge: 224 Registriert: 06.09.2003 SYSTEMINFO: WinXP, Map 3d 2006
|
erstellt am: 15. Sep. 2003 16:09 <-- editieren / zitieren --> Unities abgeben:
|
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 16. Sep. 2003 00:19 <-- editieren / zitieren --> Unities abgeben: Nur für daiz
Hallo, und falls marvin's tool auch mal für blöcke mit Attributen benötigt wird, dann machen dass die folgenden, Marvins geänderte, Zeilen.
Code:
(defun c:BLOCKDREHEN (/ block blockname blockwinkel #bloecke z BLK nw) (command "_.undo" "_G") (setq block (entsel "\nVORGABEBLOCK WÄHLEN:") block (if block (car block) ) ) (if (and block (= "INSERT" (cdr (assoc 0 (entget block)))) ) (setq blockname (cdr (assoc 2 (entget block))) blockwinkel (* (/ (cdr (assoc 50 (entget block))) pi) 180.0) #bloecke (ssget "x" (list (cons 0 "INSERT") (cons 2 blockname))) z 0 ) ) (if #bloecke (progn (princ (sslength #bloecke)) (repeat (sslength #bloecke) (setq block (entget (setq BLK (ssname #bloecke z))) z (1+ z) nw (* (/ (cdr (assoc 50 block)) pi) 180.0) ) (command "_.rotate" BLK "" (cdr (assoc 10 block)) "B" nw blockwinkel) ) ) ) (command "_.undo" "_E") )
@Marvin Schnelle Lösungen sind mit (command einfacher zu realisieren Bei Fragen ... Grüße Holger ------------------ Holger Brischke CADlon - Lisp over night! 10, 9, 8 - Der Countdown läuft. Wofür?... ./. Ich bin vom 07.-10.10. in Stuttgart dabei.
[Diese Nachricht wurde von Brischke am 16. September 2003 editiert.] [Diese Nachricht wurde von Brischke am 16. September 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daiz Mitglied
Beiträge: 224 Registriert: 06.09.2003 SYSTEMINFO: WinXP, Map 3d 2006
|
erstellt am: 16. Sep. 2003 20:45 <-- editieren / zitieren --> Unities abgeben:
Hallo, vielen Dank auch an Holger für das erweitern von marvins prog. und an die anderen, die versucht haben, mir zu helfen. ...traut sich denn auch wer an meine schöne Punktliste Vielleicht beschreibe ich das Problem die Tage nochmal genauer...
daiz
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 16. Sep. 2003 23:52 <-- editieren / zitieren --> Unities abgeben: Nur für daiz
Hallo Daiz, trauen, ja sicher doch. nur aus Deinen 2 Zeilen der Koordinatenliste, kann ich noch kein System erkennen. Zumal beide Punkte durch den Code 11 gekennzeichnet sind. ??? Oder heißt das, dass zu jedem Punkt die daten gehören, die den selben Code haben?? Das beste ist, du setzt hier mal eine solche Datei rein. 2. Frage: Was heißt in den Punkt drehen? Grüße Holger ------------------ Holger Brischke CADlon - Lisp over night! 10, 9, 8 - Der Countdown läuft. Wofür?... ./. Ich bin vom 07.-10.10. in Stuttgart dabei. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daiz Mitglied
Beiträge: 224 Registriert: 06.09.2003 SYSTEMINFO: WinXP, Map 3d 2006
|
erstellt am: 17. Sep. 2003 10:41 <-- editieren / zitieren --> Unities abgeben:
Hallo, meine Angaben zu meinem "Listenproblem" sind wohl wirklich etwas dürftig. Andererseits wollte ich euch nicht durch einen "Roman" abschrecken. Nun ist es doch ein "Roman" geworden Wer sich es antuen mag, kann sich ja die beigefügte txt-Datei mal anschauen. Allen hier vielen Dank für soviel Aufmerksamkeit und Hilfsbereitschaft. Das ist mir ja fast schon etwas peinlich. Ich hoffe, ich kann hier auch mal irgendwie helfen. liebe Grüße, Daiz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 17. Sep. 2003 12:59 <-- editieren / zitieren --> Unities abgeben: Nur für daiz
Hallo Diaz, du hast also schon irgendein Tool, was dir das macht. Du kannst mir das gerne zumailen, dann sehe ich, wie das Einlesen und die Unterscheidung gemacht wird. Ich denke, da dann auch mit wenigen Eingriffen etwas bewirken zu können. Grüße Holger ------------------ Holger Brischke CADlon - Lisp over night! 10, 9, 8, 7 - Der Countdown läuft. Wofür?... ./. Ich bin vom 07.-10.10. in Stuttgart dabei. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daiz Mitglied
Beiträge: 224 Registriert: 06.09.2003 SYSTEMINFO: WinXP, Map 3d 2006
|
erstellt am: 17. Sep. 2003 13:53 <-- editieren / zitieren --> Unities abgeben:
Hallo, also das Einlesen passiert zeilenweise mit "read-line", dabei werden die verschieden Einträge an Variablen übergeben. Die Varable pkt ist z.B. die (x,y)-Koordinate der aktuell eingelesenen Zeile. Hier nun die Zeilen des progs, die regeln, was passiert, wenn der Punktcode=11 ist: (while ... (if .... (progn .... (if (and (= pcode "11") (= pcodealt "11")) (progn (setq restrecke (distance realt pkt)) (if (< restrecke 0.6) (progn (command "layer" "se" "layer11" "") (command "einfüge" "block11" pkt "1" "1" realt) ) ) ) (setq pcodealt pcode) (if (= pcode "11") (setq realt pkt)) ) ;progn Ende ) ;if Ende ) ;while Ende daiz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 17. Sep. 2003 15:39 <-- editieren / zitieren --> Unities abgeben: Nur für daiz
Hallo Diaz, auf die Schnelle würde ich noch einen Zähler einbauen. Wenn code 11 erstmalig gefunden wird z=1 Wenn code 11 zum zweiten mal gefunden wird z=2 Das würde ich in deiner Bedingung mit einbauen (if (and (= pcode "11") (= pcodealt "11") (= z 2)) wenn der Block gezeichnet ist, diesen Zähler einfach wieder auf 0 setzen. (progn ... (setq z 0) ) Dann sollte dies funktionieren. Bei Fragen ... Grüße Holger ------------------ Holger Brischke CADlon - Lisp over night! 10, 9, 8, 7 - Der Countdown läuft. Wofür?... ./. Ich bin vom 07.-10.10. in Stuttgart dabei. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daiz Mitglied
Beiträge: 224 Registriert: 06.09.2003 SYSTEMINFO: WinXP, Map 3d 2006
|
erstellt am: 17. Sep. 2003 22:07 <-- editieren / zitieren --> Unities abgeben:
Hallo, manchmal ist es ja soooo einfach, wenn man nur weiß wie Das mit dem zusätzlichen Zähler hatte ich mir auch schon mal überlegt. Ich wollte, daß dieser Zähler sich bei jeder zweiten "11" wieder zurückstellt. Das hat aber nicht so geklappt. Ich bin einfach nicht drauf gekommen, das "Zähler-Zurückstellen" mit dem Ereignis "Block-Einfügen" zu verbinden ... Unten steht der geänderte Code und er funktioniert. Es war übrigens gar nicht so einfach, noch einen Namen für die neue Variable zu finden. Ich arbeite da wohl mit zu vielen setqs. Naja, wenn ich fleißig lerne, funktionierenden Code zu schreiben, vielleicht sieht der dann ja auch irgendwann mal gut aus ... Vielen Dank, Holger, für die richtige Idee. liebe Grüße, Daiz (setq rez 0)
(while ... (if .... (progn .... (if (= pcode "11") (setq rez (1+ rez))) (if (and (= pcode "11") (= pcodealt "11") (= rez 2)) (progn (command "layer" "se" "layer11" "") (command "einfüge" "block11" pkt "1" "1" realt) (setq rez 0) ) ) (setq pcodealt pcode) (if (= pcode "11") (setq realt pkt)) ) ;progn Ende ) ;if Ende ) ; while Ende
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |