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