Tuesday, 1 October 2013

Plotmodul API in Map

Vor einiger Zeit hatte ich geschaut, ob sich die ca. 400 TB2 Inselpläne in Map automatisiert neu erstellen lassen. In der Migration werden beim Inselplan z.B. Einfügepunkt und Drehung nach Map übernommen, nicht aber der eigentliche Plan und das Layout.

Zunächst muss man in Map ein neues Planlayout erstellen (siehe auch hier). Mit dem Layout kann man nun manuell den jeweiligen Inselplan erstellen. Einfacher geht es über die Map-API. Hier hat es mich aber einige Zeit gekostet. Schwierig war herauszufinden, wie letztlich der Plot über die API erzeugt wird - die API Dokumentation hat mir dort nicht geholfen  und es waren Rückfragen bei Autodesk erforderlich (ein Vorteil der Advanced Subscription - diese beinhaltet auch ADN Support). Die anderen Fragen im Zusammenhang mit dem Plot Modul liessen sich mit Hilfe der Dokumentation beantworten.







Um den Plot zu erzeugen verwende ich folgende Funktion:

private long createNewPlot

(IPlotTemplate template, 
 IPlotGroup plotgroup, 
 string plotname, 
 Autodesk.Map.IM.Graphic.Point plotUrsprung, 
 Scale scale, 
 int drehung, 
 FeatureList ftLPlangebiet, 
 Autodesk.Map.IM.Graphic.Point plotUrsprungUEKarte, 
 Scale UEKarteMassstab)
{
    //neuer Plot
    IPlot newPlot = template.Instantiate(plotname, plotgroup);
    //UEKarte erstellen
    //GetMap(1) - UEKartenplatzhalter hat DrawOrder = 1
    IPlotMap plotMapUEK = newPlot.GetMap(1);
    //neuen Einfügepunkt für Karte setzen
    plotMapUEK.ResetCapture(plotUrsprungUEKarte, 0, UEKarteMassstab);
    //neue Haupt-Karte im Plot

    IPlotMap plotMap = newPlot.MainMap;                                  
    //neuen Einfügepunkt für Karte setzen
    plotMap.ResetCapture(plotUrsprung, drehung, scale);
    //Puffereinstellungen für Inselkarte
    double[] dbBuffer = new double[2] { 50.0, 150.0 };   
    //Inselkarte erstellen
    plotMap.CreateIslandMap(ftLPlangebiet, dbBuffer);
    long lFidNeuerPlot = plotMap.Parent.Feature.FID;
    //FID des neuen Plots zurückgeben
    return lFidNeuerPlot;                 

}
Map 2013, SP2.

No comments:

Post a Comment