Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Xref Suchpfad umstellen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Xref Suchpfad umstellen (1492 / mal gelesen)
cadplayer
Ehrenmitglied
CADniker


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 09. Mai. 2018 13:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich mache die überlegung eine kleine Anwendung zu schreiben, die Dateisuchpfade umstellt von den gewählten Zeichnungen mit beinhalteten xreferenzen.

Mit Lisp hatte ich mal kurz getestet und festgestellt, dass es mitweilen sehr viel Zeit in Anspruch nimmmt.

Code:
(vl-load-com)
  (setq xr (vla-Get-Blocks (vla-Get-ActiveDocument (vlax-Get-Acad-Object))))
  (vlax-for n xr
    (if (= (vla-Get-IsXref n) :vlax-True)
      (progn
(if (findfile (vla-Get-Path n))
  (progn
    (protocol (strcat (vla-Get-Path n) "\\" (vla-Get-Name n) ": File found."))

    ; change to relative path
    (command-s "-xref" "_t" (vla-Get-Name n) "_r")

    ; change to full path
    (command-s "-xref" "_t" (vla-Get-Name n) "_f")
    )


Mit .net hat allein das öffnen der Datei viel Zeit in Anspruch genommmen, hinzukommt dann eben noch die Änderung beispielsweise "Ändere Suchpfad relativ".

Die Frage, ist es jetzt lohnenswert eine .net-app zu programmieren, die vielleicht ein Bruchteil weniger Zeit braucht oder gibt es andere Alternativen ? Was ist eure Meinung ?

------------------
Gruss Dirk
Blog

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



Sehen Sie sich das Profil von Bernd P an!   Senden Sie eine Private Message an Bernd P  Schreiben Sie einen Gästebucheintrag für Bernd P

Beiträge: 3358
Registriert: 07.06.2001

W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365

erstellt am: 09. Mai. 2018 13:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

servus, ich nehme an den referenzmanager kennst du.

------------------
<----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark  Bernd P.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Ehrenmitglied V.I.P. h.c.
良い精神



Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 09. Mai. 2018 15:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

Da möchte ich doch gerne an den letzten Thread erinnern welcher dann versickert ist..
Dort wurde der Kern der Sache ja bereits angeschnitten - aber du warst wenig empfänglich für diese Informationen.

Das Öffnen in einem Editor (acc/acad) wird immer mehr Zeit in Anspruch nehmen wie der direkte Zugriff auf die Datei.
In dem XREF-Fall gar doppelt da keine Grafikobjekte für die Blockdefinition der XRef importiert wird.


Nun zum zweiten Ding. Du verwendest in dem Beispiel einen AutoCAD-Befehl, benutzerfreundlich
wie dieser programmiert wurde wird bei Pfadänderung natürlich auch  gleich der Block neudefiniert,
also die Xref neu geladen.
Wenn es sich um einen Batchjob handelt ist dies jedoch überhaupt kein Wunsch von dir.
Also wäre hier die direkte Pfadänderung in der Datenbank schneller (wieder praktisch nicht messbar),
der Editor bekommt diese Änderung nicht mit und daher wird die XREF nicht neu geladen.

Welche Möglichkeiten man in .net hat kenne ich nicht, in purem Lisp müßte man sich eben eine
entsprechende Funktion zum bilden des Pfades schreiben, oder entsprechenden Code suchen.


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 09. Mai. 2018 15:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

Hallo Dirk,
es kommt doch nicht allein darauf an, mit welcher Sprache man eine Aufgabe erledigt, sondern auch darauf, wie man das in einer Sprache umsetzt.
Wenn du das, egal in welcher Sprache programmiert, mit Command... umsetzt, dann werden die Programme alle ähnlich langsam laufen.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadplayer
Ehrenmitglied
CADniker


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 09. Mai. 2018 16:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für eure Beiträge.

Generell bin ich sehr ermpfänglich, nicht wie Maria  ... sondern auf konstruktiver Basis.
Lese ich jedoch eine gewisse Voreingenommenheit, bleibt meine Reaktion auch gleichgiltig.

Zurück zum Thema.
Referenzmanager habe ich mir angeschaut, bietet jedoch nicht die Möglichkeit, alle Pfade mit einmaliger Wahl umzustellen, sondern muss manuell durchgearbeitet und entsprechende Plätze der Model-dateiten vorgegeben werden.

Wenn ich abwege, in welcher Sprache programmiert werden soll, dann ist klar wie setzt man es um in der jeweiligen ide. Im Punkt Effektivität stellt sich jedoch dann heraus, ob die Programmierung in 10 Zeilen oder 100 umgesetzt werden kann und gleich hinterher wie fehleranfällig und umsetzbar ist es zu bewerkstelligen ?!

Der Satz mit command hat wohl daneben gezielt. Ich will command-Anweisungen in .net gerne vermeiden, weil die meistens langsamer laufen.

Also nochmal die Frage: arbeitet eine script-Anweisung via batch-console schneller als eine .net-Anweisung ?
In beiden müssen in irgendeiner Form, Zeichnungen geöffnet, "umgekrämpelt" und gespeichert werden. Das ist zum grossen Teil auch abhängig vom Firmennetzwerk, kann aber .net von einer besseren Performance profitieren ?

Danke für eure Geduld im Voraus.

------------------
Gruss Dirk
Blog

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2014
Plateia, Canalis
Visual Basic

erstellt am: 09. Mai. 2018 19:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:

Zurück zum Thema.
Referenzmanager habe ich mir angeschaut, bietet jedoch nicht die Möglichkeit, alle Pfade mit einmaliger Wahl umzustellen, sondern muss manuell durchgearbeitet und entsprechende Plätze der Model-dateiten vorgegeben werden.


Kommt darauf an wie Deine Xref verteilt sind
Mit alle Xref markieren und dann "suchen und ersetzen" war ich immer recht schnell fertig

Grüße
Klaus 

PS: Gibt aber auch Lisp im INet, z.B. hier   

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 09. Mai. 2018 22:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

Hallo Dirk,
deine Frage scheint jetzt konkreter zu sein, als im Eröffnungspost.
Das Command... war keinesfalls daneben gezielt, sollte das doch verdeutlichen, dass nicht nur die Sprache, vielmehr auch der Weg, der mit der gewählten Sprache gegangen wird, von maßgeblicher Bedeutung für die Performance ist.

Die coreconsole kenne ich nicht (wirklich) und habe keine Erfahrung damit. Dass das öffnen ohne die Geometrie-Darstellung schneller geht, erklärt sich von selbst. Das kann man mit .Net  und Lisp auch im AutoCAD-Kontext tun.
Nun stellt sich also die Frage, wo kann noch Performance herausgeholt werden? In der Art der Programmierung.
Eine Zeichnung ist eine Datenbank. Performance bei der Bearbeitung erreicht man am ehesten, wenn alle Daten, auch die voneinander abhängigen, ändert und dann mit einer einzigen Schreibaktion in der Datenbank speichert.
Und genauen diesem Punkt unterscheiden sich die vielfachen Möglichkeiten der Programmierung für AutoCAD. Alle Befehle im Script und auch Lisp schreiben direkt in die Datenbank. Bei den VL-... geht das sogar noch über den zusätzlichen Umweg über ActiveX. Lediglich in .Net oder C gibt’s die Möglichkeit, die Änderungen im Speicher vorzunehmen und mit einer einzigen Schreibaktion zu beenden — dass aber auch nur dann, wenn man diesen Vorzug entsprechend auch im Programmaufbau und -Stil nutzt.
Es gibt also keine pauschale Aussage, ob was in welcher Sprache schneller geht. Theoretisch sollte allerdings .Net den von dir genannten Script oder Lisps überlegen sein.
Übrigens halte ich den Vergleich der Anzahl der Codezeilen als Effizienz-Kriterium nicht für richtig. Hier ist zu viel subjektives Wissen ausschlaggebend, wie viele Codezeilen am Ende in welcher Sprache gebraucht werden. Bezieht man in diese Betrachtung auch den in .Net zweifelsohne größeren Overhead mit ein, kommt zusätzlich das subjektive Wissen der Programmierumgebung hinzu.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadplayer
Ehrenmitglied
CADniker


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 10. Mai. 2018 10:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

@Klaus: ja die Referenzen liegen an unterschiedlichen Stellen, daher es ist zwar machbar mit dem RM aber halt nur durch manuelle Anweisung

@Holger: dem stimme ich überein, dass net gegenüber lisp eine bessere Performance bietet. Dummes Beispiel von mir, anhand von Anzahl Programmierzeilen zu sagen, ob etwas aufwendiger ist oder nicht. Ich bin ja noch relativ grün mit net und da stellt sich mir oft die Frage, lohnt es sich die Zeit zu investieren, wenn man nur ein Bruchteil der Zeit bei Ausführung der Automatisierung eingespart.

Wie ist deine Erfahrung in punkto Zeit beim Öffnen und Speichern von Zeichnungen. Wenn in net eine Zeichnung nur gelesen also nicht geöffnet werden soll, sollte das doch schneller gehen, gegenüber mit öffnen in GUI oder Console. Ich habe den Eindruck, dass dies ein minimaler Unterschied ist.

Hier eine kleine Vorführung wie mittels net Zeichnungen gelesen (Stempelblock info) und anschliessend bearbeitet und gespeichert werden. Die Demo zeigt aber den Fall, dass die Zeichnungen lokal liegen. Im Firmennetzwerk geht das ganze nicht so zackig.

[Diese Nachricht wurde von cadplayer am 10. Mai. 2018 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 10. Mai. 2018 17:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
... und da stellt sich mir oft die Frage, lohnt es sich die Zeit zu investieren, wenn man nur ein Bruchteil der Zeit bei Ausführung der Automatisierung eingespart.

Wie ist deine Erfahrung in punkto Zeit beim Öffnen und Speichern von Zeichnungen. Wenn in net eine Zeichnung nur gelesen also nicht geöffnet werden soll, sollte das doch schneller gehen, gegenüber mit öffnen in GUI oder Console. Ich habe den Eindruck, dass dies ein minimaler Unterschied ist.
....



Hallo Dirk,
ich habe mich irgendwann selbst gezwungen, alles in .Net zu machen, obwohl ich anfangs viele Stunden mehr brauchte, für etwas, was in Lisp in Minuten erledigt hätte werden können.
Warum? Ausschlaggebend war keinesfalls die Performance, sondern vielmehr die Stabilität, Fehlerabfang, die Gestaltung der GUIs, der Zugriff auf die Welt außerhalb vom AutoCAD. Die .Net-Entwicklungsumgebung, Visual Studio, ist zusätzlich noch sehr viel besser und beschleunigt die Produktentwicklung um ein vielfaches.
Da entsteht für mich Effizienz!

Es geht doch bei einer Massenbearbeitung in erster Linie darum, dass wirklich alle Zeichnungen bearbeitet wurden und die, bei denen das nicht möglich war, geloggt werden, damit diese dann manuell nachbearbeitet werden können. Ob das Programm dann 4 oder 6 Stunden brauch ist meinen Kunden ziemlich egal.
Mich selbst nteressiert es reichlich wenig, ob es in der Coreconsole schneller oder langsamer geht. Fakt ist, dass bei Scripts immer die Gefahr des Abbrechens besteht. Bei Lisp zwar ein Fehlerabfang soweit implementiert werden kann, dass ein Tool sauber zuende gebracht wird, die Fortsetzung des Programms selbst könnte man im Fehlerfall nur über große Umwege realisieren.
Vielleicht bin ich da zu hart in der Herangehensweise, da meine Programme beim Kunden laufen und nicht zur Eigennutzung entstehen.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadplayer
Ehrenmitglied
CADniker


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 12. Mai. 2018 10:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Das ist richtig, bei der Stapelbearbeitung von Zeichnungen ist die zu benötigende Zeit für den Prozess relativ unwichtig...
Das geht jetzt zwar am Thema vorbei, denn das Lesen und Speichern von Zeichnungen geht unabhängig welcher IDE man verwendet langsam. Klar, das ist generell nicht auf Autocad zurückzuführen, jedoch zu gewissen teilen, du hattest mir da schon einen guten Tip gegeben: Teigha API.

Warum ich gerne auf die AcConsole zurückgreife, ja klar, weil eine LispApp mit weniger Zeitaufwand entwurfen ist als mit net. Das hat aber auch mit meiner noch fehlenden Erfahrung zu tun. Der gänzliche übergang zu net fällt mir noch schwer, auch wenn die Vorteile gegenüber Lisp um ein Vielfaches sind.

Das Fazit in diesem Problemfall, Suchpfade umzustellen nach relativ, setzte ich mit Lisp um. Dabei lies ich mir ebenfalls eine Protokoll Datei ausgeben, die alle Abläufe dokumentiert und nachgelesen werden muss.

Danke für Eure Hilfe!

------------------
Gruss Dirk
Blog

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz