// 创建 Visio 应用程序对象 Visio.Application visApp = new Visio.Application(); // 打开 Visio 文档 Visio.Document doc = visApp.Documents.Open("D:\\02 Work\\00 Chaos\\05 Auto_LTT_Drawing\\Test\\example.vsdx"); // 获取页面对象 Visio.Page page = doc.Pages[1]; // 获取一个矩形形状 //Visio.Shape rect = page.DrawRectangle(1, 1, 2, 2); // 设置矩形的颜色为红色 //rect.CellsU["FillForegnd"].FormulaU = "RGB(255,0,0)"; // 获取有名称的Shapes集合 Visio.Shapes namedShapes = page.Shapes.ItemNamed["My Stencil Library - peng"]; // 获取Shapes集合中的第二个图形 Visio.Shape visioShape = namedShapes[2]; // 将图形移动到(5, 5)的位置上 visioShape.CellsU["PinX"].FormulaU = "5 mm"; visioShape.CellsU["PinY"].FormulaU = "5 mm"; // 保存文档 //doc.Save(); // 关闭应用程序 //visApp.Quit(); 其中ItemNamed有下波浪线报错
时间: 2024-02-14 18:03:57 浏览: 157
根据您提供的代码,如果在使用`ItemNamed`属性时出现下波浪线报错,可能是因为没有正确引用Visio对象库。
请尝试在项目中添加对Visio类型库的引用,方法如下:
1. 在 Visual Studio 中,打开您的项目。
2. 在“解决方案资源管理器”中,右键单击“引用”并选择“添加引用”。
3. 在“添加引用”对话框中,选择“COM”选项卡。
4. 找到并选中“Microsoft Office Visio 16.0 Type Library”(或与您安装的Visio版本相对应的版本),然后单击“确定”按钮。
5. 重新编译您的项目并运行代码。
如果仍然存在问题,请尝试使用`Shapes.ItemU`属性来获取形状。例如,您可以使用以下代码:
```
Visio.Shapes namedShapes = page.Shapes.ItemU["My Stencil Library - peng"];
```
希望这可以帮助您解决问题。
相关问题
// 创建一个新的Visio文档 Visio.Application visioApp = new Visio.Application(); Visio.Document doc = visioApp.Documents.Open("D:\\02 Work\\00 Chaos\\05 Auto_LTT_Drawing\\Test\\example.vsdx"); // 获取Stencil中的模型 Visio.Documents stnDocs = visioApp.Documents; Visio.Document stnDoc = stnDocs.OpenEx("Stencil1.vssx", (short)Visio.VisOpenSaveArgs.visOpenDocked); // 获取其中名字为Master.5的封装 Visio.Masters masters = stnDoc.Masters; Visio.Master master = masters.get_ItemU("Master.5"); // 在页面上放置Master Visio.Page page = doc.Pages.ItemU[1]; Visio.Shape shape = page.Drop(master, 5, 1);此代码如何新增一页page
要新增一页page,可以使用以下代码:
```
// 获取文档中的所有页面
Visio.Pages pages = doc.Pages;
// 在文档中添加一个新页面
Visio.Page newPage = pages.Add();
```
这样就能在当前文档中新增一页page了。如果需要在特定位置添加页面,可以在 `Add` 方法中传入索引参数,例如 `pages.Add(2)` 将在第二个位置添加一个新页面。
在 Visio.Shape shape = shapes.get_ItemFromID(3);此处报错Invalid sheet identifier.'
如果报错"Invalid sheet identifier",那么可能是因为你的Shapes集合中没有ID为3的图形。请确认一下Shapes集合中是否有ID为3的图形,如果没有,请根据实际情况修改代码中的图形ID。
如果你不确定Shapes集合中的图形ID是多少,可以尝试使用Shapes集合中的其他属性,例如Name或Index来获取指定的图形。下面是一个示例代码:
```csharp
using Visio = Microsoft.Office.Interop.Visio;
Visio.Application visioApp = new Visio.Application();
visioApp.Visible = true;
Visio.Document doc = visioApp.Documents.Add("");
Visio.Page page = doc.Pages[1];
Visio.Shapes shapes = page.Shapes;
Visio.Shape shape = shapes["Rectangle.1"];
shape.CellsU["PinX"].FormulaU = "5";
shape.CellsU["PinY"].FormulaU = "5";
```
上述代码中,我们使用Shapes集合的Name属性来获取名称为"Rectangle.1"的图形,并将其放置在指定的坐标点(5,5)。
需要注意的是,Shapes集合中的图形名称和索引都是可以在Visio中编辑的,所以需要根据实际情况来选择合适的方法来获取指定的图形。
阅读全文