Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  eNoMatchingMedia beim Plotten in eine Datei

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:  eNoMatchingMedia beim Plotten in eine Datei (2011 mal gelesen)
mOfl
Mitglied



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

Beiträge: 22
Registriert: 25.09.2010

erstellt am: 24. Nov. 2010 16:38    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

Hallo,

ich versuche, den aktuellen Ausschnitt eines Layouts über eine eigene Methode zu plotten:

Code:
private void plot(string filename) {
setPaperSpace();

Application.SetSystemVariable("BACKGROUNDPLOT", 0);

try {
using (Transaction tr = AcadDB.TransactionManager.StartTransaction()) {
try {
LayoutManager layMgr = LayoutManager.Current;
ObjectId loObjId = layMgr.GetLayoutId(layMgr.CurrentLayout);
Layout lo = (Layout) tr.GetObject(loObjId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead);

PlotSettings ps = new PlotSettings(lo.ModelType);
ps.CopyFrom(lo);

PlotInfo pi = new PlotInfo();
pi.Layout = loObjId;
pi.OverrideSettings = ps;

PlotEngine pe = PlotFactory.CreatePublishEngine();
pe.BeginPlot(null, null);

PlotInfoValidator validator = new PlotInfoValidator();
validator.MediaMatchingPolicy = Autodesk.AutoCAD.PlottingServices.MatchingPolicy.MatchEnabled;
validator.Validate(pi);

pe.BeginDocument(pi, Application.DocumentManager.MdiActiveDocument.Database.Filename, null, 1, true, filename);

PlotPageInfo pageInfo = new PlotPageInfo();

pe.BeginPage(pageInfo, pi, true, null);
pe.BeginGenerateGraphics(null);
pe.EndGenerateGraphics(null);
pe.EndPage(null);
pe.EndDocument(null);
pe.EndPlot(null);

pe.Destroy();
tr.Commit();
}
catch (System.Exception ex) {
AcadEditor.WriteMessage(ex.Message);
}
}
}
catch (System.Exception ex2) {
AcadEditor.WriteMessage("Fehler: " + ex2.Message);
}
}


Das funktioniert auf meinem Rechner ohne Probleme. Auf zwei anderen Rechnern, auf denen die Methode eingesetzt wird, gibt es aber eine Exception mit der Ausgabe "eNoMatchingMedia", irgendwo in den Zeilen

Code:
pe.BeginPlot(null, null);

PlotInfoValidator validator = new PlotInfoValidator();
validator.MediaMatchingPolicy = Autodesk.AutoCAD.PlottingServices.MatchingPolicy.MatchEnabled;
validator.Validate(pi);


Irgendwo deshalb, weil ich noch knapp einen Monat außer Landes bin und das nicht selbst überprüfen kann mit entsprechenden Debug-Ausgaben. Das Googlen der Fehlermeldung hat mich auch nicht weiter gebracht (einziger Treffer:  http://forums.autodesk.com/t5/Autodesk-ObjectARX/Plot-to-file-eNoMatchingMedia-error/td-p/1678577 ), außer dass ich vermute, dass die Exception in der Zeile

Code:
validator.Validate(pi);

auftritt. Wie der Mensch aus jenem Thread das Problem gelöst hat, verstehe ich nicht. Da in dem Thread von DevideOverride die Rede ist, habe ich mal versucht, etwas wie

Code:
PlotConfig pc = new PlotConfig();
pc.CopyFrom(lo);
pi.DeviceOverride = pc;

vor der Validierung einzufügen, aber new PlotConfig() lässt sich so nicht benutzen. PlotConfigManager.CurrentConfig erzeugt eine Null-Pointer-Exception.

Wie gesagt, ich nutze den gleichen Code, die gleiche Datei und auch die gleiche AutoCAD-Version (Civil 3D 2010) wie die anderen Rechner. Auf den Rechnern, wo eNoMatchingMedia auftritt, sind zudem noch andere AutoCAD-Versionen installiert (2008 und noch frühere). Auf meinem Rechner, wo es funktioniert, sind zusätzlich die ganzen Sachen für die Entwicklung installiert, wie das ObjectARX SDK, aber daran sollte es ja wohl nicht liegen.

Ich wäre sehr froh, wenn mir einer helfen könnte!

Gruß
mOfl

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


Ex-Mitglied

erstellt am: 24. Nov. 2010 16:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

wirklich helfen kann ich nicht, den Code jetzt so zu adaptieren, dass dieser bei mir lauffähig wird, ist ein wenig üppig für meine Zeit jetzt.

Guck mal >>>diesen Thread<<< ... ein wenig drüber und drunter, da wird die Auswertung des Papierformats schon öfter angesprochen. Und die Fehlermeldung klingt sehr danach, dass ein Papierformat definiert ist, dass in der Seiteneinrichtung zwar eingestellt ist (weil in der DWG gespeichert), aber der Plotter oder zumindest das Papierformat nicht der Einstellung entspricht.

Für das Plotten verwende ich i.d.R. die Variante über COM (ist und bleibt leichter beherrschbar).

Zur exakten Bestimmung der Fehlerposition (die ja durchaus wichtig ist) steppe mal durch den Code durch, dann solltest Du auch zur genauen Fehlerzeile kommen, sonst tappst Du zum Teil im Dunklen. 

- alfred -

------------------
www.hollaus.at

mOfl
Mitglied



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

Beiträge: 22
Registriert: 25.09.2010

erstellt am: 24. Nov. 2010 18:12    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

Hallo alfred,

danke für die Antwort! Wie gesagt, da ich gerade im Ausland bin und auf meinem System alles funktioniert, kann ich den Fehler nicht exakt ermitteln, der nur bei den anderen Rechnern auftritt. Ich werde auf jeden Fall mal versuchen, das Papierformat extra zu definieren (momentan übernehme ich ja eigentlich alles aus dem aktuellen Layout lo).

Was meinst du mit Plotten über COM? Ich rufe die Methode plot() ja innerhalb eines CAD-Befehls einer Bibliothek auf, die ich über netload lade. Sind da COM-Befehle möglich/sinnvoll?

Gruß
mOfl

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


Ex-Mitglied

erstellt am: 24. Nov. 2010 18:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Was meinst du mit Plotten über COM?

nicht vollständig, aber >>>hier<<< ist die simple Version von Plotten über Nutzung der ActiveX/COM-Schnittstelle.


>> Ich werde auf jeden Fall mal versuchen, das Papierformat extra zu definieren

Ich vermute, Du kannst es reproduzieren, wenn Du Dir eine Zeichnung von wem senden lässt, dessen Layout auf einen Plotter verweist, den Dein System noch nicht kennt und dessen Papierformat ebenfalls Deinem System nicht bekannt ist.


>> kann ich den Fehler nicht exakt ermitteln

Wenn Du dem Anwender die DLL-DebugVersion (+ PDB und XML, die von VisualStudio generiert werden) zur Verfügung stellst, dann kannst Du bei der Exception mehr als nur die Message auslesen (bis hin zur genauen Zeilennummer in Deinem SourceCode), das hilft!

Jedenfalls viel Erfolg, - alfred -

------------------
www.hollaus.at

mOfl
Mitglied



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

Beiträge: 22
Registriert: 25.09.2010

erstellt am: 11. Dez. 2010 19:31    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

Zitat:
Original erstellt von a.n.:
Ich vermute, Du kannst es reproduzieren, wenn Du Dir eine Zeichnung von wem senden lässt, dessen Layout auf einen Plotter verweist, den Dein System noch nicht kennt und dessen Papierformat ebenfalls Deinem System nicht bekannt ist.

Hallo alfred,

vielen Dank für deine Hilfe! Das war in der Tat das Problem. Wird das Papierformat neu auf dem Zielsystem eingerichtet, funktioniert alles.

Gruß
mOfl

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