Using Microstation Connect 17 10.17.00.209 I am trying to activate a command table. The xml is declared as an embedded resource.
Program:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Bentley.Interop.MicroStationDGN; using Bentley.MstnPlatformNET.InteropServices; namespace csAddins { class CreateElement { public static void LineAndLineString(string unparsed) { Application app = Utilities.ComApp; Point3d startPnt = app.Point3dZero(); Point3d endPnt = startPnt; startPnt.X = 10; LineElement oLine = app.CreateLineElement2(null, ref startPnt, ref endPnt); oLine.Color = 0; oLine.LineWeight = 2; app.ActiveModelReference.AddElement(oLine); Point3d[] pntArray = new Point3d[5]; pntArray[0] = app.Point3dZero(); pntArray[1] = app.Point3dFromXY(1, 2); pntArray[2] = app.Point3dFromXY(3, -2); pntArray[3] = app.Point3dFromXY(5, 2); pntArray[4] = app.Point3dFromXY(6, 0); oLine = app.CreateLineElement1(null, ref pntArray); oLine.Color = 1; oLine.LineWeight = 2; app.ActiveModelReference.AddElement(oLine); } public static void ShapeAndComplexShape(string unparsed) { Application app = Utilities.ComApp; Point3d[] pntArray = new Point3d[6]; pntArray[0] = app.Point3dFromXY(0, -6); pntArray[1] = app.Point3dFromXY(0, -2); pntArray[2] = app.Point3dFromXY(2, -2); pntArray[3] = app.Point3dFromXY(2, -4); pntArray[4] = app.Point3dFromXY(4, -4); pntArray[5] = app.Point3dFromXY(4, -6); ShapeElement oShape = app.CreateShapeElement1(null, ref pntArray); oShape.Color = 0; oShape.LineWeight = 2; app.ActiveModelReference.AddElement(oShape); ChainableElement[] elmArray = new ChainableElement[2]; for (int i = 0; i < 6; i++) pntArray[i].X += 5; elmArray[0] = app.CreateLineElement1(null, ref pntArray); pntArray[2].Y = -8; elmArray[1] = app.CreateArcElement3(null, ref pntArray[5], ref pntArray[2], ref pntArray[0]); ComplexShapeElement oComplexShape = app.CreateComplexShapeElement1(ref elmArray); oComplexShape.Color = 1; oComplexShape.LineWeight = 2; app.ActiveModelReference.AddElement(oComplexShape); } public static void TextAndTextNode(string unparsed) { Application app = Utilities.ComApp; double savedTextHeight = app.ActiveSettings.TextStyle.Height; double savedTextWidth = app.ActiveSettings.TextStyle.Width; Font savedFont = app.ActiveSettings.TextStyle.Font; bool savedAnnotationScaleEnabled = app.ActiveSettings.AnnotationScaleEnabled; app.ActiveSettings.TextStyle.Height = 0.7; app.ActiveSettings.TextStyle.Width = 0.6; app.ActiveSettings.TextStyle.Font = app.ActiveDesignFile.Fonts.Find(MsdFontType.WindowsTrueType, "Arial"); app.ActiveSettings.AnnotationScaleEnabled = false; Point3d origin = app.Point3dFromXY(0, -7.5); Matrix3d rMatrix = app.Matrix3dIdentity(); TextElement oText = app.CreateTextElement1(null, "Text String", ref origin, ref rMatrix); oText.Color = 0; app.ActiveModelReference.AddElement(oText); origin = app.Point3dFromXY(2, -9); TextNodeElement oTN = app.CreateTextNodeElement1(null, ref origin, ref rMatrix); oTN.AddTextLine("Text Node Line 1"); oTN.AddTextLine("Text Node Line 2"); oTN.Color = 1; app.ActiveModelReference.AddElement(oTN); app.ActiveSettings.TextStyle.Height = savedTextHeight; app.ActiveSettings.TextStyle.Width = savedTextWidth; app.ActiveSettings.TextStyle.Font = savedFont; app.ActiveSettings.AnnotationScaleEnabled = savedAnnotationScaleEnabled; } public static void CellAndSharedCell(string unparsed) { Application app = Utilities.ComApp; app.AttachCellLibrary("sample2.cel"); Point3d origin = app.Point3dFromXY(1, -13); double xScale = 0.1 * app.ActiveModelReference.UORsPerMasterUnit / 1000.0; Point3d scale = app.Point3dFromXYZ(xScale, xScale, xScale); Matrix3d rMatrix = app.Matrix3dIdentity(); CellElement oCell = app.CreateCellElement2("DECID", ref origin, ref scale, true, ref rMatrix); oCell.Color = 0; app.ActiveModelReference.AddElement(oCell); SharedCellElement oSC; xScale = 0.02 * app.ActiveModelReference.UORsPerMasterUnit / 1000.0; scale = app.Point3dFromXYZ(xScale, xScale, xScale); for (int x = 4; x <= 8; x += 2) { origin = app.Point3dFromXY(x, -14); oSC = app.CreateSharedCellElement2("NORTH", ref origin, ref scale, true, ref rMatrix); oSC.OverridesComponentColor = true; oSC.Color = 1; app.ActiveModelReference.AddElement(oSC); } } public static void LinearAndAngularDimension(string unparsed) { Application app = Utilities.ComApp; DimensionStyle ds = app.ActiveSettings.DimensionStyle; ds.OverrideAnnotationScale = true; ds.AnnotationScale = 1; ds.OverrideTextHeight = true; ds.TextHeight = 0.5; ds.OverrideTextWidth = true; ds.TextWidth = 0.4; ds.MinLeader = 0.01; ds.TerminatorArrowhead = MsdDimTerminatorArrowhead.Filled; Matrix3d rMatrix = app.Matrix3dIdentity(); Point3d[] pnts = new Point3d[3]; pnts[0] = app.Point3dFromXY(0, -17); pnts[1] = app.Point3dFromXY(3, -17); DimensionElement oDim = app.CreateDimensionElement1(null, ref rMatrix, MsdDimType.SizeArrow); oDim.AddReferencePoint(app.ActiveModelReference, ref pnts[0]); oDim.AddReferencePoint(app.ActiveModelReference, ref pnts[1]); oDim.Color = 0; oDim.DimHeight = 1; app.ActiveModelReference.AddElement(oDim); ds.AnglePrecision = MsdDimValueAnglePrecision.DimValueAnglePrecision1Place; oDim = app.CreateDimensionElement1(null, ref rMatrix, MsdDimType.AngleSize); pnts[0] = app.Point3dFromXY(7, -13); pnts[1] = app.Point3dFromXY(5, -15); pnts[2] = app.Point3dFromXY(9, -15); oDim.AddReferencePoint(app.ActiveModelReference, ref pnts[0]); oDim.AddReferencePoint(app.ActiveModelReference, ref pnts[1]); oDim.AddReferencePoint(app.ActiveModelReference, ref pnts[2]); oDim.Color = 1; oDim.DimHeight = 1; app.ActiveModelReference.AddElement(oDim); } public static void CurveAndBsplineCurve(string unparsed) { Application app = Utilities.ComApp; Point3d[] pntArray = new Point3d[5]; pntArray[0] = app.Point3dFromXY(0, -19); pntArray[1] = app.Point3dFromXY(1, -17); pntArray[2] = app.Point3dFromXY(2, -19); pntArray[3] = app.Point3dFromXY(3, -17); pntArray[4] = app.Point3dFromXY(4, -19); CurveElement oCurve = app.CreateCurveElement1(null, ref pntArray); oCurve.Color = 0; oCurve.LineWeight = 2; app.ActiveModelReference.AddElement(oCurve); for (int i = 0; i < 5; i++) pntArray[i].X += 5; InterpolationCurve oInterpolationCurve = new InterpolationCurveClass(); oInterpolationCurve.SetFitPoints(pntArray); BsplineCurveElement oBsplineCurve = app.CreateBsplineCurveElement2(null, oInterpolationCurve); oBsplineCurve.Color = 1; oBsplineCurve.LineWeight = 2; app.ActiveModelReference.AddElement(oBsplineCurve); } public static void ConeAndBsplineSurface(string unparsed) { Application app = Utilities.ComApp; Point3d basePt = app.Point3dFromXYZ(2, -23, 0); Point3d topPt = app.Point3dFromXYZ(2, -20, 0); Matrix3d rMatrix = app.Matrix3dFromAxisAndRotationAngle(0, app.Pi() / 6); ConeElement oCone = app.CreateConeElement1(null, 2, ref basePt, 1, ref topPt, ref rMatrix); oCone.Color = 0; app.ActiveModelReference.AddElement(oCone); Point3d[] aFitPnts = new Point3d[4]; InterpolationCurve oFitCurve = new InterpolationCurveClass(); BsplineCurve[] aCurves = new BsplineCurve[3]; aFitPnts[0] = app.Point3dFromXYZ(5.9, -21, -0.5); aFitPnts[1] = app.Point3dFromXYZ(6.9, -20, 1); aFitPnts[2] = app.Point3dFromXYZ(7.9, -20.3, 1.3); aFitPnts[3] = app.Point3dFromXYZ(8.9, -20.8, 0.3); oFitCurve.SetFitPoints(ref aFitPnts); oFitCurve.BesselTangents = true; aCurves[0] = new BsplineCurveClass(); aCurves[0].FromInterpolationCurve(oFitCurve); aFitPnts[0] = app.Point3dFromXYZ(6.4, -22, 0); aFitPnts[1] = app.Point3dFromXYZ(7.1, -21.2, 0.7); aFitPnts[2] = app.Point3dFromXYZ(7.7, -21, 1); aFitPnts[3] = app.Point3dFromXYZ(8.4, -21.7, -0.2); oFitCurve.SetFitPoints(ref aFitPnts); oFitCurve.BesselTangents = true; aCurves[1] = new BsplineCurveClass(); aCurves[1].FromInterpolationCurve(oFitCurve); aFitPnts[0] = app.Point3dFromXYZ(5.9, -23, 0); aFitPnts[1] = app.Point3dFromXYZ(7.2, -23.1, 1.2); aFitPnts[2] = app.Point3dFromXYZ(7.8, -23.3, 0.8); aFitPnts[3] = app.Point3dFromXYZ(8.7, -22.8, 0.2); oFitCurve.SetFitPoints(ref aFitPnts); oFitCurve.BesselTangents = true; aCurves[2] = new BsplineCurveClass(); aCurves[2].FromInterpolationCurve(oFitCurve); BsplineSurface oBsplineSurface = new BsplineSurfaceClass(); oBsplineSurface.FromCrossSections(ref aCurves, MsdBsplineSurfaceDirection.V, 4, true, true); BsplineSurfaceElement oSurfaceElm = app.CreateBsplineSurfaceElement1(null, oBsplineSurface); oSurfaceElm.Color = 1; app.ActiveModelReference.AddElement(oSurfaceElm); } } } The XML File: <?xml version="1.0" encoding="utf-8" ?> <KeyinTree xmlns="http://www.bentley.com/schemas/1.0/MicroStation/AddIn/KeyinTree.xsd"> <RootKeyinTable ID="root"> <Keyword SubtableRef="Commands" CommandClass="MacroCommand" CommandWord="TEXTMOD" > <Options Required="true"/> </Keyword> </RootKeyinTable> <SubKeyinTables> <KeyinTable ID="Commands"> <Keyword CommandWord="TRANSFORM"> </Keyword> <Keyword SubtableRef="CaseTarget" CommandWord="CASE"> <Options TryParse="true"/> </Keyword> </KeyinTable> <KeyinTable ID="CaseTarget"> <Keyword CommandWord="UPPER" > <Options Default="true"/> </Keyword> <Keyword CommandWord="LOWER" /> </KeyinTable> </SubKeyinTables> <KeyinHandlers> <KeyinHandler Keyin="TEXTMOD TRANSFORM" Function="TextMod.KeyinCommands.TransformText"/> <KeyinHandler Keyin="TEXTMOD CASE UPPER" Function="TextMod.KeyinCommands.ChangeToUpper"/> <KeyinHandler Keyin="TEXTMOD CASE LOWER" Function="TextMod.KeyinCommands.ChangeToLower"/> </KeyinHandlers> </KeyinTree> Please help.