| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Xref nicht beachten bei Script (244 mal gelesen)
|
CeZet Mitglied
Beiträge: 95 Registriert: 28.08.2003 ADT 2004 / AutoCAD 2002
|
erstellt am: 21. Sep. 2004 11:15 <-- editieren / zitieren --> Unities abgeben:
Hi all Ist es möglich in einem Script mitzugeben, das es beim Plan öffnen die Xref (falls vorhanden) temporär entfernt, damit das Script sauber durchläuft? Anschliessend sollten allerdings die REferenzen wieder geladen werden. Viele Grüsse CeZet 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: 21. Sep. 2004 11:30 <-- editieren / zitieren --> Unities abgeben: Nur für CeZet
Vorschlag: Sag was du möchtest und dir wird gesagt wie man da vorgeht ! (jetzt hattest du dich ja bereits auf einen "eigenen" Weg festgelegt- aber evtl geht es auch anders !?) (was willst du tun, warum läuft es mit Xref nicht sauber usw..) ------------------ Bitte Systemdaten eintragen (siehe links unter dem Namen), wie & warum siehst du HIER Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stefan142 Mitglied
Beiträge: 20 Registriert: 01.12.2003 AutoCAD 2000 Express Tools
|
erstellt am: 21. Sep. 2004 11:36 <-- editieren / zitieren --> Unities abgeben: Nur für CeZet
|
CeZet Mitglied
Beiträge: 95 Registriert: 28.08.2003 ADT 2004 / AutoCAD 2002
|
erstellt am: 21. Sep. 2004 11:42 <-- editieren / zitieren --> Unities abgeben:
Ich möchte den "Burst"-Befehl auf alles im Plan ausführen per Script, allerdings bleibt es bei Xrefs hängen. Meine Idee war nun den Plan zu öffnen per Script, und die Referenzen zu entladen mit... -xref entfernen * ...und am Schluss wieder zu laden. Es kommt aber trotzdem die Meldung: Das Objekt ist eine externe Referenz. Keine gefunden. Gibt es womöglich noch die Chance dem Burstbefehl mitzuteilen das nur Attribute gesucht werden sollen fürs auflösen?
Grüsse CeZet 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: 21. Sep. 2004 11:47 <-- editieren / zitieren --> Unities abgeben: Nur für CeZet
(ssget "X" '((0 . "INSERT")(66 . 1))) wählt alle Referenzen die Attribute haben... (Also nicht : ALLES AUSSER XREF, sondern Blockreferenzen MIT ATTRIBUT) hilft das ?
------------------ Bitte Systemdaten eintragen (siehe links unter dem Namen), wie & warum siehst du HIER Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CeZet Mitglied
Beiträge: 95 Registriert: 28.08.2003 ADT 2004 / AutoCAD 2002
|
erstellt am: 21. Sep. 2004 13:15 <-- editieren / zitieren --> Unities abgeben:
Danke CADFFM, aber ich komme damit nicht weiter. Ich habe keine Ahnung wie ich den Burst-Befehl anpassen muss (darf man meines Wissens auch nicht), und im Script nützt mir die LSP-Auswahl nichts denke ich. Grüsse 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: 21. Sep. 2004 13:19 <-- editieren / zitieren --> Unities abgeben: Nur für CeZet
Habe gerade die vielen Posting´s mit dir gelesen (Lisp/Script/burst etc.) denke auch das es keinen Sinn macht in die Richtung weiter zu testen. [hatte vorher nicht daran gedacht das dies Thema ja schon "da war"] ------------------ Bitte Systemdaten eintragen (siehe links unter dem Namen), wie & warum siehst du HIER Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CeZet Mitglied
Beiträge: 95 Registriert: 28.08.2003 ADT 2004 / AutoCAD 2002
|
erstellt am: 21. Sep. 2004 13:50 <-- editieren / zitieren --> Unities abgeben:
|
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 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: 21. Sep. 2004 14:36 <-- editieren / zitieren --> Unities abgeben: Nur für CeZet
Hi, versuch mal folgende Funktion in Deinem Script einzubinden: Code:
(defun ONLY-REAL-INSERTS (/ BLOCKLST SGET) (if (setq BLOCKLST (AI_TABLE "Block" (+ 2 4 8))) (if (setq SGET (ssget "X" (list (cons 0 "INSERT") (cons 2 (MS_STRDELIMITED BLOCKLST ",")) (cons 410 (getvar "ctab")) ) ;_ end of list ) ;_ end of ssget ) ;_ end of setq (sssetfirst SGET SGET) ) ;_ end of if ) ;_ end of if ) ;_ end of defun(defun MS_STRDELIMITED (LST TOKEN /) (vl-string-right-trim TOKEN (apply 'strcat (mapcar '(lambda (X) (strcat X TOKEN)) LST) ) ;_ end of apply ) ;_ end of vl-string-right-trim ) ;_ end of defun
Funktionsaufruf (ONLY-REAL-INSERTS) erzeugt 'n Auswahlsatz von Inserts die keine Xrefs sind. Je nach Anwendung von "Burst" mußt Du eventuell die Zeile "(sssetfirst SGET SGET)" im Lisp auskommentieren.
------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 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: 21. Sep. 2004 15:18 <-- editieren / zitieren --> Unities abgeben: Nur für CeZet
Hi, hm ich sehe schon, Dein Prob ist nicht das Script sondern Burst. Es läßt sich nicht in 'nem Script verwenden, da es über ein eigenes ssget verfügt... Hm, da könntest Du dann folgendes machen, kopiere folgenden Code in eine Datei burst2.lsp, das Ding kannst Du auch in 'nem Script aufrufen: burst2. Edit: OK, den Code darf ich natürlich nicht veröffentlichen :-). Also, kopiere Deine burst.lsp in eine Datei burst2.lsp und verändere folgende Zeilen:
Code:
(Defun C:BURST in (Defun C:BURST2
.. Code:
(Setq SS1 (SsGet (list (cons 0 "INSERT")(cons 67 PSFLAG)))) in ;_ (Setq SS1 (SsGet (list (cons 0 "INSERT")(cons 67 PSFLAG)))) (setq BLOCKLST (AI_TABLE "Block" (+ 2 4 8))) (setq SS1 (ssget "X" (list (cons 0 "INSERT") (cons 2 (vl-string-right-trim "," (apply 'strcat (mapcar '(lambda (X) (strcat X ",")) BLOCKLST) ) ;_ end of apply ) ;_ end of vl-string-right-trim ) ;_ end of cons (cons 67 PSFLAG) ) ;_ end of list ) ;_ end of ssget ) ;_ end of setq
... Ach so, von MIR hast Du das nicht :grins ------------------ Ciao, Marc [Diese Nachricht wurde von marc.scherer am 21. Sep. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |