| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Textfilter nach Höhe in Skript (761 mal gelesen)
|
ChrisSin Mitglied Bauingenieur
Beiträge: 17 Registriert: 09.11.2006 ACAD2002
|
erstellt am: 09. Nov. 2006 14:14 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, habe nach langer Suche in den Foren nichts passendes für mein Problem gefunden, deshalb so: Ich möchte mit Hilfe eines Skriptes Text filtern und zwar nach der Text-Höhe. Mit ssx schaffe ich nur, den gesamten Text zu wählen, kann aber keinen Höhen-Filter setzen. Gibt es da eine einfache Möglichkeit, sprich ein AutoCAD Befehl ohne lispeln zu müssen?;-) Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
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: 09. Nov. 2006 14:15 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
|
ChrisSin Mitglied Bauingenieur
Beiträge: 17 Registriert: 09.11.2006 ACAD2002
|
erstellt am: 09. Nov. 2006 14:23 <-- editieren / zitieren --> Unities abgeben:
_qselect/sauswahl habe ich schon ausprobiert, ich bekomme ACAD aber nicht dazu, statt mit Dialogfeld die Filter im Auswahlfenster abzuarbeiten.. gibt es da noch einen Kniff? -sauswahl funktioniert bei mir jdf nicht. Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
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: 09. Nov. 2006 14:35 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
ach so .. script .. hatte ich überlesen .. wird ohne Lisp nicht gehen ... (ssget "_x" '((0 . "*TEXT")(40 . 3.0))) filtert TEXTE mit Texthöhe 3.0 (sssetfirst (setq a(ssget "_x" '((0 . "*TEXT")(40 . 3.0)))a) aktiviert ihn auch gleich ------------------ - 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 |
ChrisSin Mitglied Bauingenieur
Beiträge: 17 Registriert: 09.11.2006 ACAD2002
|
erstellt am: 09. Nov. 2006 14:42 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank, aber um die Zeilen richtig zu verstehen, muss ich wohl noch etwas tiefer einsteigen. ...und trotzdem, Hut ab, daß ich so schnell eine Antwort bekomme, hätte ich nicht gedacht:-) Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Katana Mitglied
Beiträge: 24 Registriert: 13.09.2006 Win XP SP2 ACAD 08
|
erstellt am: 09. Nov. 2006 14:58 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
Hallo Chris Da du ja nur ein Skript möchtest, wenn es keine einfacher Möglichkeit gibt versuch doch mal das ganze über den Befehl "filter". Dort kannst du die Texthöhe auswählen. Ich persönlich arbeite am liebsten mit "filter" und nicht mit der Schnellauswahl. Habe es kurz bei mir probiert und es hat wunderbar geklappt. Freundliche Grüsse Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisSin Mitglied Bauingenieur
Beiträge: 17 Registriert: 09.11.2006 ACAD2002
|
erstellt am: 09. Nov. 2006 15:39 <-- editieren / zitieren --> Unities abgeben:
Hi, Katana, bei mir lässt sich "filter" nicht in Befehlsfolgen in Form eines Skriptes einbauen. Immer erscheint das Dialogfenster, in dem Einstellungen gemacht werden müssen, die Befehle sollen aber im Befehlszeilenfenster abgearbeitet werden. Auch "-filter" funktioniert nicht. Gibt es da doch noch einen Kniff?? Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Katana Mitglied
Beiträge: 24 Registriert: 13.09.2006 Win XP SP2 ACAD 08
|
erstellt am: 09. Nov. 2006 21:52 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
Hi Chris Zitat: bei mir lässt sich "filter" nicht in Befehlsfolgen in Form eines Skriptes einbauen.
Der Befehl "filter" wird auch nicht ins Skript eingebaut (da du ja wie oben erwähnt nicht lispeln möchtest) so hast du eine Filterfunktion von ACAD, welchen du direkt mit diesem Befehl aufrufen kannst. Oder anderst ausgedrückt, die einfachste möglichkeit einen Text in der Zeichnung mit einem bestimmten Höhenwert auszufiltern. Einfach mal probieren... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, Civil 3D, MAP 3D, ACADM Inventor AutoCAD 2022, AIP 4-2022 Win 10
|
erstellt am: 09. Nov. 2006 22:15 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
@Katana, ich habe die Aufgabe so verstanden, dass ChrisSin ein SCRIPT hat, welches er auf mehrere Zeichnungen anwenden will, deshalb sucht er einen Objektwahlbefehl, der als Kommandozeile ausgeführt wird. Zitat: Original erstellt von ChrisSin: ...Ich möchte mit Hilfe eines Skriptes Text filtern ...
da bleibt aber tatsächlich nur ein Lisp-Auswahlssatzaufruf (SSGET ...). SAUSWAHL oder FILTER sind nun mal dialogbasierte Auswahlfilter. ------------------ Mit freundlichem Gruß Udo Hübner
[Diese Nachricht wurde von CAD-Huebner am 09. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 10. Nov. 2006 09:19 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
Zitat: Original erstellt von ChrisSin: Vielen Dank, aber um die Zeilen richtig zu verstehen, muss ich wohl noch etwas tiefer einsteigen.
Vielleicht hilft Dir meine Erklärung ein wenig? Code: ;; Auswahlsatz mit Griffen versehen... benötigt zwei Argumente: gripset und pickset (sssetfirst ;; gripset als Variable A festlegen (setq A ;; ssget "_x" dursucht die gesamte Zeichnungsdatenbank (ssget "_x" ;; Nachfolgen der Filterausdruck für ssget... ;; 1. Filter DXF 0 = Objekttyp "*TEXT" = TEXT, DTEXT, MTEXT (wildcard *) '((0 . "*TEXT") ;; 2. Filter DXF Code 40 = Texthöhe 3.0 (40 . 3.0) ) ;_ Ende ssget Filterargument ) ;_ ende ssget ) ;_ ende Variable A definieren ;; zweites Argument pickset für sssetfirst; gleich erstem Argument > gripset=pickset A ) ;_ ende sssetfirst
Alternativ könnte man dem Filterargument von ssget noch hinzufügen, das er nur im aktuellen Bereich, Modellbereich oder Layout suchen soll. Dann sähe der Filter so aus: Code: (ssget "_x" (list '(0 . "*TEXT") '(40 . 3.0) (cons 410 (getvar "ctab")) ) )
... ------------------ Ciao, Marc
[Diese Nachricht wurde von marc.scherer am 10. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisSin Mitglied Bauingenieur
Beiträge: 17 Registriert: 09.11.2006 ACAD2002
|
erstellt am: 10. Nov. 2006 11:44 <-- editieren / zitieren --> Unities abgeben:
@marc.scherer Ja, die zusätzlichen Erklärungen sind sehr hilfreich, danke, zumal ich auf dem Gebiet ein ziemliche Rookie bin.... Habe hier etwas zusammengebastelt.Text soll mit "ssget" nach der Höhe sortiert und über "eigändr" auf die Layer Text25,Text35,Text50,Text70 gelegt werden. Problem ist nur: wenn kein Text in der Größe z.B. 7 vorhanden ist und "nil" zurückgegeben wird, greift er in "eigändr V" auf die letzte Auswahl zurück, in diesem Fall auf die Auswahl mit der Texthöhe 5. Habe versucht mit "(setq ss* nil)" die Auswahlsets zu löschen, schaffe ich aber nicht, die letzte Auswahl bleibt erhalten. Gibt es da einen Kniff, wie die alles Auswahlsets gelöscht werden können, oder vertragen sich die AutoCAD mit den LISP-Befehlen nicht? (ssget "_X" '((0 . "*TEXT") (40 . 2.5))) eigändr V LA Text25 (ssget "_X" '((0 . "*TEXT") (40 . 3.5))) eigändr V LA Text35 (ssget "_X" '((0 . "*TEXT") (40 . 5))) eigändr V LA Text50 (ssget "_X" '((0 . "*TEXT") (40 . 7))) eigändr V LA Text70 Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
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: 10. Nov. 2006 11:47 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
auf die Schnelle: -> machs so: (if(ssget "_X" '((0 . "*TEXT") (40 . 2.5)))(command "eigändr" "V" "LA" "Text25")) (if(ssget "_X" '((0 . "*TEXT") (40 . 3.5)))(command"eigändr" "V" "LA" "Text35")) usw. obwohl ich dann alles in Lisp machen würde... ------------------ - 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 |
ChrisSin Mitglied Bauingenieur
Beiträge: 17 Registriert: 09.11.2006 ACAD2002
|
erstellt am: 10. Nov. 2006 13:31 <-- editieren / zitieren --> Unities abgeben:
@CADmium, super Tipp, hat bei mir funktioniert, fehlte nur ein "". Muss noch etwas rumbasteln. Die Sache mit (setq ss* nil) war wohl ein Holzweg?! Zu LISP: Würde gerne alles in LISP schreiben, lese eure Tipps und parallel dazu die AutoCAD-Reference, welche aber leider recht knapp ist für den Umfang an Befehlen... Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 10. Nov. 2006 15:26 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
Hi ChrisSin, hier mal 'ne Anregung wie so'n Code aussehen könnte: Code: ;| Funktion sucht Texte einer bestimmten Höhe in einer Zeichnung und ordnet sie dann bestimmten Layern zu. Die Texthöhe wird im DXF-Code 40 bestimmt. Argumente: LIST-OF-PAIRS = Liste von Texthöhen - Layerzuweisungen als "dotted pair" Listen z.B. '((2.5 . "Text25") (3.5 . "Text35") (5.0 . "Text50") (7.0 . "Text70") )Beispielaufruf: (TXTHEIGHT2LAYER '((2.5 . "Text25")(3.5 . "Text35"))) Im Skript zu verwenden wenn Lisp-Programm als z.B. >TXTHEIGHT2LAYER.LSP< im Suchpfad z.B. so: (if (null TXTHEIGHT2LAYER)(load TXTHEIGHT2LAYER)) (TXTHEIGHT2LAYER '((10 . "Text100")(2.5 . "Text25")(3.5 . "Text35")(5.0 . "Text50")(7.0 . "Text70"))) |; (defun TXTHEIGHT2LAYER (LIST-OF-PAIRS / SGET ALTCMDECHO) (setq ALTCMDECHO (getvar "cmdecho")) (setvar "cmdecho" 0) (foreach PAIR LIST-OF-PAIRS (if (setq SGET (ssget "_X" (list '(0 . "*TEXT") (cons 40 (car PAIR)) ) ) ) (progn (CREATE-LAYER-IF-NOT (cdr PAIR)) (command "_.chprop" SGET "" "_layer" (cdr PAIR) "") (princ (strcat "\n>" (itoa (sslength SGET)) "< Texte der Höhe >" (rtos (car PAIR) 2 2) "< auf Layer >" (cdr PAIR) "< gelegt!" ) ) ) ) ) (setvar "cmdecho" ALTCMDECHO) (princ) ) ;| Subfunktion zum erzeugen eines Layernamens, wenn dieser in der Zeichnung nicht existiert... Quick & Dirty ;-) |; (defun CREATE-LAYER-IF-NOT (NAME /) (if (not (tblsearch "LAYER" NAME)) (command "_.-layer" "_m" Name "") ) )
...------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisSin Mitglied Bauingenieur
Beiträge: 17 Registriert: 09.11.2006 ACAD2002
|
erstellt am: 10. Nov. 2006 16:27 <-- editieren / zitieren --> Unities abgeben:
@marc.scherer, danke für die Hilfe, aber um den gesamten Text zu verstehen, brauche ich noch etwas - und mir raucht schon der Kopf! Ich suche noch eine weitere Filtermöglichkeit, und zwar soll Text mit einem bestimmten Textstil- hier "ISOCP" - ausgewählt und der Textstil in "ISOCP3" gändert werden. Mit (ssget "_X" '((0. "*text") (7 . "ISOCP"))) ließe sich ja der Text wählen, aber wie ändere ich den Stil -"ändern" funktioniert nicht, gibts noch einen anderen ACAD-Befehl? Chris 2
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 12. Nov. 2006 19:27 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
Hi ChrisSin, benutzt Du eigentlich zum Lisp Code checken und schreiben die eingebaute VisualLisp Entwicklungsumgebung? (vlide) Hier wir der Code farbig dargestellt und Du kannst ihn auch Schritt für Schritt ausführen lassen und beobachten was gerade im Programm passiert und welche Rückgaben von Funktionen kommen. Das erleichtert das Verständnis immens... ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisSin Mitglied Bauingenieur
Beiträge: 17 Registriert: 09.11.2006 ACAD2002
|
erstellt am: 13. Nov. 2006 09:09 <-- editieren / zitieren --> Unities abgeben:
Guten Moregen, um ehrlich zu sein, nein! - Kannte ich bis gerade nicht, werde ich aber mal ausprobieren. Habe mich bis vor 4 Tagen noch nicht mit AutoCAD-Skripten auseinandersetzen müssen. Es ist nur so, dass wir Zeichnungen in X-STeel haben, die aber als .dwg bzw. .dxf mit bestimmeten Layerzuordnungen abgegeben werden müssen, also auf Layer Text50 Texte mit der Höhe 5 mm auf Layer Text35 Texte mit der Höhe 3.5 mm usw. sowie bestimmte Textstile und Linienzuordnugen. Nun will ich die Sachen in jeder Zeichnung nicht zu Fuß ändern, sondern mir Hilfe eines Skriptes. Dabei ist es eigentlich egal, ob in LISP oder einfach nur als ACAD-Befehlsfolge. Und die Textstiländerung scheint, wie ich hier so lese nicht so leicht zu sein, habe bislang nur die LISP-Routine cht.lsp gefunden, sieht aber vielversprechend aus. Chris
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 13. Nov. 2006 09:29 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
Hi ChrisIn, Du solltest UNBEDINGT die VLIDE benutzen (Befehl: VLIDE)! Insbesondere die Debugging-Funktionen (Hilfe: Introducing Visual LISP Debugging Features). Zum Textstil hab ich Dir hier noch mal 'ne Beispiel-Anwendung zusammengeschraubt. Hier auch wieder die Technik mit Subroutinen-Aufruf. In diesem Fall eine Subroutine zum erzeugen von Objektlisten gemäß ssget-Filterbedingungen... Code:
;| Textstyle-Changer Ändert den Stil von Textobjekten. Beim MText nicht den eventuell manuell veränderten Font, das ist 'ne andere Baustelle ;-) Argumente: OLDSTYLE = Alter und zu suchender Stil als String NEWSTYLE = Neuer, zuzuweisender Stil als StringBeispiele: (TSCHANGE "Standard" "Stil1") (TSCHANGE "Stil1" "Standard") Rückgabe: Anzahl der geänderten Objekte als Integer oder nil |; (defun TSCHANGE (OLDSTYLE NEWSTYLE /) ;; Ist der Zielstil überhaupt in der DWG vorhanden? (if (not (tblsearch "style" NEWSTYLE)) ;; Wenn nicht, Fehlermeldung (princ (strcat "\nZieltextstil >" NEWSTYLE "< nicht in aktueller Zeichnung definiert! Funktionsende." ) ) (progn ;; Zähler für Rückgabe initialisieren (setq INDEX 0) ;; Foreach-Schleife... (foreach TEXT ;; Funktionsaufruf zur Bildung einer Objektliste (SELSET-LISTER (list '(0 . "*TEXT") (cons 7 OLDSTYLE)) 't ) ;; Neuen Stilnamen für jedes einzelne Textobjekt der Liste setzen (vla-put-stylename TEXT NEWSTYLE) ;; Zähler Rückgabe hochzählen (setq INDEX (1+ INDEX)) ) ) ) ;; Rückmeldung für Benutzer definieren (if (> INDEX 0) (princ (strcat "\nFür >" (itoa INDEX) "< Texte den Stil von >" OLDSTYLE "< auf >" NEWSTYLE "< geändert!" ) ) (progn (setq INDEX NIL) (princ (strcat "\nKeinen Text des Stils >" OLDSTYLE "< gefunden, nichts verändert!" ) ) ) ) ;; Rückgabewert der Funktion INDEX ) ;| Funktion erzeugt ein Selection-Set anhand der als Argument übergebenen Filterliste und gibt eine Liste von Objekten dieses Selection-Sets zurück. Das Flag FLAG-ACTIVEXOBJECTS? steuert, ob die Liste Elementnamen (für Lisp pur) oder ActiveX Objekte (für ActiveX verwendung) zurückgibt. Argumente: FILTERLIST = Eine Liste von dotted Pairs wie sie normal auch für ssget verwendet wird z.B. '((0 . "*TEXT")) oder '((0 . "INSERT")(8 . "Blocklayer*"))
FLAG-ACTIVEXOBJECTS? = 'T oder nil. Wenn T werden ActiveX Objekte zurückgegeben, ansonsten Lisp-Objektnamen Beispiele: (setq Objectlist (SELSET-LISTER '((0 . "*TEXT")(7 . "Stil1")) nil)) (setq AXlist (SELSET-LISTER '((0 . "*TEXT")(7 . "Stil1")) 'T)) |; (defun SELSET-LISTER (FILTERLIST FLAG-ACTIVEXOBJECTS? / INDEX RETVAL SELSET) (vl-load-com) ;_ AX Schnittstelle initialisieren (setq INDEX -1) ;_ Variable Index als Counter initialisieren (if (setq SELSET (ssget "_X" FILTERLIST)) ;_ Auswahlsatz erzeugen (progn (repeat (sslength SELSET) ;_ Auswahlsatz zu Liste von Objektnamen machen (setq RETVAL (cons (ssname SELSET (setq INDEX (1+ INDEX))) RETVAL) ) ) ;; Wenn Flag 'T, dann Listenobjekte zu ActiveX Objekten konvertieren (if FLAG-ACTIVEXOBJECTS? (setq RETVAL (mapcar 'vlax-ename->vla-object RETVAL)) ) ) ) ;; Rückgabe der Variablen RETVAL RETVAL )
Der Code in der VLIDE sieht dann übrigens so aus: Deutlich übersichtlicher, oder? Have fun ;-) ------------------ Ciao, Marc [Diese Nachricht wurde von marc.scherer am 13. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisSin Mitglied Bauingenieur
Beiträge: 17 Registriert: 09.11.2006 ACAD2002
|
erstellt am: 13. Nov. 2006 10:57 <-- editieren / zitieren --> Unities abgeben:
@marc.scherer, danke für die Mühe, aber oje,oje.....! Habe folgendes gemacht: Deine TSCHANGE Lisp-Routine in TSCHANGE.lsp Dokument gespeichert und geladen (appload), dann im Skript über (TSCHANGE "ARIAL" "ISOCP") Befehl aufgerufen, dann Skript ausgeführt. Meldung: no function defintion (?!?) Was mache ich da falsch? Probierte als totaler Rookie dann die cht.lsp-Routine
(command "(chtxt)" "V" "" "S" "ISOCP" "") funktionierte aber auch nicht Meldung: LISP-Befehl nicht verfügbar , obwohl sich Befehl (chtxt) in Befehlszeile ausführen lässt?! Chris
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 13. Nov. 2006 11:14 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
Zitat: Original erstellt von ChrisSin: Deine TSCHANGE Lisp-Routine in TSCHANGE.lsp Dokument gespeichert und geladen (appload), dann im Skript über (TSCHANGE "ARIAL" "ISOCP") Befehl aufgerufen, dann Skript ausgeführt.Meldung: no function defintion (?!?) Was mache ich da falsch?
Tja, keine Ahnung was Du falsch machst. Im Script müßte folgender Aufruf stehen: Code: (if (null TSCHANGE)(load TSCHANGE)) (TSCHANGE "ARIAL" "ISOCP")
Damit wird die Lisp Datei erstmal geladen, wenn die Funktion denn noch nicht in dem Namensraum der aktuellen Zeichnung definiert ist. Vorraussetung ist natürlich, das sich dei Datei TSCHANGE.LSP im Acad-Suchpfad befindet. Zitat: Original erstellt von ChrisSin: Probierte als totaler Rookie dann die cht.lsp-Routine(command "(chtxt)" "V" "" "S" "ISOCP" "") funktionierte aber auch nicht
Kann auch nicht funktionieren. Der Aufruf "(chtxt)" ist so was von falsch. Ich kenne chtxt.lsp nicht, deswegen kann ich Dir da auch ned weiterhelfen, sorry. ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisSin Mitglied Bauingenieur
Beiträge: 17 Registriert: 09.11.2006 ACAD2002
|
erstellt am: 13. Nov. 2006 12:36 <-- editieren / zitieren --> Unities abgeben:
Bingo, TSchange.lsp einladen funktioniert wunderbar;-) , weiß nicht was ich da vorher falsch hatte. Nur stolpert das Programm immer über Selset-Lister: no function definition: SELSET-LISTER. Habe über (ssget "_X" '((0 . "*TEXT")(7 . "ARIAL"))) 48 ARIAL-Textobjekte gewählt und dann (TSCHANGE "ARIAL" "ISOCP") --> no function definition: SELSET LISTER.?? Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 13. Nov. 2006 17:21 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
Zitat: Original erstellt von ChrisSin:
Nur stolpert das Programm immer über Selset-Lister: no function definition: SELSET-LISTER.Habe über (ssget "_X" '((0 . "*TEXT")(7 . "ARIAL"))) 48 ARIAL-Textobjekte gewählt und dann (TSCHANGE "ARIAL" "ISOCP") --> no function definition: SELSET LISTER.??
Ich verkneife mir jetzt einfach mal ein paar Kommentare... Aber liest Du auch mal was in meinem Code drinsteht? Du mußt natürlich den GESAMTEN Code, INKLUSIVE der "(defun SELSET-LISTER..." in Deine TSCHANGE.LSP aufnehmen. Die Funktion TSCHANGE ermittelt den Auswahlsatz selbständig. Da brauchst Du kein ssget "_x" vorweg schicken.... ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisSin Mitglied Bauingenieur
Beiträge: 17 Registriert: 09.11.2006 ACAD2002
|
erstellt am: 14. Nov. 2006 08:30 <-- editieren / zitieren --> Unities abgeben:
|
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 14. Nov. 2006 08:38 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
Zitat: Original erstellt von ChrisSin:
Danke für die Geduld:-)!
@ChrisSin: Bitte, bitte. Gern' geschehen. Nix für ungut, aber manchmal hab' ich einfach den Eindruck das hier ganz allgemein gepostet wird bevor auch nur EIN klarer Gedanke an das Problem verschwendet wurde, und da kann ich auch schon mal "witzig" werden. Hast nun leider nur Du als Stellvertreter hierfür abbekommen . Aber Schwamm drüber, ich helfe ja gerne. Klappt es denn jetzt? VLide mal angeschaut? ------------------ Ciao, Marc [Diese Nachricht wurde von marc.scherer am 14. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisSin Mitglied Bauingenieur
Beiträge: 17 Registriert: 09.11.2006 ACAD2002
|
erstellt am: 14. Nov. 2006 09:13 <-- editieren / zitieren --> Unities abgeben:
Ja, läuft anstandslos:-) Ich bastel mir jetzt noch mein skript zusammen, dass dann in einem Rutsch Text und Layer ändert. Dürfte jetzt mit eurer Hilfe - auch von CADmium - aber funktionieren...(wenn nicht meld' ich mich noch mal;-))! Und um LISP richtig zu lernen, muss ich mir wohl auch mal richtig Zeit nehmen! Bislang gab's dazu aber nicht die Notwendigkeit, weil ich mit AUTOCAD eher weniger zu tun habe... So im Hauruck-Vefahren gehts jedenfalls nicht, oder nur mit Unterstützung;-) Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |