| |
![](https://ww3.cad.de/php/image.php?resolution=width:20050) | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Block nach Raster einfügen (566 mal gelesen)
|
xem Mitglied Zeichner
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für xem](/foren/ubb/pmimages/gbu.gif) Beiträge: 847 Registriert: 07.08.2008 Software: AutoCAD 2022 - 64bit Windows 10 Pro - 64bit PDFCreator 1.0.2 - 32bit Ghostscript 9.0 - 64bit PDF-XChange Viewer - 64bit GIMP 2.6.8 - 64bit MS Office 2013 - 32bit Opera 12 - 32bit MacroX - 32bit 7-zip - 64bit ----------------------- Hardware: Intel i5 680 3,6GHz @ 4GHz 8GB RAM 1333MHz nVidia GTX 460 1024MB Intel SSD 2.5 80GB X25-M Samsung SyncMaster 245B+ Iiyama ProLite E1900s Logitech mx518 Logitech G11 Roccat Sense Glacier Blue
|
erstellt am: 30. Apr. 2009 11:53 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif)
Hallo, ich habe hier ein LISP, welches supi funzt. Code: defun c:bel (/ Blockn corner1 corner2 columns rows roomwidth roomheight colspacing rowspacing) (setq corner1 (getpoint "erste Ecke im Raum: ") corner2 (getpoint "gegenüber liegende Ecke: ") columns (getint "Anzahl X Richtung: ") rows (getint "Anzahl Y Richtung: ") roomwidth (abs (- (car corner1) (car corner2))) roomheight (abs (- (cadr corner1) (cadr corner2))) colspacing (/ roomwidth columns) rowspacing (/ roomheight rows) lowerleft (list (min (car corner1) (car corner2)) (min (cadr corner1) (cadr corner2)) ); end list ) (setq punktx (+(car lowerleft) (/ colspacing 2.0))) (setq punkty (+(car lowerleft) (/ rowspacing 2.0))) (command "_insert" "E-Beleuchtung" (list(+ (car lowerleft) (/ colspacing 2.0))(+ (cadr lowerleft) (/ rowspacing 2.0))0) "" "" "")
(if (= columns 1) (command "_array" "l" "" "R" rows columns rowspacing) (if (= rows 1) (command "_array" "l" "" "R" rows columns colspacing) (command "_array" "l" "" "R" rows columns rowspacing colspacing) ) ) )
Jetzt wäre es nicht schlecht wenn nach dem Einfügen alle eingefügten Blöcke schon ausgewählt wären, um über die Eigenschaften die Sichtbarkeit wählen zu können. Hat da einer eine Idee wie das funktionieren könnte? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
![](/foren/ubb/Admin1.gif) ![](/foren/ubb/Admin2.gif) ![](/foren/ubb/Admin3.gif) ![](/foren/ubb/Admin4.gif) ![](/foren/ubb/Admin5.gif) ![](/foren/ubb/Admin1.gif) ![](/foren/ubb/Admin2.gif) ![](/foren/ubb/Admin3.gif)
![](/foren/avatars/cadffm.gif)
![Schreiben Sie einen Gästebucheintrag für cadffm](/foren/ubb/pmimages/gbu.gif) Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 30. Apr. 2009 12:15 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für xem
Wenn man die normale Möglichkeit der Objektwahl nutzt: vorher ALLE wählen&merken - nach dem erstellen der Leuchtenanordung wieder ALLE wählen und die vorherigen "alle" aus dem Auswahlsatz entfernen Für obiges "Bel" bedeutet das: Vor dem ("Command "_insert" ein (setq AWSOLD (ssget"_X")) und vor der letzten Klammer ein (command "_.pselect" "_all" "_r" AWSOLD "") Dies ist nicht wirklich Programmierung, aber am leichtesten nachzuvollziehen denke ich. in der Befehlszeile, einem Makro oder Script wäre es also: ;---------------------------- WAHL ALLE irgendwasohneObjektwahlmachen PSELECT ALLE ENTFERNEN VORHER ;---------------------------- ------------------ die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
![](/foren/ubb/Admin1.gif) ![](/foren/ubb/Admin2.gif) ![](/foren/ubb/Admin3.gif) ![](/foren/ubb/Admin4.gif) ![](/foren/ubb/Admin5.gif) ![](/foren/ubb/Admin1.gif) ![](/foren/ubb/Admin2.gif) ![](/foren/ubb/Admin3.gif)
![](/foren/avatars/CADmium.gif)
![Schreiben Sie einen Gästebucheintrag für CADmium](/foren/ubb/pmimages/gbu.gif) Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 30. Apr. 2009 12:16 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für xem
jo, so.. und dann die NEWSOBJ in einen Auswahlsatz -> ssadd und den dann mit sssetfirst aktiv setzen ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xem Mitglied Zeichner
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für xem](/foren/ubb/pmimages/gbu.gif) Beiträge: 847 Registriert: 07.08.2008 Software: AutoCAD 2022 - 64bit Windows 10 Pro - 64bit PDFCreator 1.0.2 - 32bit Ghostscript 9.0 - 64bit PDF-XChange Viewer - 64bit GIMP 2.6.8 - 64bit MS Office 2013 - 32bit Opera 12 - 32bit MacroX - 32bit 7-zip - 64bit ----------------------- Hardware: Intel i5 680 3,6GHz @ 4GHz 8GB RAM 1333MHz nVidia GTX 460 1024MB Intel SSD 2.5 80GB X25-M Samsung SyncMaster 245B+ Iiyama ProLite E1900s Logitech mx518 Logitech G11 Roccat Sense Glacier Blue
|
erstellt am: 30. Apr. 2009 13:43 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif)
also so funzt es Code: (defun c:bel (/ Blockn corner1 corner2 columns rows roomwidth roomheight colspacing rowspacing) (setq corner1 (getpoint "erste Ecke im Raum: ") corner2 (getpoint "gegenüber liegende Ecke: ") columns (getint "Anzahl X Richtung: ") rows (getint "Anzahl Y Richtung: ") roomwidth (abs (- (car corner1) (car corner2))) roomheight (abs (- (cadr corner1) (cadr corner2))) colspacing (/ roomwidth columns) rowspacing (/ roomheight rows) lowerleft (list (min (car corner1) (car corner2)) (min (cadr corner1) (cadr corner2)) ); end list ) (setq punktx (+(car lowerleft) (/ colspacing 2.0))) (setq punkty (+(car lowerleft) (/ rowspacing 2.0)))(setq AWSOLD (ssget"_X")) (command "_insert" "E-Beleuchtung" (list(+ (car lowerleft) (/ colspacing 2.0))(+ (cadr lowerleft) (/ rowspacing 2.0))0) "" "" "") (if (= columns 1) (command "_array" "l" "" "R" rows columns rowspacing) (if (= rows 1) (command "_array" "l" "" "R" rows columns colspacing) (command "_array" "l" "" "R" rows columns rowspacing colspacing) ) ) (command "_.pselect" "_all" "_r" AWSOLD "") )
jetzt habe ich noch einen Layer dazu zu basteln Code: (defun c:bel (/ Blockn corner1 corner2 columns rows roomwidth roomheight colspacing rowspacing) (setq layfarb "4"); Farbe für Layer (command "layer" "m" "E-Beleuchtung" "fa" layfarb "E-Beleuchtung" "") (setq corner1 (getpoint "erste Ecke im Raum: ") corner2 (getpoint "gegenüber liegende Ecke: ") columns (getint "Anzahl X Richtung: ") rows (getint "Anzahl Y Richtung: ") roomwidth (abs (- (car corner1) (car corner2))) roomheight (abs (- (cadr corner1) (cadr corner2))) colspacing (/ roomwidth columns) rowspacing (/ roomheight rows) lowerleft (list (min (car corner1) (car corner2)) (min (cadr corner1) (cadr corner2)) ); end list ) (setq punktx (+(car lowerleft) (/ colspacing 2.0))) (setq punkty (+(car lowerleft) (/ rowspacing 2.0)))(setq AWSOLD (ssget"_X")) (command "_insert" "E-Beleuchtung" (list(+ (car lowerleft) (/ colspacing 2.0))(+ (cadr lowerleft) (/ rowspacing 2.0))0) "" "" "") (if (= columns 1) (command "_array" "l" "" "R" rows columns rowspacing) (if (= rows 1) (command "_array" "l" "" "R" rows columns colspacing) (command "_array" "l" "" "R" rows columns rowspacing colspacing) ) ) (command "_.pselect" "_all" "_r" AWSOLD "") )
Wie mache ich das jetzt wenn ich eine neue Zeichnung habe wo der Block noch nicht eingefügt ist? Kann ich auch im LISP sagen wo der Block liegt? Habe eine Zeichnung mit allen Blöcken drin und daraus müßte er bezogen werden.
[Diese Nachricht wurde von xem am 30. Apr. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
![](/foren/ubb/Admin1.gif) ![](/foren/ubb/Admin2.gif) ![](/foren/ubb/Admin3.gif) ![](/foren/ubb/Admin4.gif) ![](/foren/ubb/Admin5.gif) ![](/foren/ubb/Admin1.gif) ![](/foren/ubb/Admin2.gif) ![](/foren/ubb/Admin3.gif)
![](/foren/avatars/cadffm.gif)
![Schreiben Sie einen Gästebucheintrag für cadffm](/foren/ubb/pmimages/gbu.gif) Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 30. Apr. 2009 14:49 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für xem
Also wer einen großen Blockbestand hat und mit Scripten arbeiten kann (und nicht soo gut in Lisp is) für den bietet es sich an EineBlockdefinition als EineDWG abzulegen. Wenn das so wäre bei dir könntest du ein _-insert "C:/MeinPfad/MeinBlock001.dwg" angeben, auf eine interne Blockdefinition einer DWG zugreifen geht so (einfach) nicht. Krücke für dich: Blockbibliothek.DWG einfügen und löschen, dann hast du die Blockdefinition aller entahltenenBlöcke zur Verfügung - kannst den einen einfügen und danach bereinigen. ------------------ die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
![](https://ww4.cad.de/Ads/adview.php?what=zone:16178&n=aee1ae73)
| Konstrukteur Fahrrad und Fahrradkomponenten (m/w/d) | WE MAKE THINGS GmbH ist ein international agierendes Unternehmen, das im Bereich Produktion und Design von Fahrrädern, Rad-Accessoires, Sneaker und Bekleidung tätig ist. Kontinuierlich schaffen wir internationale Standards für funktionale und ästhetisch herausragende Produkte. THINGS WE MAKE ARE THINGS WE LOVE. Als innovatives und stetig wachsendes Unternehmen mit einem hohen ... | Anzeige ansehen | Konstruktion, Visualisierung |
|
Ex-Mitglied
|
erstellt am: 01. Mai. 2009 13:11 <-- editieren / zitieren -->
Hi, ev. gibt es andere Gründe, dass die Objekte per LISP erzeugt werden, vielleicht hilft aber auch die Info, dass es einen Befehl 'meinfüg'/'_minsert' gibt, der (fast) gleiches macht. Der Unterschied besteht lediglich darin, dass ein anderer Elementtyp erstellt wird ('Meingüf Block') mit dem Vorteil, dass die Anzahl der Reihen/Spalten und die Abstände X/Y auch im nachhinein (Eigenschaftsfenster) noch verstellbar sind ohne die Gruppe neu erzeugen zu müssen. - alfred - ------------------ www.hollaus.at |