| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| CIDEON Whitepaper: Elektronik und Mechanik redundanzfrei vereinen: Der Weg zur mechatronischen Stückliste, ein Whitepaper
|
Autor
|
Thema: Blockdefinition ohne sprengen? (8425 mal gelesen)
|
Alpschorsch Mitglied Dipl.-Ing.(FH) Architektur
Beiträge: 735 Registriert: 18.11.2003 Grafikkarte: Rage128 Fury ProII 32MB Prozzesor ~1,5MHz Arbeitsspeicher~1,3GB Windows 2000 Professional ACAD 2004 Express Tools(deutsch) Photoshop 7.0 Quark Express 5.5 Acrobat 5.0
|
erstellt am: 13. Jan. 2004 10:43 <-- editieren / zitieren --> Unities abgeben:
Hallo, kurze Frage! Sieht jemand eine Möglichkeit einen Block neu zudefinieren und zu benennen ohne ihn zu sprengen? Also, ich meine das so! Vorhandenen Block kopieren (Geometrie soll erhalten bleiben!), dann die Kopie als neuen Block definieren und benennen! Hat folgenden Sinn! Das Teil ist z.B. ein und das selbe, aber einmal sichtbar(z.B. continous) und einmal unsichtbar(z.B AcadISO03W100) War das verständlich? Vielleicht gibt es ja eine Möglichkeit, die ich noch nicht kenne! Danke! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
j-sc Ehrenmitglied
Beiträge: 1838 Registriert: 14.07.2003 W7 64Bit intel core I7 2,8GHz / 4GB ATI FIRE PRO V5800 acad2011 acad2015 acad2018 Athena Expresstools
|
erstellt am: 13. Jan. 2004 10:51 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
Hallo, Hast Du schon mal dran gedacht, den Block einfach nur auf andere Layer zu legen? J-SC Edit: Dafür müssen natürlich die Elemente im Block auf Layer 0 mit Farbe und Linientyp VONBLOCK definiert sein. J-SC [Diese Nachricht wurde von j-sc am 13. Jan. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proxy Ehrenmitglied Stateless-DHCP v6-Paketfragmentierer
Beiträge: 1629 Registriert: 13.11.2003 Tastaturen, Mäuse, Pladden, Monitore, ...
|
erstellt am: 13. Jan. 2004 10:52 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
also z.B. Blockname = "Konstruktionsabschnitt_2" mit einem Klick ändern auf "Konstruktionsabschnitt_2_Verdeckt" ändern und mit einem anderen Programm auf dann die interne Blockstruktur auf den "Verdeckenden" Layer setzen. Die erste Funktion kannst benutzen um ein Block mit einem Klick umzubenennen, mit Nuke von CADwiesel.de kannst die "vererbung" auf den Block anwenden. Solltenst noch den Layer auf dem der Block eingefügt/verdeckt/vererbt werden soll noch bei Nuke deinen Wünschen entsprechend deklarieren. Code:
(defun C:BLOCK_RENAME () (setq #OLD_NAME# nil) (setq #PR# T) (defun NEW_NAME () (setq #NEW_NAME# (dos_getstring "Blockname ändern" "Blockname:" #OLD_NAME#) ) ;;setq #NEW_NAME# ) ;;defun NEW_NAME (setq #ob# (car (entsel "\nBlock wählen: ") ) ) ;;setq #ob# (setq #OLD_NAME# (cdr (assoc 2 (entget #ob#) ) ) ) ;;setq #OLD_NAME# (setq #el# (entget (cdr (assoc -2 (cdr (tblsearch "BLOCK" #OLD_NAME#) ) ) ) ) ) ;;setq #el# (setq #el1# (entget (cdr (assoc 330 #el#) ) ) ) ;;setq #el1# (while #PR# (NEW_NAME) (if (= (tblsearch "BLOCK" #NEW_NAME#) nil) (setq #PR# nil) ) ) ;; (setq #el1# (subst (cons 2 #NEW_NAME#) (assoc 2 #el1#) #el1# ) ) ;;setq #el1# (entmod #el1#) (entupd #el#) )
------------------ (entmake (entget (entlast))) | Die Pro-Version auf Anfrage erhältlich. "Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?" Read the whole story: The Autodesk File Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Alpschorsch Mitglied Dipl.-Ing.(FH) Architektur
Beiträge: 735 Registriert: 18.11.2003 Grafikkarte: Rage128 Fury ProII 32MB Prozzesor ~1,5MHz Arbeitsspeicher~1,3GB Windows 2000 Professional ACAD 2004 Express Tools(deutsch) Photoshop 7.0 Quark Express 5.5 Acrobat 5.0
|
erstellt am: 13. Jan. 2004 10:55 <-- editieren / zitieren --> Unities abgeben:
|
j-sc Ehrenmitglied
Beiträge: 1838 Registriert: 14.07.2003 W7 64Bit intel core I7 2,8GHz / 4GB ATI FIRE PRO V5800 acad2011 acad2015 acad2018 Athena Expresstools
|
erstellt am: 13. Jan. 2004 11:02 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
Hallo, ohne in philosophische Diskussionen über die Arbeitsweise mit acad verfallen zu wollen, aber bei uns werden Farb und Linientypzuordnungen ausschließlich über die Layer zugeordnet. Den Elementen selber wird keine feste Farbe oder Linientyp verpasst. Also Block auf Layer xyz_verdeckt (oder wie auch immer) und es ist so wie's sein soll. J-SC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Alpschorsch Mitglied Dipl.-Ing.(FH) Architektur
Beiträge: 735 Registriert: 18.11.2003 Grafikkarte: Rage128 Fury ProII 32MB Prozzesor ~1,5MHz Arbeitsspeicher~1,3GB Windows 2000 Professional ACAD 2004 Express Tools(deutsch) Photoshop 7.0 Quark Express 5.5 Acrobat 5.0
|
erstellt am: 13. Jan. 2004 11:08 <-- editieren / zitieren --> Unities abgeben:
HI Proxy, erstmal Danke für deine schnelle Antwort! Ich weiß nicht ob ich das alles verstanden habe! Ist das Ergebnis: -zwei Blöcke -zwei Namen -gleiche Geometrie -zwei Layer -zwei Darstellungen (verdeckt und sichtbar) -erstellt aus einen Block -ohne zu Sprengen das wäre toll! Dann probiere ich das sofort mal aus! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Karin72 Mitglied
Beiträge: 278 Registriert: 13.05.2003 Autocad Map 2004, WS-Landcad, LT 2004, LT-Extender,
|
erstellt am: 13. Jan. 2004 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
@alpschorsch habe ich das so richtig verstanden, Du willst einen Block ändern und zudem den Originalblock erhalten? ich würde in so einem Fall den Block umbenennen (ddrename), Doppelklick (Referenz bearbeiten, z.B Layer, etc.)und anschließend den Originalblock wieder in die Zeichnung einfügen (ddinsert). Nur so eine Idee....
------------------ Grüße Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Alpschorsch Mitglied Dipl.-Ing.(FH) Architektur
Beiträge: 735 Registriert: 18.11.2003 Grafikkarte: Rage128 Fury ProII 32MB Prozzesor ~1,5MHz Arbeitsspeicher~1,3GB Windows 2000 Professional ACAD 2004 Express Tools(deutsch) Photoshop 7.0 Quark Express 5.5 Acrobat 5.0
|
erstellt am: 13. Jan. 2004 11:29 <-- editieren / zitieren --> Unities abgeben:
Hi Karin, ddrename bringt in diesem Falle ja nicht's! -Block kopieren (in einer Zeichnung) -einen umbenennen -Geometrie bleibt erhalten -dann in einem Block Linientypen ändern etc. Oder wie macht Ihr das so? Laße mich gerne belehren! Kurz: ein Teil, aber zwei Darstellungen (sichtbar, unsichtbar) ohne Sprengen! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kramer24 Ehrenmitglied V.I.P. h.c. Architekt
Beiträge: 5896 Registriert: 09.11.2001 Acad Architecture 2023 WIN 10
|
erstellt am: 13. Jan. 2004 11:33 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
Zitat: Original erstellt von Alpschorsch: Kurz: ein Teil, aber zwei Darstellungen (sichtbar, unsichtbar) ohne Sprengen!
aber das genau geht doch mit zwei Layern, wenn Du jedem Layer einen Linientyp zuordnest, und die Objekte im Block auf "von Layer" stellst... (s. J-SC) Lothar ------------------ "Stellt Euch vor, es geht, und keiner kriegt's hin." (Neuss) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Karin72 Mitglied
Beiträge: 278 Registriert: 13.05.2003 Autocad Map 2004, WS-Landcad, LT 2004, LT-Extender,
|
erstellt am: 13. Jan. 2004 11:35 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
|
Alpschorsch Mitglied Dipl.-Ing.(FH) Architektur
Beiträge: 735 Registriert: 18.11.2003 Grafikkarte: Rage128 Fury ProII 32MB Prozzesor ~1,5MHz Arbeitsspeicher~1,3GB Windows 2000 Professional ACAD 2004 Express Tools(deutsch) Photoshop 7.0 Quark Express 5.5 Acrobat 5.0
|
erstellt am: 13. Jan. 2004 11:41 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Kramer24: aber das genau geht doch mit zwei Layern, wenn Du jedem Layer einen Linientyp zuordnest, und die Objekte im Block auf "von Layer" stellst... (s. J-SC) Lothar
Hallo, "von block" meinst Du! Ja geht schon, aber das setzt voraus, daß alles im Block (Verschachtelungen) auf "von Block" sind! Wie gesagt Philosophie! Aber ich denke darüber nach, was der beste Weg ist! Vielleicht sollte ich meine nochmal in Frage stellen!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
j-sc Ehrenmitglied
Beiträge: 1838 Registriert: 14.07.2003 W7 64Bit intel core I7 2,8GHz / 4GB ATI FIRE PRO V5800 acad2011 acad2015 acad2018 Athena Expresstools
|
erstellt am: 13. Jan. 2004 12:11 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
Hallo, nur noch zur Info, haben die Elemente im Block (soweit sie auf Layer "0" liegen) die Farb- und Linientypeigenschaft VONLAYER, dann nehmen sie tatsächlich NUR die Eigenschaften des Layers an, auf dem der Block liegt. Nur bei Eigenschaften VONBLOCK werden auch dem Block festzugeordnete Eigenschaften übernommen. J-SC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AsSchu Ehrenmitglied Konstrukteur
Beiträge: 1632 Registriert: 27.06.2003 ACAD 2012
|
erstellt am: 13. Jan. 2004 12:11 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
Original erstellt von j-sc: Hallo, Hast Du schon mal dran gedacht, den Block einfach nur auf andere Layer zu legen? J-SC Edit: Dafür müssen natürlich die Elemente im Block auf Layer 0 mit Farbe und Linientyp VONBLOCK definiert sein. J-SC Hallo Alpschorsch, warum machst du es nicht wie in o.a. Das ist am einfachsten. Meine Blöcke sind alle so deffiniert (die aus der BIB). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Alpschorsch Mitglied Dipl.-Ing.(FH) Architektur
Beiträge: 735 Registriert: 18.11.2003 Grafikkarte: Rage128 Fury ProII 32MB Prozzesor ~1,5MHz Arbeitsspeicher~1,3GB Windows 2000 Professional ACAD 2004 Express Tools(deutsch) Photoshop 7.0 Quark Express 5.5 Acrobat 5.0
|
erstellt am: 13. Jan. 2004 12:38 <-- editieren / zitieren --> Unities abgeben:
|
AsSchu Ehrenmitglied Konstrukteur
Beiträge: 1632 Registriert: 27.06.2003 ACAD 2012
|
erstellt am: 13. Jan. 2004 12:49 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
|
j-sc Ehrenmitglied
Beiträge: 1838 Registriert: 14.07.2003 W7 64Bit intel core I7 2,8GHz / 4GB ATI FIRE PRO V5800 acad2011 acad2015 acad2018 Athena Expresstools
|
erstellt am: 13. Jan. 2004 12:53 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
Bin zwar nicht AsSchu, versuch aber trotzdem mal 'ne Antwort. Auf das Problem erhält man von 10 Leuten wahrscheinlich mindenstens 12 verschiedene Antworten. Wie man's denn macht, muss mann sowieso für sich selbst entscheiden. Wir haben für Normteile 'ne Applikation, die uns die ganze Schraube (halt auch auf den Layer verdeckt) oder auch nur den Kopf einfügt. So richtig eklig wird es dann erst, wenn ein Teil vom Kopf noch durch ein anderes Bauteil verdeckt wird. Bei aller Liebe, wenn es denn wirklich nötig ist, so nen Punkt zeichnerisch 100%ig korrekt darzustellen, dann spreng ich halt die ein zwei Blöcke und mach's wie ein Zeichner am Brett. Aber ob es den nötig ist - das ist schon die 2 oder 3 Sekunden Überlegung wert. In der Regel sind nämlich dann im Ausdruck die Schrauben so klein und die Linien so kurz, dass auch 'ne verdeckte Linie nur ein Strich ist. Ciao J-SC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Alpschorsch Mitglied Dipl.-Ing.(FH) Architektur
Beiträge: 735 Registriert: 18.11.2003 Grafikkarte: Rage128 Fury ProII 32MB Prozzesor ~1,5MHz Arbeitsspeicher~1,3GB Windows 2000 Professional ACAD 2004 Express Tools(deutsch) Photoshop 7.0 Quark Express 5.5 Acrobat 5.0
|
erstellt am: 13. Jan. 2004 12:54 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 13. Jan. 2004 13:04 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
noch n Tipp: wenn du sowas andauernd machen mußt - schaff dir Mechanical an, da gibts dann "am2dhide" - d.h. "Ausblenden". Und dieses Tool macht intern genau das was du willst ... einen neuen Block mit Identischen Referenzpunkten... verdeckten bzw. Ausgeblendeten ( Auf einen Layer der aus ist)oder gar gelöschten Linien. Man kann dazu noch wählen, ob nicht sinnvolle Layer ( Mittellinien ) nicht berücksichtigt werden und und... Du kannst dir natürlich auch son Ding selber schreiben... aber dann : Lohnt es sich wirklich?????????????? ... (u.a. dieser Thread und die Postings ) Gruß Thomas ------------------ Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Alpschorsch Mitglied Dipl.-Ing.(FH) Architektur
Beiträge: 735 Registriert: 18.11.2003 Grafikkarte: Rage128 Fury ProII 32MB Prozzesor ~1,5MHz Arbeitsspeicher~1,3GB Windows 2000 Professional ACAD 2004 Express Tools(deutsch) Photoshop 7.0 Quark Express 5.5 Acrobat 5.0
|
erstellt am: 13. Jan. 2004 13:16 <-- editieren / zitieren --> Unities abgeben:
HI Thomas, Mechanical hab ich schon vorgeschlagen! Chefe! Muß ich noch ein bischen bequatschen! Selbst schreiben kann ich leider noch nicht! Aber ich danke euch für eure hilfreichen Tips! Und jetzt raus mit den U's!
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: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 13. Jan. 2004 13:48 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
Hallo, auch wenn die Diskussion sich schon fast erübrigt hat möchte ich noch mal unabhängig von der Problemstellung auf den Kern der Frage zurück kommen. Die da war: Kopieren einer Blockdefinition auf einen anderen Namen. Proxy hat ja ein RENAME vorgeschlagen, was in meinen Augen den Kern nicht trifft. Da ich die Aufgabenstellung ansich interessant finde, hier eine Lösung dazu:
Code:
(defun C:BLOCK_COPY (/ #OLD_NAME# #NEW_NAME# blkl nblk) (prompt "\nBlock wählen: ") (setq #ob# (ssget "_:S" '((0 . "INSERT")))) (if #ob# (progn (setq #ob# (ssname #ob# 0) #OLD_NAME# (cdr (assoc 2 (entget #ob#))) #el# (tblobjname "BLOCK" #OLD_NAME#) ) (while (if #NEW_NAME# (tblsearch "BLOCK" #NEW_NAME#) T) (setq #NEW_NAME# (getstring "Blockname:")) ) (setq blkl (cons (subst (cons 2 #NEW_NAME#) (assoc 2 (entget #el#)) (entget #el#) ) blkl)) (while (setq #el# (entnext #el#)) (setq blkl (cons (entget #el#) blkl)) ) (mapcar 'entmake (mapcar '(lambda (L) (vl-remove-if '(lambda (W) (member (car W)'(-1 330 -2 5)) ) L ) ) (reverse blkl) ) ) (setq nblk (entmake (list '(0 . "endblk")))) (princ (strcat "Block "(if nblk nblk "NOT")" Made")) ) (prompt "Keinen Block gewählt! - Ende!") ) )
Man könnte nun noch reinbauen, dass alle Linien des Linientyps A gleich den Linientyp B zugewiesen bekommen, gleiches auch mit Farben oder was auch immer.
@proxy Zu deinem Code ein paar Anmerkungen: du hast hier eine SUB-Funktion (dos_getstring "Blockname ändern" "Blockname:" #OLD_NAME#) aufgerufen, die nicht zum Standard LISP-Funktionsumfang gehört. Diese solltest du dann ebenfalls mit posten. Du solltest dir ebenfalls mal den Umgang mit Variablen anschauen. Dies kannst du auf meinen Seiten unter Hilfe->Training Teil 1 und 2 machen oder schaust mal auf mapcar's Seiten vorbei, dort ist das auch sehr gut beschrieben. Deine Variablen sind alle Global vereinbart, was unter Umständen zu Fehlern in ganz anderen Programmen führen kann. Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AsSchu Ehrenmitglied Konstrukteur
Beiträge: 1632 Registriert: 27.06.2003 ACAD 2012
|
erstellt am: 13. Jan. 2004 13:55 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
|
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 13. Jan. 2004 14:03 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
Ich habe es unter 2000 geschrieben .. nun auch in 2004 getestet .. funzt. Ich habe den Code aus dem Forum kopiert ... und es funktioniert immer noch. Stell mal eine Zeichnung mit dem Block rein .. dann schau ich mal, woran das liegen könnte. Grüße Holger
------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AsSchu Ehrenmitglied Konstrukteur
Beiträge: 1632 Registriert: 27.06.2003 ACAD 2012
|
erstellt am: 13. Jan. 2004 14:15 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
|
Alpschorsch Mitglied Dipl.-Ing.(FH) Architektur
Beiträge: 735 Registriert: 18.11.2003 Grafikkarte: Rage128 Fury ProII 32MB Prozzesor ~1,5MHz Arbeitsspeicher~1,3GB Windows 2000 Professional ACAD 2004 Express Tools(deutsch) Photoshop 7.0 Quark Express 5.5 Acrobat 5.0
|
erstellt am: 13. Jan. 2004 14:16 <-- editieren / zitieren --> Unities abgeben:
Super Brischke! Respekt! Das is doch ein Klasse Werkzeug! Mal abgesehen davon wie man seine Zeichnung organisiert, können das sicherlich viele gebrauchen! Hätte noch Idee wie man das verfeinern könnte! Aber is sp schon Gold wert! Super,super! 10 U's for you! 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: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 13. Jan. 2004 14:18 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
@AsSchu erfolgreich geladen ... ? und dann irgendwann Syntaxfehler Was lädtst du noch alles? @all Hat vielleicht jemand anders getestet und kann seine Erfahrung mitteilen? (Macht sich immer blöd, wenn der Programmierer sagt, bei mir geht alles ) Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AsSchu Ehrenmitglied Konstrukteur
Beiträge: 1632 Registriert: 27.06.2003 ACAD 2012
|
erstellt am: 13. Jan. 2004 14:21 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
|
Alpschorsch Mitglied Dipl.-Ing.(FH) Architektur
Beiträge: 735 Registriert: 18.11.2003 Grafikkarte: Rage128 Fury ProII 32MB Prozzesor ~1,5MHz Arbeitsspeicher~1,3GB Windows 2000 Professional ACAD 2004 Express Tools(deutsch) Photoshop 7.0 Quark Express 5.5 Acrobat 5.0
|
erstellt am: 13. Jan. 2004 14:24 <-- editieren / zitieren --> Unities abgeben:
|
AsSchu Ehrenmitglied Konstrukteur
Beiträge: 1632 Registriert: 27.06.2003 ACAD 2012
|
erstellt am: 13. Jan. 2004 14:30 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
|
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 13. Jan. 2004 14:44 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
|
Alpschorsch Mitglied Dipl.-Ing.(FH) Architektur
Beiträge: 735 Registriert: 18.11.2003 Grafikkarte: Rage128 Fury ProII 32MB Prozzesor ~1,5MHz Arbeitsspeicher~1,3GB Windows 2000 Professional ACAD 2004 Express Tools(deutsch) Photoshop 7.0 Quark Express 5.5 Acrobat 5.0
|
erstellt am: 13. Jan. 2004 14:48 <-- editieren / zitieren --> Unities abgeben:
HI Brischke, hätte noch ein kleine Anregung! Will nicht unverschämt sein! Nur wenn Du Lust hast! Ginge das, daß der angeklickte Block auch gleich umbenannt wird? Also, ohne das man den kopierten Block neu einfügen muß! Dann könnte der Block direkt an Ort und Stelle liegen bleiben! Hätte den Vorteil: z.B. Man hat eine Schraube (sichtbar), kopiert sie in den Zusammenbau und definiert sie an Ort und Stelle um. Fertig! Nur wenn Du Lust und Zeit hast! Ist auch so schon ein große Hilfe! Danke! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AsSchu Ehrenmitglied Konstrukteur
Beiträge: 1632 Registriert: 27.06.2003 ACAD 2012
|
erstellt am: 13. Jan. 2004 14:53 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
|
schachtelmacher Mitglied Verpackungsmittelmechaniker, Entwicklung
Beiträge: 86 Registriert: 07.01.2004
|
erstellt am: 13. Jan. 2004 15:09 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
Hi, also ich bin vielleicht ein bisschen spät dran, aber hier meine Lösung: Block kopieren, dann dises Lisp: (nur der Basispunkt/Einfügepunkt des neuen (alten) Blocks angeben) (print "Block zum auflösen wählen: ") (setq block (ssget)) (setq name (getstring "Bitte neuen Namen angeben : ")) (setq pkt (getpoint "Bitte Einfügepunkt auswählen : ")) (command "ursprung" pkt ) (command "Block" name pkt "v" "") (command "-einfüge" name pkt "1" "1" "0")
Ich hoffe Du hast meine kurze Erklärung verstanden, wenn nicht bitte melden! Gruss Ralf ------------------ "Es gibt keine Probleme, sondern nur Lösungen" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Alpschorsch Mitglied Dipl.-Ing.(FH) Architektur
Beiträge: 735 Registriert: 18.11.2003 Grafikkarte: Rage128 Fury ProII 32MB Prozzesor ~1,5MHz Arbeitsspeicher~1,3GB Windows 2000 Professional ACAD 2004 Express Tools(deutsch) Photoshop 7.0 Quark Express 5.5 Acrobat 5.0
|
erstellt am: 13. Jan. 2004 15:25 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von schachtelmacher: Hi, also ich bin vielleicht ein bisschen spät dran, aber hier meine Lösung: Block kopieren, dann dises Lisp: (nur der Basispunkt/Einfügepunkt des neuen (alten) Blocks angeben) (print "Block zum auflösen wählen: ") (setq block (ssget)) (setq name (getstring "Bitte neuen Namen angeben : ")) (setq pkt (getpoint "Bitte Einfügepunkt auswählen : ")) (command "ursprung" pkt ) (command "Block" name pkt "v" "") (command "-einfüge" name pkt "1" "1" "0")
Ich hoffe Du hast meine kurze Erklärung verstanden, wenn nicht bitte melden! Gruss Ralf
Hallo Schachtelmacher,
die Lösung von Brischke ist schon sehr gut! Danke das Du dich auch beteiligst! Aber leider funktioniert dein Ansatz bei mir nicht!
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: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 13. Jan. 2004 16:09 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
Zitat: Original erstellt von Alpschorsch: ... hätte noch ein kleine Anregung!Ginge das, daß der angeklickte Block auch gleich umbenannt wird? Also, ohne das man den kopierten Block neu einfügen muß! Dann könnte der Block direkt an Ort und Stelle liegen bleiben! ...
weil heute Dienstag ist Ich habe es auch noch dahingehend manipuliert, dass man keinen Namen eintippen brauch. Der Blockname wird jetzt autom. generiert. AlterName_Nr Die Nr wird einfach hochgezählt. Man hat somit noch eine Übersicht, welcher Block aus welchem abgeleitet wurde. Empfinde ich als Vorteil. Weiterhin habe ich am Ende noch eine Schleife eingebaut, die den Austausch mehrerer gleichnamiger Blöcke ermöglicht. Die Antwort auf den Befehlsprompt, ob man das möchte ist mit nein vorbelegt, so dass man (falls man nur den einen tauschen wollte) mit rechter Maustaste das Tool beenden kann.
Code:
(defun C:BLOCK_COPY (/ #OLD_NAME# #NEW_NAME# blkl nblk nz) (prompt "\nBlock wählen: ") (setq #ob# (ssget "_:S" '((0 . "INSERT")))) (if #ob# (progn (setq #ob# (ssname #ob# 0) #OLD_NAME# (cdr (assoc 2 (entget #ob#))) #el# (tblobjname "BLOCK" #OLD_NAME#) nz 0 ) (while (if #NEW_NAME# (tblsearch "BLOCK" #NEW_NAME#) T) (setq #NEW_NAME# (strcat #OLD_NAME# "_" (itoa nz));(getstring "Blockname:") nz (1+ nz) ) ) (setq blkl (cons (subst (cons 2 #NEW_NAME#) (assoc 2 (entget #el#)) (entget #el#) ) blkl)) (while (setq #el# (entnext #el#)) (setq blkl (cons (entget #el#) blkl)) ) (mapcar 'entmake (mapcar '(lambda (L) (vl-remove-if '(lambda (W) (member (car W)'(-1 330 -2 5)) ) L ) ) (reverse blkl) ) ) (setq nblk (entmake (list '(0 . "endblk")))) (if nblk (progn (princ (strcat "Block " nblk " Made")) (while #ob# (entmod(subst (cons 2 #NEW_NAME#) (cons 2 #OLD_NAME#) (entget #ob#) ) ) (princ "\nBlock getauscht!") (initget "Ja Nein") (setq antw (getkword (strcat "\nweiteren Block durch " #NEW_NAME# " ersetzen? Ja/Nein <N>:"))) (if (= antw "Ja") (progn (prompt (strcat "\nBlock mit dem Namen "(strcase #OLD_NAME#) " wählen: ")) (setq #ob# (ssget "_:S" (list '(0 . "INSERT") (cons 2 #OLD_NAME#) ) ) ) (if #ob# (setq #ob# (ssname #ob# 0)) (prompt "Keinen Block gewählt! - Ende!") ) ) (setq #ob# nil) ) ) ) (princ "Block NOT made") ) ) (prompt "Keinen Block gewählt! - Ende!") ) )
@Schachtelmacher Hier und auch im Lisp-Forum wurde schon öfter über die (command ...)-Programmierung diskutiert. Es funktioniert, aber eben nicht immer. Solltest dir mal ein paar Beiträge über die Suche rausziehen und lesen. Speziell in deinem Fall muss der Anwender peinlichst genau darauf achten, welches Objekt er wählt. Wird (warum auch immer) eine Schraffur gewählt, so wird diese zunächst mal in den Ursprung versetzt. Ist der Anwender jetzt etwas ungeübt im Umgang mit solchen Tools hat er diese aufgelöste Schraffur in der Zeichnung und weiß nicht einmal warum. Wenn der User dann noch einen bereits existierenden Namen eingibt ... zerschießt sich (wiederum der ungeübte Acad-Anwender) die Zeichnung. Denk drüber nach. Ich weiß, wir haben alle einmal mit (command ..) angefangen, wir müssen aber nicht alle die gleichen Fehler machen. Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Alpschorsch Mitglied Dipl.-Ing.(FH) Architektur
Beiträge: 735 Registriert: 18.11.2003 Grafikkarte: Rage128 Fury ProII 32MB Prozzesor ~1,5MHz Arbeitsspeicher~1,3GB Windows 2000 Professional ACAD 2004 Express Tools(deutsch) Photoshop 7.0 Quark Express 5.5 Acrobat 5.0
|
erstellt am: 13. Jan. 2004 16:13 <-- editieren / zitieren --> Unities abgeben:
|
Alpschorsch Mitglied Dipl.-Ing.(FH) Architektur
Beiträge: 735 Registriert: 18.11.2003 Grafikkarte: Rage128 Fury ProII 32MB Prozzesor ~1,5MHz Arbeitsspeicher~1,3GB Windows 2000 Professional ACAD 2004 Express Tools(deutsch) Photoshop 7.0 Quark Express 5.5 Acrobat 5.0
|
erstellt am: 13. Jan. 2004 16:19 <-- editieren / zitieren --> Unities abgeben:
|
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 13. Jan. 2004 16:24 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
Zitat: Original erstellt von Alpschorsch: ...Darf man mal Fragen, wie lange Du das schon machst! Programmieren!...
ja, nunmher sind's so ca. 13 Jahre. Alles nebenbei aus reinem Interesse und vollkommen als Autodidakt und bin immer noch nicht fertig mit lernen. Leider war das Internet zu meinen Anfangszeiten nicht so weit. Musste deshalb meine Fehler alle selber finden. Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 13. Jan. 2004 16:26 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
also hab mir die über 30 antworten nicht so genau durchgelesen aber: du möchtest aus einem bestehenden block namens z.b.: 1 einen kopie machen, die dann 2 heisst. die normale vorgehensweise ist folgende mit wblock den block 1 in eine externe zeichnung kopieren z.B.: nach c:\test\1.dwg und mit -EINFÜGE 2=c:/test/1 als neuen block 2 mit dem inhalt von c:/test/1.dwg einfügen alternativ geht auch -einfüge 2=~ , dann wird man zur dateiauswahl aufgefordert. dieser eingefügte block 2 ist eine exakte kopie vom block 1 und kann mit refbearbeit verändert werden ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schachtelmacher Mitglied Verpackungsmittelmechaniker, Entwicklung
Beiträge: 86 Registriert: 07.01.2004
|
erstellt am: 13. Jan. 2004 16:28 <-- editieren / zitieren --> Unities abgeben: Nur für Alpschorsch
Hi Holger, ich muss Dir in allen Punkten recht geben. Ich programmiere mir meistens nur schnell mal zwischendurch ein paar Hilfen oder vor und nach der Arbeit ein paar Programme. Ich bastle eher, als zu programmieren. Es wäre schön, wenn ich viel mehr Zeit zum Programmieren hätte. Das Wissen, was ich habe, ist selbst erlernt - das meist durch die Vlisp Hilfe. Ein bisschen DCL - hier brauche ich nochmal solange wie bei Lisp. Aber ich bin immer wieder froh, wenn ich eine Arbeitserleichterung erreiche. Mein Anwenderkeis beschränkt sich auf 3 Mitarbeiter und unsere Zeichnungen sind nur 2D. Gruss Ralf P.S. Ich werde versuchen mich zu bessern! (Zeit Zeit Zeit bräuchte man) ------------------ "Es gibt keine Probleme, sondern nur Lösungen" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |