| |
| 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: Obejkte auf Layer legen (4141 mal gelesen)
|
Walter Zettlitzer Mitglied Dipl.-Ing (FH)
Beiträge: 228 Registriert: 25.07.2002 WIN 2000, WINXP, ACAD 2002, ACAD 2004, Appl. ProStahl 3D
|
erstellt am: 01. Okt. 2003 11:40 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe mir aus verscheidenen Vorlagen angehängtes Lisp gebastelt, das auch schon gut funktionert. Es wird unter anderem pro Klick eine Ordnungsnummer und die Koordinaten in die Zeichnung geschrieben und ein Punkt gezeichnet. Ich hätte nun gerne die Punkte auf einem Layer liegen, die Ordnungsnummern auf einem zweiten und die Koordinaten auf einem dritten. Ist das einfach zu realisieren? Mein Problem ist die Abarbeitung der (zugegeben nicht idealen) comand-Befehle. Vielen Dank, Walter [Diese Nachricht wurde von Walter Zettlitzer am 01. Oktober 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 01. Okt. 2003 11:50 <-- editieren / zitieren --> Unities abgeben: Nur für Walter Zettlitzer
|
Walter Zettlitzer Mitglied Dipl.-Ing (FH)
Beiträge: 228 Registriert: 25.07.2002 WIN 2000, WINXP, ACAD 2002, ACAD 2004, Appl. ProStahl 3D
|
erstellt am: 01. Okt. 2003 12:01 <-- editieren / zitieren --> Unities abgeben:
|
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 01. Okt. 2003 13:51 <-- editieren / zitieren --> Unities abgeben: Nur für Walter Zettlitzer
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 01. Okt. 2003 13:55 <-- editieren / zitieren --> Unities abgeben: Nur für Walter Zettlitzer
Hallo Walter, am besten, du stellst bevor du das (command ..) aufrufst, den gewünschten Layer ein. (setvar "CLAYER" "Layer1") (Command "Text" Pkt "" 0 NR) (setvar "CLAYER" "Layer2") (Command "Text" "" (rtos (car pkt))) (setvar "CLAYER" "Layer3") (Command "Text" "" (rtos (cadr pkt))) (setvar "CLAYER" "Layer4") (Command "Text" "" (rtos (caddr pkt))) (setvar "CLAYER" "Layer5") (Command "_point" pkt) Prüfe aber vorher ob diese Layer auch in der zeichnung existieren, sonst gibts einen Fehler Prüfung könnte so aussehen: (if (tblobjname "LAYER" "Layer1") (setvar "CLAYER" "Layer1") (alert "Layer1 nicht vorhanden!") ) Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! ...mit erweitertem Leistunsspektrum... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 01. Okt. 2003 13:56 <-- editieren / zitieren --> Unities abgeben: Nur für Walter Zettlitzer
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 01. Okt. 2003 14:19 <-- editieren / zitieren --> Unities abgeben: Nur für Walter Zettlitzer
Hallo Walter, ich will ja nicht meckern, nur ein Hinweis. Mit der (command..)-Programmierung tut man sich keinen Gefallen. Verstellt der User was am System, dann kann die Befehlsfolge sehr unterschiedlich sein, und dein Programm funzt nicht mehr. Deshalb schreibe die Elementdaten direkt in die Zeichnungsdatenbank. Das geht mit (entmake..). Damit bist du unabhängig von irgendwelchen Einstellungen. Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! ...mit erweitertem Leistunsspektrum... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Zettlitzer Mitglied Dipl.-Ing (FH)
Beiträge: 228 Registriert: 25.07.2002 WIN 2000, WINXP, ACAD 2002, ACAD 2004, Appl. ProStahl 3D
|
erstellt am: 01. Okt. 2003 14:46 <-- editieren / zitieren --> Unities abgeben:
Ja Holger, du hast recht, ich gebs zu *Kopf in den Sand steck*. Wir haben ja schon öfter drüber gesprochen... Aber nachdem ich mich mit entmake (noch) nicht so auskenne und immer alles superurgent ist, habe ich mir halt auf die schnelle beholfen. Zu meiner Entschuldigung: Steuervariablen setze ich mittlerweile nicht mehr mit comand, ich habe einfach ein paar lisps aus der Schublade geholt (ich schick Dir demnächst mal eine Auswahl für Deine Bibliothek) und schnell schnell angepasst. Langfristig werde ich mich mit entmake mehr und mehr aueinandersetzen (etwas habe ichs ja schon getan), versprochen :-)... Besten Dank, Walter
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Zettlitzer Mitglied Dipl.-Ing (FH)
Beiträge: 228 Registriert: 25.07.2002 WIN 2000, WINXP, ACAD 2002, ACAD 2004, Appl. ProStahl 3D
|
erstellt am: 01. Okt. 2003 15:06 <-- editieren / zitieren --> Unities abgeben:
Hallo cadwieseil, Georg, Holger, mit (command "-layer" "se" ... habe ichs zuerst erfolglos probiert, die Listenverarbeitung funktioniert nicht wie gewünscht, der Layer wird erst ganz zum Schluß umgestellt, wie oft bei command-Programmierung. Leider funktioniert es mit setvar genauso wenig, auch die Methode von cadwiesel ist leider erfolglos. @Georg: Du kannst Deine Methode vereinfachen und statt der zwei Zeilen (command "-layer" ma... und später (command "-layer "se"... gleich nur ersteres mit "ma" verwenden, damit wird normalerweise ein Layer erzeugt und aktiviert. Wenn es ihn schon gibt, wird er NUR aktiviert. Da klappt zum Beispiel in Makros, aber eben nicht in diesem Lisp... Schöne Grüße, Walter 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 2002 Autocad 2002LT + Extender ADT 3.3 ArchiCAD
|
erstellt am: 01. Okt. 2003 15:45 <-- editieren / zitieren --> Unities abgeben: Nur für Walter Zettlitzer
dass das mit der "setvar-methode" nicht funzt kann ich mir kaum vorstellen...bist du sicher, dass die layer schon in der zeichnung vorhanden sind? wenn ja...hast du sie in der lisp richtig geschrieben? sorry sind blöde fragen...aber manchmal... im übrigen geht bei so einfachen elementen nix über "entget" ------------------ .......good vibrations make the world go round Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 01. Okt. 2003 16:13 <-- editieren / zitieren --> Unities abgeben: Nur für Walter Zettlitzer
funzt bei mir 1a! Befehl: TEST Bauabschnitt: 1 Start Radialachse (Zähler): 1 Start Ringachse (konstant): 1 Ttextabstand: 1.5 schau mal im textstil nach ob da für höhe 0 drin steht. wenn ja ändern auf das was du bei "textabstand" eintippst. ciao georg kleiner nachtrag: nehme an, daß das umstellen der layer nur dann funkt wenn du "_text" ganz beendest (am ende noch ein ""). daher mein umweg über "polar" für den nächsten einfügepunkt. (_layer und setvar sind nicht transparent!) [Diese Nachricht wurde von gmk am 01. Oktober 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Zettlitzer Mitglied Dipl.-Ing (FH)
Beiträge: 228 Registriert: 25.07.2002 WIN 2000, WINXP, ACAD 2002, ACAD 2004, Appl. ProStahl 3D
|
erstellt am: 01. Okt. 2003 16:42 <-- editieren / zitieren --> Unities abgeben:
Die Texthöhe ist schuld! Muss ich das verstehen? Standareingestellt ist bei uns hier 0. Wenn ich was anderes einstelle, funktioniert textsize nicht mehr, das ich aber oft verwende. Setze ich die Höhe auf 1, funktioniert mein eigenes Lisp-File nicht mehr!?! Lässt sich das erklären? Gruss, Walter @Marvin: Bei Höhe = 0, so war es bisher: Der Aufruf (setvar "clayer" "2") wird NICHT ausgeführt: (setvar "clayer" "1") (Command "Text" Pkt "" 0 NR) (setvar "clayer" "2") (Command "Text" "" (rtos (car pkt))) (Command "Text" "" (rtos (cadr pkt))) (Command "Text" "" (rtos (caddr pkt))) (setvar "clayer" "3") (Command "_point" pkt) Bei command wird "2" auch ignoeriert: (command "-layer" "se" "1" "") (Command "Text" Pkt "" 0 NR) (command "-layer" "se" "2" "") (Command "Text" "" (rtos (car pkt))) (Command "Text" "" (rtos (cadr pkt))) (Command "Text" "" (rtos (caddr pkt))) (command "-layer" "se" "3" "") (Command "_point" pkt) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Zettlitzer Mitglied Dipl.-Ing (FH)
Beiträge: 228 Registriert: 25.07.2002 WIN 2000, WINXP, ACAD 2002, ACAD 2004, Appl. ProStahl 3D
|
erstellt am: 01. Okt. 2003 16:54 <-- editieren / zitieren --> Unities abgeben:
Ok, dass mein Lisp nicht mehr funktioniert, liegt daran, dass mal die Texthöhe abgefragt wird, mal nicht. @Georg: Dasselbe wird wohl für sinngemäß auch für Dein Lisp gelten, welches in Deiner dwg funktioniert, nicht aber mit der Höhe 0. Warum hast Du die Befehle umprogrammiert (Ich sehe da z.B. (SETQ pkt (polar pkt (/ (* pi 3) 2) (* as 1.3)))... )?? Interessiert mich, insbeonders, da Dein File klappt und meins nicht ;-) Das kann doch nicht an der Texthöhe liegen und wird sicher mit Höhe 0 auch zum Laufen zu bringen sein... Schönen Gruß, Walter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 01. Okt. 2003 18:11 <-- editieren / zitieren --> Unities abgeben: Nur für Walter Zettlitzer
Hallo Walter, das ist das was ich mit obigen Beitrag meinte. Die Befehlsfolge ändert sich je nach Einstellung. Teste mal den Textbefehl mit einem Stil, der die Höhe 0 hat, und dann einen der eine Höhe ungleich 0 auweist. Du wirst sehen, dass die Befehlsabfolge in der Befehlszeile eine andere ist. Das kannst du mit (command kaum bewerkstelligen. Morgen will ich mal sehen, dass man die (Commands durch (entmake) rausbekommt. Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! ...mit erweitertem Leistunsspektrum... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Zettlitzer Mitglied Dipl.-Ing (FH)
Beiträge: 228 Registriert: 25.07.2002 WIN 2000, WINXP, ACAD 2002, ACAD 2004, Appl. ProStahl 3D
|
erstellt am: 01. Okt. 2003 18:25 <-- editieren / zitieren --> Unities abgeben:
Danke, es ist erst mal alles klar. Mit command funktiniert es durch Einfügen eine Nullstrings, dann wird irgendwie das andere command erzwungen (Richtig verstehen tue ich es nicht, aber es funktinoiert)... Siehr dann so aus: (command "-layer" "ma" (strcat "CT-Pat-BA" (itoa BA) "-numbers") "") (Command "Text" Pkt "" 0 NR) (command "-layer" "ma" (strcat "CT-Pat-BA" (itoa BA) "-coords") "") (Command "Text" Pkt "" 0 "");"Null"-Text erf. fuer Layer-Wechsel (Command "Text" "" (rtos (car pkt))) (Command "Text" "" (rtos (cadr pkt))) (Command "Text" "" (rtos (caddr pkt))) (command "-layer" "ma" (strcat "CT-Pat-BA" (itoa BA) "-nodes") "") (Command "_point" pkt) @Georg: Du siehst in diesem Beispiel, dass der LAyer-Befehl direkt mit "ma" gesetzt ist, das vorherige definieren mit "se" ist nicht erforderlich... Danke und viele Grüße, Walter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 01. Okt. 2003 22:15 <-- editieren / zitieren --> Unities abgeben: Nur für Walter Zettlitzer
hi walter! teste das mal. man muß zwangsläufig nach jedem "_text" die funktion mit "" beenden da sonst das folgende "command" als weiterer text interpretiert wird. "_polar" berechnet den nächsten einfügepunkt; deshalb steht _point jetzt vor den "_text"-funktionen (spare mir eine variable). ciao georg
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 2002 Autocad 2002LT + Extender ADT 3.3 ArchiCAD
|
erstellt am: 02. Okt. 2003 07:53 <-- editieren / zitieren --> Unities abgeben: Nur für Walter Zettlitzer
moin walter... ein tip...hast du hier schon bekommen...auch von mir, ich weiss... aber SCH***** auf diesen command-k***!!!!!!!!!!! er bringt nix als ärger und gerade in diesem beispiel ist er wirklich leicht zu umgehen...leg es auf eis, warte auf holgers überarbeitung und... heureka...du wirst sehen, dass es wirklich relativ einfach und vor allem vieeeel sicherer mit entmake zu handeln ist...also.... ruhig brauner...hab geduld...holger kommt schon ;-) ------------------ .......good vibrations make the world go round Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 02. Okt. 2003 09:29 <-- editieren / zitieren --> Unities abgeben: Nur für Walter Zettlitzer
|
Walter Zettlitzer Mitglied Dipl.-Ing (FH)
Beiträge: 228 Registriert: 25.07.2002 WIN 2000, WINXP, ACAD 2002, ACAD 2004, Appl. ProStahl 3D
|
erstellt am: 02. Okt. 2003 09:37 <-- editieren / zitieren --> Unities abgeben:
Danke, ich schaus mir demnächst an, bin aber jetzt erst mal eine Woche weg... Im Entmake-Club bin ich mit dabei ;-) (meine ersten Erfahrungen mit Entamke waren nicht so rühmlich, da ich Bogenbemassungen erstellen wollte - die sind, so habe ich die Vermutung, ziemlich das komplitzierteste, was man mit Entmake so erstellen kann *gg*) Viele Grüße, Walter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 02. Okt. 2003 10:58 <-- editieren / zitieren --> Unities abgeben: Nur für Walter Zettlitzer
Hallo Walter, das mit dem (entmake ..) ist gar nicht so schwer. Tippe folgende Anweisung in der Befehlszeile ein: (entget(car(entsel))) Das was dann im Textfenster steht sind die Elementdaten, welche du in ähnlicher Form auch zur Erzeugung von Objekten benötigst. Die einzelnen Elemente sind immer aus (Bezeichner . Wert) Die Bezeichner kannst du in der DXF-Referenz nachlesen. Nahezu generell kann man aber sagen, dass die Gruppencodes -1, 100, 5, 330 in einer (entmake-Liste nichts zu suchen haben, da diese durch AutoCAD selbst vergeben werden. Generell packe ich die Erzeugung von Elementen in SUBroutinen, da diese in der Regel allgemein gebräuchlich sind. Für einen Punkt könnte das dann so aussehen: Code:
(defun create:point (pkt lay col / ) (entmake (list '(0 . "POINT") '(100 . "AcDbEntity") '(67 . 0) '(410 . "Model") (cons 62 (if col col (cond ((= "BYLAYER" (getvar "CECOLOR")) 256) ((= "BYBLOCK" (getvar "CECOLOR")) 0) (T (atoi(getvar "CECOLOR")) ) ) ) ) (cons 8 (if (and lay (tblobjname "LAYER" lay) ) lay (getvar "CLAYER") ) ) '(100 . "AcDbPoint") (cons 10 (if pkt pkt (getpoint "\nPunkt: ") ) ) '(210 0.0 0.0 1.0) '(50 . 0.0) ) ) )
Aufgerufen werden kann das dann so: (create:point nil nil nil) oder (create:point Punktvariable "LayerPunkte" nil) oder (create:point Punktvariable "LayerPunkte" 1) oder, oder, oder ... Diesem Thema wird sich dann auch noch ein Teil der Serie Einstieg in AutoLISP widmen, an der ich derzeit in Zusammenarbeit mit autodesk arbeite. 2 Teile kann man sowohl auf den autodesk, als auch http://www.defun.de nachlesen. Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! ...mit erweitertem Leistunsspektrum...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bauvermesser Mitglied Vermesser
Beiträge: 460 Registriert: 18.03.2006 AMD 2600, 2024RAM ,WIN XP PROF-SP3, ACAD 2005, Firmenrechner,
|
erstellt am: 19. Jun. 2006 18:02 <-- editieren / zitieren --> Unities abgeben: Nur für Walter Zettlitzer
Hallo, habe deine LSP zu diesem Beitrag mal ausprobiert und würde sie gern als bauvermesser einsetzten (Kooexport) dazu wären jedoch ein paar änderungen notwendig die ich nicht hinbekomme kannst oder willst du helfen? ------------------ Gruß vom Bauvermesser; übrigens- ein Vermesser kennt seine Grenzen! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 19. Jun. 2006 21:09 <-- editieren / zitieren --> Unities abgeben: Nur für Walter Zettlitzer
|
Bauvermesser Mitglied Vermesser
Beiträge: 460 Registriert: 18.03.2006 AMD 2600, 2024RAM ,WIN XP PROF-SP3, ACAD 2005, Firmenrechner,
|
erstellt am: 19. Jun. 2006 22:39 <-- editieren / zitieren --> Unities abgeben: Nur für Walter Zettlitzer
Also, 1. mit welcher einstellung wird festgelegt das die ausgelesenen Koordinaten in textfile und auf dem bildschirm nur 2-stellig nach dem komma sind? brauche sie 3-stellig 2. die erste abfrage nach eingabe Bauabschnitt müßte als normale text möglich sein damit man zb.: pos. nr 001.10.03 angeben kann,oder wenn ich punkte mit vorgegebener SollHöhe auslese- kann ich dort den höhenwert zb.:320,255 eintragen 3.ist das mir den "jeweils auf andere layerlegen" xyz möglich 4. was heißt befehlszeile (if (< A 0.10) (setq XA "0")) 5. kann ich mit dem befehl (Command "CIRCLE")1.0 einen Kreis an dem ausgelesenen Punkt erzeugen 6. für was ist anhang (defun M:FEHLER (S) notwendig 7. ablage des textfils im j:\xx als voreinstellung möglich? viele dumme fragen, habe auch schon etwas rumgefummelt aber das mit dem 3- stellige bekomme ich nicht raus bin für hilfe dankbar da es ohne!!! blöcke läuft kann es für mich eine feine lsp werden und man sieht gleich welchen punkt man erwischt hat. ------------------ Gruß vom Bauvermesser; übrigens- ein Vermesser kennt seine Grenzen! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |