Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Block nach Raster einfügen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von xem an!   Senden Sie eine Private Message an xem  Schreiben Sie einen Gästebucheintrag für xem

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 30. Apr. 2009 12:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für xem 10 Unities + Antwort hilfreich

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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für xem 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von xem an!   Senden Sie eine Private Message an xem  Schreiben Sie einen Gästebucheintrag für xem

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 30. Apr. 2009 14:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für xem 10 Unities + Antwort hilfreich

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



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 ansehenKonstruktion, Visualisierung

Ex-Mitglied

erstellt am: 01. Mai. 2009 13:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz