| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| CAD-Automatisierung: Effizienzsteigerung durch smarte Methoden, ein Webinar am 11.10.2024
|
Autor
|
Thema: Ausrichten per Script? (1024 mal gelesen)
|
Dig15 Ehrenmitglied V.I.P. h.c. Dipl.-Ing. für Markscheidewesen und Geodäsie
Beiträge: 5833 Registriert: 27.02.2003 DWG TrueView 2014
|
erstellt am: 19. Sep. 2012 13:04 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ich habe hier in einer Datei etwa 300 Objekte, die ich per ALIGN verschieben möchte. Die Ausgangs- und Zielkoordinaten sind bekannt und liegen in einer Textdatei vor. Der Verschiebevektor ist bei allen Objekten unterschiedlich. Per Hand ist es möglich, aber zeitaufwändig. Ich hatte mir anfangs ein Script in den Kopf gesetzt, dass den Befehl aufruft, auf eine Eingabe von mir wartet (Objekt markieren) und dann das Ausrichten anhand der Koordinatenpaare vornimmt. Nun habe ich aber festgestellt, dass die Interaktion mit ACAD während eines Scriptes nicht möglich ist. Hat hier jemand eine Idee, wie ich das Problem lösen kann? Ein Praktikant steht leider nicht zur Verfügung. ------------------ Viele Grüße Lutz Glück Auf! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 19. Sep. 2012 13:11 <-- editieren / zitieren --> Unities abgeben: Nur für Dig15
|
Dig15 Ehrenmitglied V.I.P. h.c. Dipl.-Ing. für Markscheidewesen und Geodäsie
Beiträge: 5833 Registriert: 27.02.2003 DWG TrueView 2014
|
erstellt am: 19. Sep. 2012 13:25 <-- editieren / zitieren --> Unities abgeben:
Die Objekte müssen in der Reihenfolge angeklickt werden, wie die Koordinatenpaare abgelegt sind. Eine Alternative wäre noch, das Objekt auszuwählen, welches 1 ZE rechts der ersten Koordinate liegt. Aber das geht dann wohl schon wieder in die Richtung: mit Kanonen auf Spatzen geschossen------------------ Viele Grüße Lutz Glück Auf! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 19. Sep. 2012 13:38 <-- editieren / zitieren --> Unities abgeben: Nur für Dig15
|
Dig15 Ehrenmitglied V.I.P. h.c. Dipl.-Ing. für Markscheidewesen und Geodäsie
Beiträge: 5833 Registriert: 27.02.2003 DWG TrueView 2014
|
erstellt am: 19. Sep. 2012 14:15 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von CADmium: ..wie sieht die koordianten-txt-datei aus?
Vielen Dank schon mal für Deine Bemühungen. Die txt-Datei ist noch beliebig gestaltbar. Die Koordinaten liegen noch im Excel. Ich hatte bis jetzt vorgesehen: 1. Ausgangspunkt 1. Zielpunkt 2. Ausgangspunkt 2. Zielpunkt, das Koordinatenpaar ist Kommagetrennt (X1a,Y1a X1z,Y1z X2a,Y2a X2z,Y2z). Alles auf einer Zeile. Ist aber eben noch gestaltbar. ------------------ Viele Grüße Lutz Glück Auf! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 19. Sep. 2012 16:25 <-- editieren / zitieren --> Unities abgeben: Nur für Dig15
mal auf die schnelle (ungetestet) zusammengeklöppelt : (defun C:TESTUS(/ FNAME) (vl-load-com) (defun DT:ALIGN(AP1X AP1Y ZP1X ZP1Y AP2X AP2Y ZP2X ZP2Y / OBJ FUZZY) (setq FUZZY 1.0) (if(or(and (setq OBJ(ssget "_C" (list (- AP1X FUZZY)(- AP1Y FUZZY))(list (+ AP1X FUZZY)(+ AP1Y FUZZY)))) (setq OBJ(ssname OBJ 0)) ) (vla-zoomwindow (vlax-get-acad-object) (vlax-3d-point (list (- AP1X 100) (- AP1Y 100))) (vlax-3d-point (list (+ AP1X 100) (+ AP1Y 100))) ) (setq OBJ (car(entsel (strcat "\nOBJEKT wählen für ["(rtos AP1X 2 2)","(rtos AP1Y 2 2)"] : ")))) ) (command "_align" OBJ "" (list AP1X AP1Y 0)(list ZP1X ZP1Y 0)(list AP2X AP2Y 0)(list ZP2X ZP2Y 0)"" "_n") ) ) (defun DT:TEXTFILE->LST (DATEINAME / DATEI ZEILE BASE-LST ) (if (and(=(type DATEINAME) 'STR) (setq DATEINAME(findfile DATEINAME)) (setq DATEI (open DATEINAME "r")) ) (progn (while(=(type(setq ZEILE(read-line DATEI)))'STR) (setq BASE-LST (cons (vl-string-trim " " ZEILE) BASE-LST)) ) (setq DATEI(close DATEI)) BASE-LST ) ) ) (defun DT:STR-DIVS(STRING SEPARATOR / POS OFFSET LISTE) (if(and(=(type STRING) 'STR)(=(type SEPARATOR) 'STR)) (progn (setq POS (vl-string-search SEPARATOR STRING)) (setq OFFSET (1+(strlen SEPARATOR))) (while POS (setq LISTE (cons (substr STRING 1 POS) LISTE) STRING (substr string (+ POS OFFSET)) POS (vl-string-search SEPARATOR STRING) ) ) (reverse (cons STRING LISTE)) ) ) ) (if(and(setq FNAME(getfiled "KOORDS" "" "txt" 8)) (setq FNAME(findfile FNAME)) (setq L(DT:TEXTFILE->LST FNAME)) (setq L(mapcar '(lambda(X / Y)(mapcar 'distof (DT:STR-DIVS X ";")))L)) ) (mapcar '(lambda(X) (DT:ALIGN (nth 0 X)(nth 1 X) (nth 2 X)(nth 3 X) (nth 4 X)(nth 5 X) (nth 6 X)(nth 7 X) ) ) ) ) )
------------------ - 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 |
Dig15 Ehrenmitglied V.I.P. h.c. Dipl.-Ing. für Markscheidewesen und Geodäsie
Beiträge: 5833 Registriert: 27.02.2003 DWG TrueView 2014
|
erstellt am: 20. Sep. 2012 08:03 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen, bin jetzt gerade zum testen gekommen. Dateiauswahl klappt, dann kommt die Meldung: Code: Befehl: TESTUS ; Fehler: Zu wenig Argumente
Eine Idee? Mal zwei Zeilen aus der Transformationsdatei:
Code: 3670000,5880000 4468753.036,5877097.004 3680000,5880000 4478740.615,5876678.884 3630000,5870000 4428379.801,5868779.918 3640000,5870000 4438369.379,5868362.19
------------------ Viele Grüße Lutz Glück Auf! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 20. Sep. 2012 09:25 <-- editieren / zitieren --> Unities abgeben: Nur für Dig15
Das Ende ab Zeile (if(and(setq FNAME... mal auf deine Formatierung angepasst (extrem dirty / bis sich CADmium wieder meldet reichts) (if(and(setq FNAME(getfiled "KOORDS" "" "txt" 8)) (setq FNAME(findfile FNAME)) (setq L(DT:TEXTFILE->LST FNAME)) (setq L(mapcar '(lambda(X / Y)(mapcar 'distof (DT:STR-DIVS (repeat 4 (setq X (vl-string-subst " " "," X))) " "))) L)) ) (mapcar '(lambda(X) (DT:ALIGN (nth 0 X)(nth 1 X) (nth 2 X)(nth 3 X) (nth 4 X)(nth 5 X) (nth 6 X)(nth 7 X) ) ) L ) ) ) ------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 20. Sep. 2012 09:35 <-- editieren / zitieren --> Unities abgeben: Nur für Dig15
|
Dig15 Ehrenmitglied V.I.P. h.c. Dipl.-Ing. für Markscheidewesen und Geodäsie
Beiträge: 5833 Registriert: 27.02.2003 DWG TrueView 2014
|
erstellt am: 20. Sep. 2012 10:25 <-- editieren / zitieren --> Unities abgeben:
|