Forum:Lisp
Thema:DBX - XREF-Pfadnamen ändern??
Möchten Sie sich registrieren?
Wer darf antworten? Registrierte Benutzer können Beiträge verfassen.
Hinweise zur Registrierung Sie müssen registriert sein, um Beiträge oder Antworten auf Beiträge schreiben zu können.
Ihr Benutzername:
Ihr Kennwort:   Kennwort vergessen?
Anhang:    Datei(en) anhängen  <?>   Anhänge verwalten  <?>
Grafik für den Beitrag:                                                
                                                       
Ihre Antwort:

Fachbegriff
URL
Email
Fett
Kursiv
Durchgestr.
Liste
*
Bild
Zitat
Code

*HTML ist AUS
*UBB-Code ist AN
Smilies Legende
Netiquette

10 20 40

Optionen Smilies in diesem Beitrag deaktivieren.
Signatur anfügen: die Sie bei den Voreinstellungen angegeben haben.

Wenn Sie bereits registriert sind, aber Ihr Kennwort vergessen haben, klicken Sie bitte hier.

Bitte drücken Sie nicht mehrfach auf "Antwort speichern".

*Ist HTML- und/oder UBB-Code aktiviert, dann können Sie HTML und/oder UBB Code in Ihrem Beitrag verwenden.

T H E M A     A N S E H E N
joern bosse

Beiträge: 1680 / 6

Window 8.1
ACAD 2012-2020
CIVIL 2012 - 2020
BricsCAD V14-V20
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050

Hallo,
folgende Situation:
zur Zeit habe ich ein Programm, welches mir z.B. für Datei A.dwg einen Index vergibt => A_1.dwg
Wenn in der Datei A XREF's enthalten sind, dann sollen diese entsprechend dieses Index's ebenfalls umbenannt werden und in der Datei A_1.dwg muss der XREF-Pfad geändert werden.

Zur Zeit läuft das über einen Scriptbetrieb, d.h., ich habe eine beliebiege Zeichnung geöffnet, dann wird im Scriptbetrieb die umbenannte Datei A_1.dwg geöffnet. Innerhalb der Datei A_1.dwg kann ich dann über SSGET die XREF-Blöcke auswählen und über VLA-PUT-PATH den aktuellen Pfad ändern.

Weil der Scriptbetrieb in ACAD 2010 aber ein wenig hakelt möchte ich mich an einer anderen Variante versuchen, und zwar über die DBX-Objekte.

D.h., ich öffne die DWG-Datei als DBX-Objekt, und dann verlassen sie mich:
Wie komme ich an die enthaltenen XREF-Blöcke heran???
Kann mir da mal einer ein Beispiel machen? (Selbst wenn nur von einer vorhandenen Linie die Farbe geändert wird oder so, anhand dessen komme ich bestimmt weiter)

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

CADmium

Beiträge: 13458 / 249

.

du scanst die Blocktabelle und checkts auf xref

(vlax-for BLOCK (vla-get-blocks DOCUMENT)
  (if (=(vla-get-isxref BLOCK):vlax-true)
    ;; .... z.B.
    (vlax-dump-object BLOCK)
  )
)

------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

joern bosse

Beiträge: 1680 / 6

Window 8.1
ACAD 2012-2020
CIVIL 2012 - 2020
BricsCAD V14-V20
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050

Hallo CADmium,
super, hat funktioniert

Was ich jetzt aber immer noch nicht weiß, wie ich z.B. eine Linie im geöffneten DBX-Objekt ändern kann.
Wie wähle ich diese aus (vorausgesetzt ich habe genug Filterkriterien für die Auswahl, denn die Benutzerauswahl kann ich ja nicht verwenden). Geht das???

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

CADmium

Beiträge: 13458 / 249

.

ja .... jedes Geometrieobjekt liegt ja in einem Blockcontainer

also

(vlax-for ITEM (vla-item (vla-get-blocks DOCUMENT) "BLOCKNAME")
  ;...
  (vlax-dump-object ITEM)
)

oder
(vlax-for ITEM
  (vla-get-block (vla-item (vla-get-layouts DOCUMENT) "LAYOUTNAME"))
  ...
)

------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

joern bosse

Beiträge: 1680 / 6

Window 8.1
ACAD 2012-2020
CIVIL 2012 - 2020
BricsCAD V14-V20
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050

Danke Thomas, ich glaube so langsam komme ich dahinter:

(vlax-for ITEM (vla-item
                (vla-get-blocks
                  (vlax-get-property
                    (vlax-get-acad-object)
                    "ActiveDocument"))
                "*Model_Space")
  (if(=(vla-get-objectname ITEM)
      "AcDbLine")
    (alert "Linie, kann geändert werden."))
  )
Und das natürlich dann bezogen auf das DBX-Objekt.

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

CADmium

Beiträge: 13458 / 249

.

jo .. das ist das Prinzip .... hab leider momentan kein acad offen , deshalb nur die Schnipsel ..

------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."